diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,86 @@
 
 ---
 
+## [0.18.0] - 2026-09-29
+
+Module-naming systematization release: every kernel and package module moves onto a uniform
+`hydra.core.*` / `hydra.<pkg>.*` grammar, completing the package ⊃ module ⊃ definition containment
+tower. The rename touches every module, definition, and cross-host reference in the codebase; this
+release exists primarily to ship it as its own coordinated batch. Also lands the translingual regex
+primitive pipeline and several silent-correctness fixes in the coder layer.
+
+### Highlights
+
+- **Module-name grammar systematization** ([#729](https://github.com/CategoricalData/hydra/issues/729)):
+  every `hydra.*` module renamed onto a uniform package-derived prefix — kernel modules move to
+  `hydra.core.*`, package modules to `hydra.<pkg>.*` — closing the long-standing inconsistency where
+  a package name had no structural relationship to the module names it contained. The rename spans
+  every host (Haskell, Java, Python, Scala, TypeScript, all four Lisp dialects) and required fixing
+  stale namespace references, overlay-directory paths, and `hostOverrides` shims across every driver
+  and bootstrap script that had hardcoded the old grammar. Further consolidation (a structurally
+  enforced package↔prefix law) is tracked for 0.18.1. The kernel package itself is still published as
+  `hydra-kernel` (its modules are under `hydra.core.*`); the `hydra-core` package rename #729 called for
+  is under review because that name is taken on PyPI and npm
+  ([#770](https://github.com/CategoricalData/hydra/issues/770)).
+- **Translingual regex primitives** ([#603](https://github.com/CategoricalData/hydra/issues/603)):
+  `hydra.lib.regex` primitives (`find`, `findAll`, `matches`, `replace`, `replaceAll`, `split`) now run
+  every pattern through the shared `hydra.regex` parse/print pipeline instead of handing raw pattern
+  strings to each host's native engine, so a pattern means the same thing on every host. Includes a
+  host-independent conformance suite and a leftmost-longest alternation fix in the PCRE/POSIX printers.
+- **Silent-corruption fixes across the coder layer**
+  ([#744](https://github.com/CategoricalData/hydra/issues/744),
+  [#765](https://github.com/CategoricalData/hydra/issues/765),
+  [#649](https://github.com/CategoricalData/hydra/issues/649)): fixed data-corrupting bugs in the
+  JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders (extended integer widths, map-key handling), the
+  kernel's encode/decode generators (reversed type-parameter order on 2+-param polymorphic types), and
+  the Python coder (silently dropping a module's types when types and terms share a file path).
+- **Self-hosted specification docs** ([#723](https://github.com/CategoricalData/hydra/issues/723)):
+  the module-reference pages under `docs/specification/` are now generated directly from the kernel
+  (`bin/regenerate-spec.sh`) via a new metadata-only doc coder, rather than hand-maintained.
+
+### New features
+
+- **[#603](https://github.com/CategoricalData/hydra/issues/603)** host-independent regex conformance
+  suite covering the minimal-core grammar (literals, classes, quantifiers, alternation, anchors,
+  grouping) across all 9 hosts.
+- **[#723](https://github.com/CategoricalData/hydra/issues/723)** `hydra.markdown` type module and
+  `generateModuleDoc`, the metadata-only doc coder backing the self-generated spec pages.
+- **[#382](https://github.com/CategoricalData/hydra/issues/382)** the Rust coder is split out of
+  `hydra-ext` into its own first-class `hydra-rust` package.
+
+### Bug fixes
+
+- **[#744](https://github.com/CategoricalData/hydra/issues/744)** silent data corruption in
+  JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders for extended integer widths and map-key handling.
+- **[#765](https://github.com/CategoricalData/hydra/issues/765)** kernel encode/decode generators
+  emitted reversed type-parameter order for 2+-param polymorphic types.
+- **[#649](https://github.com/CategoricalData/hydra/issues/649)** Python coder silently dropped a
+  module's types when types and terms targeted the same output file path.
+- **[#572](https://github.com/CategoricalData/hydra/issues/572)** TypeScript kernel-JSON test
+  bridge's compact-form decode heuristic mishandled nullary union arms.
+- **[#761](https://github.com/CategoricalData/hydra/issues/761)** cold-seed generation ignored
+  `hostOverrides.java=local`, silently pulling the published Java host jar instead.
+- **[#736](https://github.com/CategoricalData/hydra/issues/736)** Java build now pins JDK 11 via a
+  Gradle toolchain block, instead of depending on ambient `JAVA_HOME`.
+
+### Improvements
+
+- **[#327](https://github.com/CategoricalData/hydra/issues/327)** new `hydra.diff` schema-diff type
+  module; `Term.Inject` comparison is now by variant name.
+- **[#573](https://github.com/CategoricalData/hydra/issues/573)** per-registry publish sets (Hackage,
+  Maven, PyPI, npm) are now derived from the package registry itself instead of 13 hand-maintained
+  lists — closes a recurring class of silent release-time drift.
+- **[#735](https://github.com/CategoricalData/hydra/issues/735)** cross-host decimal-scale test
+  filtering now driven by a translingual `scaleDistinct` capability tag instead of hand-copied
+  per-host skip lists.
+
+### Documentation
+
+- **[#655](https://github.com/CategoricalData/hydra/issues/655)** documented the overlay-emission
+  "implementation wins" decision for bare primitive references (`docs/overlays.md`).
+
+---
+
 ## [0.17.7] - 2026-09-14
 
 Correctness-hardening point release on the 0.17.x line, consolidating the 0.17.6 breaking batch. It
diff --git a/hydra-scala.cabal b/hydra-scala.cabal
--- a/hydra-scala.cabal
+++ b/hydra-scala.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           hydra-scala
-version:        0.17.7
+version:        0.18.0
 synopsis:       Hydra's Scala coder: emit Scala source from Hydra modules
 description:    Hydra is an implementation of the LambdaGraph data model, which takes advantage of an isomorphism between labeled hypergraphs and typed lambda calculus: in Hydra, "graphs are programs, and programs are graphs". Scala support for Hydra
 category:       Data
@@ -27,8 +27,8 @@
 
 library
   exposed-modules:
-      Hydra.Dsl.Scala.Syntax
       Hydra.Scala.Coder
+      Hydra.Scala.Dsl.Syntax
       Hydra.Scala.Language
       Hydra.Scala.Serde
       Hydra.Scala.Syntax
@@ -40,7 +40,7 @@
   build-depends:
       base >=4.19.0 && <4.22
     , containers >=0.6.7 && <0.8
-    , hydra-jvm ==0.17.7
-    , hydra-kernel ==0.17.7
+    , hydra-jvm ==0.18.0
+    , hydra-kernel ==0.18.0
     , scientific >=0.3.7 && <0.4
   default-language: Haskell2010
diff --git a/src/main/haskell/Hydra/Dsl/Scala/Syntax.hs b/src/main/haskell/Hydra/Dsl/Scala/Syntax.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Dsl/Scala/Syntax.hs
+++ /dev/null
@@ -1,11736 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | DSL functions for hydra.scala.syntax
-
-module Hydra.Dsl.Scala.Syntax where
-
-import qualified Hydra.Core as Core
-import qualified Hydra.Scala.Syntax as Syntax
-import qualified Hydra.Typed as Typed
-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
-import qualified Data.Scientific as Sci
-import Data.Void
-import qualified Data.Int as I
-
--- | DSL constructor for hydra.scala.syntax.AlternativePat
-alternativePat :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.AlternativePat
-alternativePat lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AlternativePat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the lhs field of hydra.scala.syntax.AlternativePat
-alternativePatLhs :: Typed.TypedTerm Syntax.AlternativePat -> Typed.TypedTerm Syntax.Pat
-alternativePatLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AlternativePat"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.AlternativePat
-alternativePatRhs :: Typed.TypedTerm Syntax.AlternativePat -> Typed.TypedTerm Syntax.Pat
-alternativePatRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AlternativePat"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.scala.syntax.AlternativePat
-alternativePatWithLhs :: Typed.TypedTerm Syntax.AlternativePat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.AlternativePat
-alternativePatWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AlternativePat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AlternativePat"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.AlternativePat
-alternativePatWithRhs :: Typed.TypedTerm Syntax.AlternativePat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.AlternativePat
-alternativePatWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AlternativePat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AlternativePat"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.AndType
-andType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AndType
-andType lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AndType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the lhs field of hydra.scala.syntax.AndType
-andTypeLhs :: Typed.TypedTerm Syntax.AndType -> Typed.TypedTerm Syntax.Type
-andTypeLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AndType"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.AndType
-andTypeRhs :: Typed.TypedTerm Syntax.AndType -> Typed.TypedTerm Syntax.Type
-andTypeRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AndType"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.scala.syntax.AndType
-andTypeWithLhs :: Typed.TypedTerm Syntax.AndType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AndType
-andTypeWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AndType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AndType"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.AndType
-andTypeWithRhs :: Typed.TypedTerm Syntax.AndType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AndType
-andTypeWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AndType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AndType"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.AnnotMod
-annotMod :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.AnnotMod
-annotMod init =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AnnotMod"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "init"),
-          Core.fieldTerm = (Typed.unTypedTerm init)}]}))
-
--- | DSL accessor for the init field of hydra.scala.syntax.AnnotMod
-annotModInit :: Typed.TypedTerm Syntax.AnnotMod -> Typed.TypedTerm Syntax.Init
-annotModInit x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AnnotMod"),
-        Core.projectionFieldName = (Core.Name "init")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the init field of hydra.scala.syntax.AnnotMod
-annotModWithInit :: Typed.TypedTerm Syntax.AnnotMod -> Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.AnnotMod
-annotModWithInit original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AnnotMod"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "init"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.AnnotateData
-annotateData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.AnnotMod] -> Typed.TypedTerm Syntax.AnnotateData
-annotateData expr annots =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AnnotateData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm expr)},
-        Core.Field {
-          Core.fieldName = (Core.Name "annots"),
-          Core.fieldTerm = (Typed.unTypedTerm annots)}]}))
-
--- | DSL accessor for the annots field of hydra.scala.syntax.AnnotateData
-annotateDataAnnots :: Typed.TypedTerm Syntax.AnnotateData -> Typed.TypedTerm [Syntax.AnnotMod]
-annotateDataAnnots x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AnnotateData"),
-        Core.projectionFieldName = (Core.Name "annots")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the expr field of hydra.scala.syntax.AnnotateData
-annotateDataExpr :: Typed.TypedTerm Syntax.AnnotateData -> Typed.TypedTerm Syntax.Data
-annotateDataExpr x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AnnotateData"),
-        Core.projectionFieldName = (Core.Name "expr")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the annots field of hydra.scala.syntax.AnnotateData
-annotateDataWithAnnots :: Typed.TypedTerm Syntax.AnnotateData -> Typed.TypedTerm [Syntax.AnnotMod] -> Typed.TypedTerm Syntax.AnnotateData
-annotateDataWithAnnots original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AnnotateData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AnnotateData"),
-              Core.projectionFieldName = (Core.Name "expr")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "annots"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the expr field of hydra.scala.syntax.AnnotateData
-annotateDataWithExpr :: Typed.TypedTerm Syntax.AnnotateData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.AnnotateData
-annotateDataWithExpr original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AnnotateData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "annots"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AnnotateData"),
-              Core.projectionFieldName = (Core.Name "annots")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.AnnotateType
-annotateType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm [Syntax.AnnotMod] -> Typed.TypedTerm Syntax.AnnotateType
-annotateType tpe annots =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AnnotateType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "annots"),
-          Core.fieldTerm = (Typed.unTypedTerm annots)}]}))
-
--- | DSL accessor for the annots field of hydra.scala.syntax.AnnotateType
-annotateTypeAnnots :: Typed.TypedTerm Syntax.AnnotateType -> Typed.TypedTerm [Syntax.AnnotMod]
-annotateTypeAnnots x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AnnotateType"),
-        Core.projectionFieldName = (Core.Name "annots")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.AnnotateType
-annotateTypeTpe :: Typed.TypedTerm Syntax.AnnotateType -> Typed.TypedTerm Syntax.Type
-annotateTypeTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AnnotateType"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the annots field of hydra.scala.syntax.AnnotateType
-annotateTypeWithAnnots :: Typed.TypedTerm Syntax.AnnotateType -> Typed.TypedTerm [Syntax.AnnotMod] -> Typed.TypedTerm Syntax.AnnotateType
-annotateTypeWithAnnots original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AnnotateType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AnnotateType"),
-              Core.projectionFieldName = (Core.Name "tpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "annots"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.AnnotateType
-annotateTypeWithTpe :: Typed.TypedTerm Syntax.AnnotateType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AnnotateType
-annotateTypeWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AnnotateType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "annots"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AnnotateType"),
-              Core.projectionFieldName = (Core.Name "annots")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.scala.syntax.AnonymousData wrapper
-anonymousData :: Typed.TypedTerm () -> Typed.TypedTerm Syntax.AnonymousData
-anonymousData x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.scala.syntax.AnonymousData"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for the hydra.scala.syntax.AnonymousNameType wrapper
-anonymousNameType :: Typed.TypedTerm () -> Typed.TypedTerm Syntax.AnonymousNameType
-anonymousNameType x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.scala.syntax.AnonymousNameType"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.scala.syntax.ApplyData
-applyData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyData
-applyData fun args =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "fun"),
-          Core.fieldTerm = (Typed.unTypedTerm fun)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm args)}]}))
-
--- | DSL accessor for the args field of hydra.scala.syntax.ApplyData
-applyDataArgs :: Typed.TypedTerm Syntax.ApplyData -> Typed.TypedTerm [Syntax.Data]
-applyDataArgs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyData"),
-        Core.projectionFieldName = (Core.Name "args")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the fun field of hydra.scala.syntax.ApplyData
-applyDataFun :: Typed.TypedTerm Syntax.ApplyData -> Typed.TypedTerm Syntax.Data
-applyDataFun x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyData"),
-        Core.projectionFieldName = (Core.Name "fun")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the args field of hydra.scala.syntax.ApplyData
-applyDataWithArgs :: Typed.TypedTerm Syntax.ApplyData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyData
-applyDataWithArgs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "fun"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyData"),
-              Core.projectionFieldName = (Core.Name "fun")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the fun field of hydra.scala.syntax.ApplyData
-applyDataWithFun :: Typed.TypedTerm Syntax.ApplyData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyData
-applyDataWithFun original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "fun"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyData"),
-              Core.projectionFieldName = (Core.Name "args")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ApplyInfixData
-applyInfixData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyInfixData
-applyInfixData lhs op targs args =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Typed.unTypedTerm op)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Typed.unTypedTerm targs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm args)}]}))
-
--- | DSL accessor for the args field of hydra.scala.syntax.ApplyInfixData
-applyInfixDataArgs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm [Syntax.Data]
-applyInfixDataArgs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-        Core.projectionFieldName = (Core.Name "args")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the lhs field of hydra.scala.syntax.ApplyInfixData
-applyInfixDataLhs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm Syntax.Data
-applyInfixDataLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the op field of hydra.scala.syntax.ApplyInfixData
-applyInfixDataOp :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm Syntax.NameData
-applyInfixDataOp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-        Core.projectionFieldName = (Core.Name "op")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the targs field of hydra.scala.syntax.ApplyInfixData
-applyInfixDataTargs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm [Syntax.Type]
-applyInfixDataTargs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-        Core.projectionFieldName = (Core.Name "targs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the args field of hydra.scala.syntax.ApplyInfixData
-applyInfixDataWithArgs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyInfixData
-applyInfixDataWithArgs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "op")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "targs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the lhs field of hydra.scala.syntax.ApplyInfixData
-applyInfixDataWithLhs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyInfixData
-applyInfixDataWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "op")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "targs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "args")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the op field of hydra.scala.syntax.ApplyInfixData
-applyInfixDataWithOp :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ApplyInfixData
-applyInfixDataWithOp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "targs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "args")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the targs field of hydra.scala.syntax.ApplyInfixData
-applyInfixDataWithTargs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ApplyInfixData
-applyInfixDataWithTargs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "op")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixData"),
-              Core.projectionFieldName = (Core.Name "args")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ApplyInfixType
-applyInfixType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplyInfixType
-applyInfixType lhs op rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Typed.unTypedTerm op)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the lhs field of hydra.scala.syntax.ApplyInfixType
-applyInfixTypeLhs :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.Type
-applyInfixTypeLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the op field of hydra.scala.syntax.ApplyInfixType
-applyInfixTypeOp :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.NameType
-applyInfixTypeOp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-        Core.projectionFieldName = (Core.Name "op")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.ApplyInfixType
-applyInfixTypeRhs :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.Type
-applyInfixTypeRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.scala.syntax.ApplyInfixType
-applyInfixTypeWithLhs :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplyInfixType
-applyInfixTypeWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-              Core.projectionFieldName = (Core.Name "op")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the op field of hydra.scala.syntax.ApplyInfixType
-applyInfixTypeWithOp :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.ApplyInfixType
-applyInfixTypeWithOp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.ApplyInfixType
-applyInfixTypeWithRhs :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplyInfixType
-applyInfixTypeWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyInfixType"),
-              Core.projectionFieldName = (Core.Name "op")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ApplyType
-applyType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ApplyType
-applyType tpe args =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm args)}]}))
-
--- | DSL accessor for the args field of hydra.scala.syntax.ApplyType
-applyTypeArgs :: Typed.TypedTerm Syntax.ApplyType -> Typed.TypedTerm [Syntax.Type]
-applyTypeArgs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyType"),
-        Core.projectionFieldName = (Core.Name "args")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.scala.syntax.ApplyTypeData
-applyTypeData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyTypeData
-applyTypeData lhs op targs args =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Typed.unTypedTerm op)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Typed.unTypedTerm targs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm args)}]}))
-
--- | DSL accessor for the args field of hydra.scala.syntax.ApplyTypeData
-applyTypeDataArgs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm [Syntax.Data]
-applyTypeDataArgs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-        Core.projectionFieldName = (Core.Name "args")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the lhs field of hydra.scala.syntax.ApplyTypeData
-applyTypeDataLhs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm Syntax.Data
-applyTypeDataLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the op field of hydra.scala.syntax.ApplyTypeData
-applyTypeDataOp :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm Syntax.NameData
-applyTypeDataOp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-        Core.projectionFieldName = (Core.Name "op")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the targs field of hydra.scala.syntax.ApplyTypeData
-applyTypeDataTargs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm [Syntax.Type]
-applyTypeDataTargs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-        Core.projectionFieldName = (Core.Name "targs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the args field of hydra.scala.syntax.ApplyTypeData
-applyTypeDataWithArgs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyTypeData
-applyTypeDataWithArgs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "op")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "targs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the lhs field of hydra.scala.syntax.ApplyTypeData
-applyTypeDataWithLhs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyTypeData
-applyTypeDataWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "op")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "targs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "args")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the op field of hydra.scala.syntax.ApplyTypeData
-applyTypeDataWithOp :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ApplyTypeData
-applyTypeDataWithOp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "targs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "args")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the targs field of hydra.scala.syntax.ApplyTypeData
-applyTypeDataWithTargs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ApplyTypeData
-applyTypeDataWithTargs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "op")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyTypeData"),
-              Core.projectionFieldName = (Core.Name "args")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.ApplyType
-applyTypeTpe :: Typed.TypedTerm Syntax.ApplyType -> Typed.TypedTerm Syntax.Type
-applyTypeTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyType"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the args field of hydra.scala.syntax.ApplyType
-applyTypeWithArgs :: Typed.TypedTerm Syntax.ApplyType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ApplyType
-applyTypeWithArgs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyType"),
-              Core.projectionFieldName = (Core.Name "tpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.ApplyType
-applyTypeWithTpe :: Typed.TypedTerm Syntax.ApplyType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplyType
-applyTypeWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyType"),
-              Core.projectionFieldName = (Core.Name "args")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ApplyUnaryData
-applyUnaryData :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyUnaryData
-applyUnaryData op arg =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyUnaryData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Typed.unTypedTerm op)},
-        Core.Field {
-          Core.fieldName = (Core.Name "arg"),
-          Core.fieldTerm = (Typed.unTypedTerm arg)}]}))
-
--- | DSL accessor for the arg field of hydra.scala.syntax.ApplyUnaryData
-applyUnaryDataArg :: Typed.TypedTerm Syntax.ApplyUnaryData -> Typed.TypedTerm Syntax.Data
-applyUnaryDataArg x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyUnaryData"),
-        Core.projectionFieldName = (Core.Name "arg")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the op field of hydra.scala.syntax.ApplyUnaryData
-applyUnaryDataOp :: Typed.TypedTerm Syntax.ApplyUnaryData -> Typed.TypedTerm Syntax.NameData
-applyUnaryDataOp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyUnaryData"),
-        Core.projectionFieldName = (Core.Name "op")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the arg field of hydra.scala.syntax.ApplyUnaryData
-applyUnaryDataWithArg :: Typed.TypedTerm Syntax.ApplyUnaryData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyUnaryData
-applyUnaryDataWithArg original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyUnaryData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyUnaryData"),
-              Core.projectionFieldName = (Core.Name "op")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "arg"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the op field of hydra.scala.syntax.ApplyUnaryData
-applyUnaryDataWithOp :: Typed.TypedTerm Syntax.ApplyUnaryData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ApplyUnaryData
-applyUnaryDataWithOp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyUnaryData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "arg"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyUnaryData"),
-              Core.projectionFieldName = (Core.Name "arg")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ApplyUsingData
-applyUsingData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyUsingData
-applyUsingData fun targs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyUsingData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "fun"),
-          Core.fieldTerm = (Typed.unTypedTerm fun)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Typed.unTypedTerm targs)}]}))
-
--- | DSL accessor for the fun field of hydra.scala.syntax.ApplyUsingData
-applyUsingDataFun :: Typed.TypedTerm Syntax.ApplyUsingData -> Typed.TypedTerm Syntax.Data
-applyUsingDataFun x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyUsingData"),
-        Core.projectionFieldName = (Core.Name "fun")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the targs field of hydra.scala.syntax.ApplyUsingData
-applyUsingDataTargs :: Typed.TypedTerm Syntax.ApplyUsingData -> Typed.TypedTerm [Syntax.Data]
-applyUsingDataTargs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyUsingData"),
-        Core.projectionFieldName = (Core.Name "targs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the fun field of hydra.scala.syntax.ApplyUsingData
-applyUsingDataWithFun :: Typed.TypedTerm Syntax.ApplyUsingData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyUsingData
-applyUsingDataWithFun original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyUsingData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "fun"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyUsingData"),
-              Core.projectionFieldName = (Core.Name "targs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the targs field of hydra.scala.syntax.ApplyUsingData
-applyUsingDataWithTargs :: Typed.TypedTerm Syntax.ApplyUsingData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyUsingData
-applyUsingDataWithTargs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ApplyUsingData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "fun"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ApplyUsingData"),
-              Core.projectionFieldName = (Core.Name "fun")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.AscribeData
-ascribeData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AscribeData
-ascribeData expr tpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AscribeData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm expr)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)}]}))
-
--- | DSL accessor for the expr field of hydra.scala.syntax.AscribeData
-ascribeDataExpr :: Typed.TypedTerm Syntax.AscribeData -> Typed.TypedTerm Syntax.Data
-ascribeDataExpr x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AscribeData"),
-        Core.projectionFieldName = (Core.Name "expr")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.AscribeData
-ascribeDataTpe :: Typed.TypedTerm Syntax.AscribeData -> Typed.TypedTerm Syntax.Type
-ascribeDataTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AscribeData"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the expr field of hydra.scala.syntax.AscribeData
-ascribeDataWithExpr :: Typed.TypedTerm Syntax.AscribeData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.AscribeData
-ascribeDataWithExpr original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AscribeData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AscribeData"),
-              Core.projectionFieldName = (Core.Name "tpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.AscribeData
-ascribeDataWithTpe :: Typed.TypedTerm Syntax.AscribeData -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AscribeData
-ascribeDataWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AscribeData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AscribeData"),
-              Core.projectionFieldName = (Core.Name "expr")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.AssignData
-assignData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.AssignData
-assignData lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AssignData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the lhs field of hydra.scala.syntax.AssignData
-assignDataLhs :: Typed.TypedTerm Syntax.AssignData -> Typed.TypedTerm Syntax.Data
-assignDataLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AssignData"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.AssignData
-assignDataRhs :: Typed.TypedTerm Syntax.AssignData -> Typed.TypedTerm Syntax.Data
-assignDataRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AssignData"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.scala.syntax.AssignData
-assignDataWithLhs :: Typed.TypedTerm Syntax.AssignData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.AssignData
-assignDataWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AssignData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AssignData"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.AssignData
-assignDataWithRhs :: Typed.TypedTerm Syntax.AssignData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.AssignData
-assignDataWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.AssignData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.AssignData"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.BindPat
-bindPat :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.BindPat
-bindPat lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.BindPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the lhs field of hydra.scala.syntax.BindPat
-bindPatLhs :: Typed.TypedTerm Syntax.BindPat -> Typed.TypedTerm Syntax.Pat
-bindPatLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.BindPat"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.BindPat
-bindPatRhs :: Typed.TypedTerm Syntax.BindPat -> Typed.TypedTerm Syntax.Pat
-bindPatRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.BindPat"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.scala.syntax.BindPat
-bindPatWithLhs :: Typed.TypedTerm Syntax.BindPat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.BindPat
-bindPatWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.BindPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.BindPat"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.BindPat
-bindPatWithRhs :: Typed.TypedTerm Syntax.BindPat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.BindPat
-bindPatWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.BindPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.BindPat"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.BlockData
-blockData :: Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.BlockData
-blockData stats =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.BlockData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm stats)}]}))
-
--- | DSL accessor for the stats field of hydra.scala.syntax.BlockData
-blockDataStats :: Typed.TypedTerm Syntax.BlockData -> Typed.TypedTerm [Syntax.Stat]
-blockDataStats x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.BlockData"),
-        Core.projectionFieldName = (Core.Name "stats")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the stats field of hydra.scala.syntax.BlockData
-blockDataWithStats :: Typed.TypedTerm Syntax.BlockData -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.BlockData
-blockDataWithStats original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.BlockData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ByNameType
-byNameType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ByNameType
-byNameType tpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ByNameType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)}]}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.ByNameType
-byNameTypeTpe :: Typed.TypedTerm Syntax.ByNameType -> Typed.TypedTerm Syntax.Type
-byNameTypeTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ByNameType"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.ByNameType
-byNameTypeWithTpe :: Typed.TypedTerm Syntax.ByNameType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ByNameType
-byNameTypeWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ByNameType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.Case
-case_ :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Case
-case_ pat cond body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Case"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Typed.unTypedTerm pat)},
-        Core.Field {
-          Core.fieldName = (Core.Name "cond"),
-          Core.fieldTerm = (Typed.unTypedTerm cond)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.scala.syntax.Case
-caseBody :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm Syntax.Data
-caseBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Case"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the cond field of hydra.scala.syntax.Case
-caseCond :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm (Maybe Syntax.Data)
-caseCond x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Case"),
-        Core.projectionFieldName = (Core.Name "cond")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.scala.syntax.CaseGeneratorEnumerator
-caseGeneratorEnumerator :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.CaseGeneratorEnumerator
-caseGeneratorEnumerator pat rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Typed.unTypedTerm pat)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the pat field of hydra.scala.syntax.CaseGeneratorEnumerator
-caseGeneratorEnumeratorPat :: Typed.TypedTerm Syntax.CaseGeneratorEnumerator -> Typed.TypedTerm Syntax.Pat
-caseGeneratorEnumeratorPat x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
-        Core.projectionFieldName = (Core.Name "pat")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.CaseGeneratorEnumerator
-caseGeneratorEnumeratorRhs :: Typed.TypedTerm Syntax.CaseGeneratorEnumerator -> Typed.TypedTerm Syntax.Data
-caseGeneratorEnumeratorRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the pat field of hydra.scala.syntax.CaseGeneratorEnumerator
-caseGeneratorEnumeratorWithPat :: Typed.TypedTerm Syntax.CaseGeneratorEnumerator -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.CaseGeneratorEnumerator
-caseGeneratorEnumeratorWithPat original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.CaseGeneratorEnumerator
-caseGeneratorEnumeratorWithRhs :: Typed.TypedTerm Syntax.CaseGeneratorEnumerator -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.CaseGeneratorEnumerator
-caseGeneratorEnumeratorWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
-              Core.projectionFieldName = (Core.Name "pat")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL accessor for the pat field of hydra.scala.syntax.Case
-casePat :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm Syntax.Pat
-casePat x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Case"),
-        Core.projectionFieldName = (Core.Name "pat")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL injection for the case variant of hydra.scala.syntax.CaseTree
-caseTreeCase :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm Syntax.CaseTree
-caseTreeCase x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.CaseTree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "case"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the typeCase variant of hydra.scala.syntax.CaseTree
-caseTreeTypeCase :: Typed.TypedTerm Syntax.TypeCase -> Typed.TypedTerm Syntax.CaseTree
-caseTreeTypeCase x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.CaseTree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "typeCase"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL updater for the body field of hydra.scala.syntax.Case
-caseWithBody :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Case
-caseWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Case"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Case"),
-              Core.projectionFieldName = (Core.Name "pat")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "cond"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Case"),
-              Core.projectionFieldName = (Core.Name "cond")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the cond field of hydra.scala.syntax.Case
-caseWithCond :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.Case
-caseWithCond original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Case"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Case"),
-              Core.projectionFieldName = (Core.Name "pat")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "cond"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Case"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the pat field of hydra.scala.syntax.Case
-caseWithPat :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Case
-caseWithPat original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Case"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "cond"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Case"),
-              Core.projectionFieldName = (Core.Name "cond")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Case"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ClassDefn
-classDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.ClassDefn
-classDefn mods name tparams ctor template =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Typed.unTypedTerm ctor)},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Typed.unTypedTerm template)}]}))
-
--- | DSL accessor for the ctor field of hydra.scala.syntax.ClassDefn
-classDefnCtor :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.PrimaryCtor
-classDefnCtor x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-        Core.projectionFieldName = (Core.Name "ctor")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.ClassDefn
-classDefnMods :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm [Syntax.Mod]
-classDefnMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.ClassDefn
-classDefnName :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.NameType
-classDefnName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the template field of hydra.scala.syntax.ClassDefn
-classDefnTemplate :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.Template
-classDefnTemplate x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-        Core.projectionFieldName = (Core.Name "template")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.ClassDefn
-classDefnTparams :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm [Syntax.ParamType]
-classDefnTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the ctor field of hydra.scala.syntax.ClassDefn
-classDefnWithCtor :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.ClassDefn
-classDefnWithCtor original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.ClassDefn
-classDefnWithMods :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ClassDefn
-classDefnWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.ClassDefn
-classDefnWithName :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.ClassDefn
-classDefnWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the template field of hydra.scala.syntax.ClassDefn
-classDefnWithTemplate :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.ClassDefn
-classDefnWithTemplate original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.ClassDefn
-classDefnWithTparams :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.ClassDefn
-classDefnWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ClassDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ContextFunctionData
-contextFunctionData :: Typed.TypedTerm [Syntax.ParamData] -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ContextFunctionData
-contextFunctionData params body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm params)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.scala.syntax.ContextFunctionData
-contextFunctionDataBody :: Typed.TypedTerm Syntax.ContextFunctionData -> Typed.TypedTerm Syntax.Data
-contextFunctionDataBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionData"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the params field of hydra.scala.syntax.ContextFunctionData
-contextFunctionDataParams :: Typed.TypedTerm Syntax.ContextFunctionData -> Typed.TypedTerm [Syntax.ParamData]
-contextFunctionDataParams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionData"),
-        Core.projectionFieldName = (Core.Name "params")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.scala.syntax.ContextFunctionData
-contextFunctionDataWithBody :: Typed.TypedTerm Syntax.ContextFunctionData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ContextFunctionData
-contextFunctionDataWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionData"),
-              Core.projectionFieldName = (Core.Name "params")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the params field of hydra.scala.syntax.ContextFunctionData
-contextFunctionDataWithParams :: Typed.TypedTerm Syntax.ContextFunctionData -> Typed.TypedTerm [Syntax.ParamData] -> Typed.TypedTerm Syntax.ContextFunctionData
-contextFunctionDataWithParams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionData"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ContextFunctionType
-contextFunctionType :: Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ContextFunctionType
-contextFunctionType params res =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm params)},
-        Core.Field {
-          Core.fieldName = (Core.Name "res"),
-          Core.fieldTerm = (Typed.unTypedTerm res)}]}))
-
--- | DSL accessor for the params field of hydra.scala.syntax.ContextFunctionType
-contextFunctionTypeParams :: Typed.TypedTerm Syntax.ContextFunctionType -> Typed.TypedTerm [Syntax.Type]
-contextFunctionTypeParams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionType"),
-        Core.projectionFieldName = (Core.Name "params")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the res field of hydra.scala.syntax.ContextFunctionType
-contextFunctionTypeRes :: Typed.TypedTerm Syntax.ContextFunctionType -> Typed.TypedTerm Syntax.Type
-contextFunctionTypeRes x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionType"),
-        Core.projectionFieldName = (Core.Name "res")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the params field of hydra.scala.syntax.ContextFunctionType
-contextFunctionTypeWithParams :: Typed.TypedTerm Syntax.ContextFunctionType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ContextFunctionType
-contextFunctionTypeWithParams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "res"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionType"),
-              Core.projectionFieldName = (Core.Name "res")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the res field of hydra.scala.syntax.ContextFunctionType
-contextFunctionTypeWithRes :: Typed.TypedTerm Syntax.ContextFunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ContextFunctionType
-contextFunctionTypeWithRes original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ContextFunctionType"),
-              Core.projectionFieldName = (Core.Name "params")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "res"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the primary variant of hydra.scala.syntax.Ctor
-ctorPrimary :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Ctor
-ctorPrimary x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Ctor"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "primary"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the secondary variant of hydra.scala.syntax.Ctor
-ctorSecondary :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm Syntax.Ctor
-ctorSecondary x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Ctor"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "secondary"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the annotate variant of hydra.scala.syntax.Data
-dataAnnotate :: Typed.TypedTerm Syntax.AnnotateData -> Typed.TypedTerm Syntax.Data
-dataAnnotate x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "annotate"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the apply variant of hydra.scala.syntax.Data
-dataApply :: Typed.TypedTerm Syntax.ApplyData -> Typed.TypedTerm Syntax.Data
-dataApply x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "apply"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the applyType variant of hydra.scala.syntax.Data
-dataApplyType :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm Syntax.Data
-dataApplyType x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "applyType"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the applyUsing variant of hydra.scala.syntax.Data
-dataApplyUsing :: Typed.TypedTerm Syntax.ApplyUsingData -> Typed.TypedTerm Syntax.Data
-dataApplyUsing x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "applyUsing"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the ascribe variant of hydra.scala.syntax.Data
-dataAscribe :: Typed.TypedTerm Syntax.AscribeData -> Typed.TypedTerm Syntax.Data
-dataAscribe x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "ascribe"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the assign variant of hydra.scala.syntax.Data
-dataAssign :: Typed.TypedTerm Syntax.AssignData -> Typed.TypedTerm Syntax.Data
-dataAssign x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "assign"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the block variant of hydra.scala.syntax.Data
-dataBlock :: Typed.TypedTerm Syntax.BlockData -> Typed.TypedTerm Syntax.Data
-dataBlock x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "block"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the contextFunction variant of hydra.scala.syntax.Data
-dataContextFunction :: Typed.TypedTerm Syntax.ContextFunctionData -> Typed.TypedTerm Syntax.Data
-dataContextFunction x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "contextFunction"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the do variant of hydra.scala.syntax.Data
-dataDo :: Typed.TypedTerm Syntax.DoData -> Typed.TypedTerm Syntax.Data
-dataDo x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "do"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the endMarker variant of hydra.scala.syntax.Data
-dataEndMarker :: Typed.TypedTerm Syntax.EndMarkerData -> Typed.TypedTerm Syntax.Data
-dataEndMarker x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "endMarker"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the eta variant of hydra.scala.syntax.Data
-dataEta :: Typed.TypedTerm Syntax.EtaData -> Typed.TypedTerm Syntax.Data
-dataEta x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "eta"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the for variant of hydra.scala.syntax.Data
-dataFor :: Typed.TypedTerm Syntax.ForData -> Typed.TypedTerm Syntax.Data
-dataFor x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "for"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the forYield variant of hydra.scala.syntax.Data
-dataForYield :: Typed.TypedTerm Syntax.ForYieldData -> Typed.TypedTerm Syntax.Data
-dataForYield x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "forYield"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the function variant of hydra.scala.syntax.Data
-dataFunction :: Typed.TypedTerm Syntax.FunctionData -> Typed.TypedTerm Syntax.Data
-dataFunction x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "function"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the if variant of hydra.scala.syntax.Data
-dataIf :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data
-dataIf x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "if"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the interpolate variant of hydra.scala.syntax.Data
-dataInterpolate :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm Syntax.Data
-dataInterpolate x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "interpolate"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the lit variant of hydra.scala.syntax.Data
-dataLit :: Typed.TypedTerm Syntax.Lit -> Typed.TypedTerm Syntax.Data
-dataLit x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "lit"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the match variant of hydra.scala.syntax.Data
-dataMatch :: Typed.TypedTerm Syntax.MatchData -> Typed.TypedTerm Syntax.Data
-dataMatch x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "match"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the object variant of hydra.scala.syntax.DataMember
-dataMemberObject :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm Syntax.DataMember
-dataMemberObject x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.DataMember"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "object"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the pkg variant of hydra.scala.syntax.DataMember
-dataMemberPkg :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm Syntax.DataMember
-dataMemberPkg x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.DataMember"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "pkg"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the new variant of hydra.scala.syntax.Data
-dataNew :: Typed.TypedTerm Syntax.NewData -> Typed.TypedTerm Syntax.Data
-dataNew x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "new"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the newAnonymous variant of hydra.scala.syntax.Data
-dataNewAnonymous :: Typed.TypedTerm Syntax.NewAnonymousData -> Typed.TypedTerm Syntax.Data
-dataNewAnonymous x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "newAnonymous"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the param variant of hydra.scala.syntax.Data
-dataParam :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm Syntax.Data
-dataParam x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "param"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the partialFunction variant of hydra.scala.syntax.Data
-dataPartialFunction :: Typed.TypedTerm Syntax.PartialFunctionData -> Typed.TypedTerm Syntax.Data
-dataPartialFunction x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "partialFunction"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the placeholder variant of hydra.scala.syntax.Data
-dataPlaceholder :: Typed.TypedTerm Syntax.Data
-dataPlaceholder =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "placeholder"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the polyFunction variant of hydra.scala.syntax.Data
-dataPolyFunction :: Typed.TypedTerm Syntax.PolyFunctionData -> Typed.TypedTerm Syntax.Data
-dataPolyFunction x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "polyFunction"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the ref variant of hydra.scala.syntax.Data
-dataRef :: Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.Data
-dataRef x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "ref"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the repeated variant of hydra.scala.syntax.Data
-dataRepeated :: Typed.TypedTerm Syntax.RepeatedData -> Typed.TypedTerm Syntax.Data
-dataRepeated x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "repeated"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the return variant of hydra.scala.syntax.Data
-dataReturn :: Typed.TypedTerm Syntax.ReturnData -> Typed.TypedTerm Syntax.Data
-dataReturn x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "return"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the throw variant of hydra.scala.syntax.Data
-dataThrow :: Typed.TypedTerm Syntax.ThrowData -> Typed.TypedTerm Syntax.Data
-dataThrow x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "throw"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the try variant of hydra.scala.syntax.Data
-dataTry :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm Syntax.Data
-dataTry x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "try"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the tryWithHandler variant of hydra.scala.syntax.Data
-dataTryWithHandler :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm Syntax.Data
-dataTryWithHandler x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "tryWithHandler"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the tuple variant of hydra.scala.syntax.Data
-dataTuple :: Typed.TypedTerm Syntax.TupleData -> Typed.TypedTerm Syntax.Data
-dataTuple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "tuple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the while variant of hydra.scala.syntax.Data
-dataWhile :: Typed.TypedTerm Syntax.WhileData -> Typed.TypedTerm Syntax.Data
-dataWhile x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Data"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "while"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the def variant of hydra.scala.syntax.Decl
-declDef :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm Syntax.Decl
-declDef x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Decl"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "def"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the given variant of hydra.scala.syntax.Decl
-declGiven :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm Syntax.Decl
-declGiven x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Decl"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "given"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the type variant of hydra.scala.syntax.Decl
-declType :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm Syntax.Decl
-declType x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Decl"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "type"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the val variant of hydra.scala.syntax.Decl
-declVal :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm Syntax.Decl
-declVal x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Decl"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "val"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the var variant of hydra.scala.syntax.Decl
-declVar :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm Syntax.Decl
-declVar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Decl"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "var"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.DefDecl
-defDecl :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.DefDecl
-defDecl mods name tparams paramss decltpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Typed.unTypedTerm paramss)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm decltpe)}]}))
-
--- | DSL accessor for the decltpe field of hydra.scala.syntax.DefDecl
-defDeclDecltpe :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm Syntax.Type
-defDeclDecltpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-        Core.projectionFieldName = (Core.Name "decltpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.DefDecl
-defDeclMods :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [Syntax.Mod]
-defDeclMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.DefDecl
-defDeclName :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm Syntax.NameData
-defDeclName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramss field of hydra.scala.syntax.DefDecl
-defDeclParamss :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [[Syntax.ParamData]]
-defDeclParamss x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-        Core.projectionFieldName = (Core.Name "paramss")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.DefDecl
-defDeclTparams :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [Syntax.ParamType]
-defDeclTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the decltpe field of hydra.scala.syntax.DefDecl
-defDeclWithDecltpe :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.DefDecl
-defDeclWithDecltpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.DefDecl
-defDeclWithMods :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.DefDecl
-defDeclWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.DefDecl
-defDeclWithName :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.DefDecl
-defDeclWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramss field of hydra.scala.syntax.DefDecl
-defDeclWithParamss :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.DefDecl
-defDeclWithParamss original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.DefDecl
-defDeclWithTparams :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.DefDecl
-defDeclWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.DefDefn
-defDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.DefDefn
-defDefn mods name tparams paramss decltpe body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Typed.unTypedTerm paramss)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm decltpe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.scala.syntax.DefDefn
-defDefnBody :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm Syntax.Data
-defDefnBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the decltpe field of hydra.scala.syntax.DefDefn
-defDefnDecltpe :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm (Maybe Syntax.Type)
-defDefnDecltpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-        Core.projectionFieldName = (Core.Name "decltpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.DefDefn
-defDefnMods :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [Syntax.Mod]
-defDefnMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.DefDefn
-defDefnName :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm Syntax.NameData
-defDefnName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramss field of hydra.scala.syntax.DefDefn
-defDefnParamss :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [[Syntax.ParamData]]
-defDefnParamss x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-        Core.projectionFieldName = (Core.Name "paramss")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.DefDefn
-defDefnTparams :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [Syntax.ParamType]
-defDefnTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.scala.syntax.DefDefn
-defDefnWithBody :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.DefDefn
-defDefnWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the decltpe field of hydra.scala.syntax.DefDefn
-defDefnWithDecltpe :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.DefDefn
-defDefnWithDecltpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.DefDefn
-defDefnWithMods :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.DefDefn
-defDefnWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.DefDefn
-defDefnWithName :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.DefDefn
-defDefnWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramss field of hydra.scala.syntax.DefDefn
-defDefnWithParamss :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.DefDefn
-defDefnWithParamss original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.DefDefn
-defDefnWithTparams :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.DefDefn
-defDefnWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DefDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the class variant of hydra.scala.syntax.Defn
-defnClass :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.Defn
-defnClass x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "class"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the def variant of hydra.scala.syntax.Defn
-defnDef :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm Syntax.Defn
-defnDef x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "def"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the enum variant of hydra.scala.syntax.Defn
-defnEnum :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.Defn
-defnEnum x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "enum"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the enumCase variant of hydra.scala.syntax.Defn
-defnEnumCase :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm Syntax.Defn
-defnEnumCase x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "enumCase"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the extensionGroup variant of hydra.scala.syntax.Defn
-defnExtensionGroup :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm Syntax.Defn
-defnExtensionGroup x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "extensionGroup"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the given variant of hydra.scala.syntax.Defn
-defnGiven :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm Syntax.Defn
-defnGiven x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "given"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the givenAlias variant of hydra.scala.syntax.Defn
-defnGivenAlias :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Defn
-defnGivenAlias x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "givenAlias"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the object variant of hydra.scala.syntax.Defn
-defnObject :: Typed.TypedTerm Syntax.ObjectDefn -> Typed.TypedTerm Syntax.Defn
-defnObject x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "object"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the repeatedEnumCase variant of hydra.scala.syntax.Defn
-defnRepeatedEnumCase :: Typed.TypedTerm Syntax.RepeatedEnumCaseDefn -> Typed.TypedTerm Syntax.Defn
-defnRepeatedEnumCase x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "repeatedEnumCase"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the trait variant of hydra.scala.syntax.Defn
-defnTrait :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.Defn
-defnTrait x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "trait"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the type variant of hydra.scala.syntax.Defn
-defnType :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm Syntax.Defn
-defnType x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "type"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the val variant of hydra.scala.syntax.Defn
-defnVal :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm Syntax.Defn
-defnVal x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "val"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the var variant of hydra.scala.syntax.Defn
-defnVar :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm Syntax.Defn
-defnVar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Defn"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "var"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.DoData
-doData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.DoData
-doData body expr =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DoData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)},
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm expr)}]}))
-
--- | DSL accessor for the body field of hydra.scala.syntax.DoData
-doDataBody :: Typed.TypedTerm Syntax.DoData -> Typed.TypedTerm Syntax.Data
-doDataBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DoData"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the expr field of hydra.scala.syntax.DoData
-doDataExpr :: Typed.TypedTerm Syntax.DoData -> Typed.TypedTerm Syntax.Data
-doDataExpr x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DoData"),
-        Core.projectionFieldName = (Core.Name "expr")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.scala.syntax.DoData
-doDataWithBody :: Typed.TypedTerm Syntax.DoData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.DoData
-doDataWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DoData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DoData"),
-              Core.projectionFieldName = (Core.Name "expr")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the expr field of hydra.scala.syntax.DoData
-doDataWithExpr :: Typed.TypedTerm Syntax.DoData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.DoData
-doDataWithExpr original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.DoData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.DoData"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.EndMarkerData
-endMarkerData :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.EndMarkerData
-endMarkerData name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EndMarkerData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.EndMarkerData
-endMarkerDataName :: Typed.TypedTerm Syntax.EndMarkerData -> Typed.TypedTerm Syntax.NameData
-endMarkerDataName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EndMarkerData"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.EndMarkerData
-endMarkerDataWithName :: Typed.TypedTerm Syntax.EndMarkerData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.EndMarkerData
-endMarkerDataWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EndMarkerData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.EnumCaseDefn
-enumCaseDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm [Syntax.Init] -> Typed.TypedTerm Syntax.EnumCaseDefn
-enumCaseDefn mods name tparams ctor inits =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Typed.unTypedTerm ctor)},
-        Core.Field {
-          Core.fieldName = (Core.Name "inits"),
-          Core.fieldTerm = (Typed.unTypedTerm inits)}]}))
-
--- | DSL accessor for the ctor field of hydra.scala.syntax.EnumCaseDefn
-enumCaseDefnCtor :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm Syntax.PrimaryCtor
-enumCaseDefnCtor x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-        Core.projectionFieldName = (Core.Name "ctor")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the inits field of hydra.scala.syntax.EnumCaseDefn
-enumCaseDefnInits :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.Init]
-enumCaseDefnInits x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-        Core.projectionFieldName = (Core.Name "inits")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.EnumCaseDefn
-enumCaseDefnMods :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.Mod]
-enumCaseDefnMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.EnumCaseDefn
-enumCaseDefnName :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm Syntax.NameData
-enumCaseDefnName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.EnumCaseDefn
-enumCaseDefnTparams :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.ParamType]
-enumCaseDefnTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the ctor field of hydra.scala.syntax.EnumCaseDefn
-enumCaseDefnWithCtor :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.EnumCaseDefn
-enumCaseDefnWithCtor original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "inits"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "inits")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the inits field of hydra.scala.syntax.EnumCaseDefn
-enumCaseDefnWithInits :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.Init] -> Typed.TypedTerm Syntax.EnumCaseDefn
-enumCaseDefnWithInits original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inits"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.EnumCaseDefn
-enumCaseDefnWithMods :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.EnumCaseDefn
-enumCaseDefnWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inits"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "inits")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.EnumCaseDefn
-enumCaseDefnWithName :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.EnumCaseDefn
-enumCaseDefnWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inits"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "inits")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.EnumCaseDefn
-enumCaseDefnWithTparams :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.EnumCaseDefn
-enumCaseDefnWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inits"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "inits")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.EnumDefn
-enumDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.EnumDefn
-enumDefn mods name tparams ctor template =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Typed.unTypedTerm ctor)},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Typed.unTypedTerm template)}]}))
-
--- | DSL accessor for the ctor field of hydra.scala.syntax.EnumDefn
-enumDefnCtor :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.PrimaryCtor
-enumDefnCtor x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-        Core.projectionFieldName = (Core.Name "ctor")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.EnumDefn
-enumDefnMods :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm [Syntax.Mod]
-enumDefnMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.EnumDefn
-enumDefnName :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.NameType
-enumDefnName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the template field of hydra.scala.syntax.EnumDefn
-enumDefnTemplate :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.Template
-enumDefnTemplate x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-        Core.projectionFieldName = (Core.Name "template")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.EnumDefn
-enumDefnTparams :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm [Syntax.ParamType]
-enumDefnTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the ctor field of hydra.scala.syntax.EnumDefn
-enumDefnWithCtor :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.EnumDefn
-enumDefnWithCtor original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.EnumDefn
-enumDefnWithMods :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.EnumDefn
-enumDefnWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.EnumDefn
-enumDefnWithName :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.EnumDefn
-enumDefnWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the template field of hydra.scala.syntax.EnumDefn
-enumDefnWithTemplate :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.EnumDefn
-enumDefnWithTemplate original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.EnumDefn
-enumDefnWithTparams :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.EnumDefn
-enumDefnWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EnumDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the caseGenerator variant of hydra.scala.syntax.Enumerator
-enumeratorCaseGenerator :: Typed.TypedTerm Syntax.CaseGeneratorEnumerator -> Typed.TypedTerm Syntax.Enumerator
-enumeratorCaseGenerator x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Enumerator"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "caseGenerator"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the generator variant of hydra.scala.syntax.Enumerator
-enumeratorGenerator :: Typed.TypedTerm Syntax.GeneratorEnumerator -> Typed.TypedTerm Syntax.Enumerator
-enumeratorGenerator x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Enumerator"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "generator"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the guard variant of hydra.scala.syntax.Enumerator
-enumeratorGuard :: Typed.TypedTerm Syntax.GuardEnumerator -> Typed.TypedTerm Syntax.Enumerator
-enumeratorGuard x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Enumerator"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "guard"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the val variant of hydra.scala.syntax.Enumerator
-enumeratorVal :: Typed.TypedTerm Syntax.ValEnumerator -> Typed.TypedTerm Syntax.Enumerator
-enumeratorVal x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Enumerator"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "val"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.EtaData
-etaData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.EtaData
-etaData expr =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EtaData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm expr)}]}))
-
--- | DSL accessor for the expr field of hydra.scala.syntax.EtaData
-etaDataExpr :: Typed.TypedTerm Syntax.EtaData -> Typed.TypedTerm Syntax.Data
-etaDataExpr x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.EtaData"),
-        Core.projectionFieldName = (Core.Name "expr")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the expr field of hydra.scala.syntax.EtaData
-etaDataWithExpr :: Typed.TypedTerm Syntax.EtaData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.EtaData
-etaDataWithExpr original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.EtaData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ExistentialType
-existentialType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.ExistentialType
-existentialType tpe stats =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExistentialType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm stats)}]}))
-
--- | DSL accessor for the stats field of hydra.scala.syntax.ExistentialType
-existentialTypeStats :: Typed.TypedTerm Syntax.ExistentialType -> Typed.TypedTerm [Syntax.Stat]
-existentialTypeStats x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExistentialType"),
-        Core.projectionFieldName = (Core.Name "stats")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.ExistentialType
-existentialTypeTpe :: Typed.TypedTerm Syntax.ExistentialType -> Typed.TypedTerm Syntax.Type
-existentialTypeTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExistentialType"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the stats field of hydra.scala.syntax.ExistentialType
-existentialTypeWithStats :: Typed.TypedTerm Syntax.ExistentialType -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.ExistentialType
-existentialTypeWithStats original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExistentialType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExistentialType"),
-              Core.projectionFieldName = (Core.Name "tpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.ExistentialType
-existentialTypeWithTpe :: Typed.TypedTerm Syntax.ExistentialType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ExistentialType
-existentialTypeWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExistentialType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExistentialType"),
-              Core.projectionFieldName = (Core.Name "stats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.Export
-export :: Typed.TypedTerm [Syntax.Importer] -> Typed.TypedTerm Syntax.Export
-export importers =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Export"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "importers"),
-          Core.fieldTerm = (Typed.unTypedTerm importers)}]}))
-
--- | DSL accessor for the importers field of hydra.scala.syntax.Export
-exportImporters :: Typed.TypedTerm Syntax.Export -> Typed.TypedTerm [Syntax.Importer]
-exportImporters x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Export"),
-        Core.projectionFieldName = (Core.Name "importers")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the importers field of hydra.scala.syntax.Export
-exportWithImporters :: Typed.TypedTerm Syntax.Export -> Typed.TypedTerm [Syntax.Importer] -> Typed.TypedTerm Syntax.Export
-exportWithImporters original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Export"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "importers"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ExtensionGroupDefn
-extensionGroupDefn :: Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Stat -> Typed.TypedTerm Syntax.ExtensionGroupDefn
-extensionGroupDefn tparams parmss body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "parmss"),
-          Core.fieldTerm = (Typed.unTypedTerm parmss)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.scala.syntax.ExtensionGroupDefn
-extensionGroupDefnBody :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm Syntax.Stat
-extensionGroupDefnBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the parmss field of hydra.scala.syntax.ExtensionGroupDefn
-extensionGroupDefnParmss :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm [[Syntax.ParamData]]
-extensionGroupDefnParmss x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-        Core.projectionFieldName = (Core.Name "parmss")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.ExtensionGroupDefn
-extensionGroupDefnTparams :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm [Syntax.ParamType]
-extensionGroupDefnTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.scala.syntax.ExtensionGroupDefn
-extensionGroupDefnWithBody :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm Syntax.Stat -> Typed.TypedTerm Syntax.ExtensionGroupDefn
-extensionGroupDefnWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "parmss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-              Core.projectionFieldName = (Core.Name "parmss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the parmss field of hydra.scala.syntax.ExtensionGroupDefn
-extensionGroupDefnWithParmss :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.ExtensionGroupDefn
-extensionGroupDefnWithParmss original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "parmss"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.ExtensionGroupDefn
-extensionGroupDefnWithTparams :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.ExtensionGroupDefn
-extensionGroupDefnWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "parmss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-              Core.projectionFieldName = (Core.Name "parmss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtensionGroupDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ExtractInfixPat
-extractInfixPat :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.ExtractInfixPat
-extractInfixPat lhs op rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Typed.unTypedTerm op)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the lhs field of hydra.scala.syntax.ExtractInfixPat
-extractInfixPatLhs :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm Syntax.Pat
-extractInfixPatLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the op field of hydra.scala.syntax.ExtractInfixPat
-extractInfixPatOp :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm Syntax.NameData
-extractInfixPatOp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-        Core.projectionFieldName = (Core.Name "op")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.ExtractInfixPat
-extractInfixPatRhs :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm [Syntax.Pat]
-extractInfixPatRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.scala.syntax.ExtractInfixPat
-extractInfixPatWithLhs :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.ExtractInfixPat
-extractInfixPatWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-              Core.projectionFieldName = (Core.Name "op")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the op field of hydra.scala.syntax.ExtractInfixPat
-extractInfixPatWithOp :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ExtractInfixPat
-extractInfixPatWithOp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.ExtractInfixPat
-extractInfixPatWithRhs :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.ExtractInfixPat
-extractInfixPatWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "op"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractInfixPat"),
-              Core.projectionFieldName = (Core.Name "op")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ExtractPat
-extractPat :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.ExtractPat
-extractPat fun args =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExtractPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "fun"),
-          Core.fieldTerm = (Typed.unTypedTerm fun)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm args)}]}))
-
--- | DSL accessor for the args field of hydra.scala.syntax.ExtractPat
-extractPatArgs :: Typed.TypedTerm Syntax.ExtractPat -> Typed.TypedTerm [Syntax.Pat]
-extractPatArgs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractPat"),
-        Core.projectionFieldName = (Core.Name "args")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the fun field of hydra.scala.syntax.ExtractPat
-extractPatFun :: Typed.TypedTerm Syntax.ExtractPat -> Typed.TypedTerm Syntax.Data
-extractPatFun x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractPat"),
-        Core.projectionFieldName = (Core.Name "fun")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the args field of hydra.scala.syntax.ExtractPat
-extractPatWithArgs :: Typed.TypedTerm Syntax.ExtractPat -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.ExtractPat
-extractPatWithArgs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExtractPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "fun"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractPat"),
-              Core.projectionFieldName = (Core.Name "fun")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the fun field of hydra.scala.syntax.ExtractPat
-extractPatWithFun :: Typed.TypedTerm Syntax.ExtractPat -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ExtractPat
-extractPatWithFun original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ExtractPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "fun"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ExtractPat"),
-              Core.projectionFieldName = (Core.Name "args")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ForData
-forData :: Typed.TypedTerm [Syntax.Enumerator] -> Typed.TypedTerm Syntax.ForData
-forData enums =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ForData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "enums"),
-          Core.fieldTerm = (Typed.unTypedTerm enums)}]}))
-
--- | DSL accessor for the enums field of hydra.scala.syntax.ForData
-forDataEnums :: Typed.TypedTerm Syntax.ForData -> Typed.TypedTerm [Syntax.Enumerator]
-forDataEnums x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ForData"),
-        Core.projectionFieldName = (Core.Name "enums")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the enums field of hydra.scala.syntax.ForData
-forDataWithEnums :: Typed.TypedTerm Syntax.ForData -> Typed.TypedTerm [Syntax.Enumerator] -> Typed.TypedTerm Syntax.ForData
-forDataWithEnums original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ForData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "enums"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ForYieldData
-forYieldData :: Typed.TypedTerm [Syntax.Enumerator] -> Typed.TypedTerm Syntax.ForYieldData
-forYieldData enums =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ForYieldData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "enums"),
-          Core.fieldTerm = (Typed.unTypedTerm enums)}]}))
-
--- | DSL accessor for the enums field of hydra.scala.syntax.ForYieldData
-forYieldDataEnums :: Typed.TypedTerm Syntax.ForYieldData -> Typed.TypedTerm [Syntax.Enumerator]
-forYieldDataEnums x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ForYieldData"),
-        Core.projectionFieldName = (Core.Name "enums")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the enums field of hydra.scala.syntax.ForYieldData
-forYieldDataWithEnums :: Typed.TypedTerm Syntax.ForYieldData -> Typed.TypedTerm [Syntax.Enumerator] -> Typed.TypedTerm Syntax.ForYieldData
-forYieldDataWithEnums original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ForYieldData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "enums"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.FunctionData
-functionData :: Typed.TypedTerm [Syntax.ParamData] -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.FunctionData
-functionData params body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.FunctionData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm params)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.scala.syntax.FunctionData
-functionDataBody :: Typed.TypedTerm Syntax.FunctionData -> Typed.TypedTerm Syntax.Data
-functionDataBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.FunctionData"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the params field of hydra.scala.syntax.FunctionData
-functionDataParams :: Typed.TypedTerm Syntax.FunctionData -> Typed.TypedTerm [Syntax.ParamData]
-functionDataParams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.FunctionData"),
-        Core.projectionFieldName = (Core.Name "params")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.scala.syntax.FunctionData
-functionDataWithBody :: Typed.TypedTerm Syntax.FunctionData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.FunctionData
-functionDataWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.FunctionData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.FunctionData"),
-              Core.projectionFieldName = (Core.Name "params")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the params field of hydra.scala.syntax.FunctionData
-functionDataWithParams :: Typed.TypedTerm Syntax.FunctionData -> Typed.TypedTerm [Syntax.ParamData] -> Typed.TypedTerm Syntax.FunctionData
-functionDataWithParams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.FunctionData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.FunctionData"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.FunctionType
-functionType :: Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.FunctionType
-functionType params res =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.FunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm params)},
-        Core.Field {
-          Core.fieldName = (Core.Name "res"),
-          Core.fieldTerm = (Typed.unTypedTerm res)}]}))
-
--- | DSL accessor for the params field of hydra.scala.syntax.FunctionType
-functionTypeParams :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm [Syntax.Type]
-functionTypeParams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.FunctionType"),
-        Core.projectionFieldName = (Core.Name "params")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the res field of hydra.scala.syntax.FunctionType
-functionTypeRes :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type
-functionTypeRes x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.FunctionType"),
-        Core.projectionFieldName = (Core.Name "res")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the params field of hydra.scala.syntax.FunctionType
-functionTypeWithParams :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.FunctionType
-functionTypeWithParams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.FunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "res"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.FunctionType"),
-              Core.projectionFieldName = (Core.Name "res")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the res field of hydra.scala.syntax.FunctionType
-functionTypeWithRes :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.FunctionType
-functionTypeWithRes original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.FunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.FunctionType"),
-              Core.projectionFieldName = (Core.Name "params")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "res"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.GeneratorEnumerator
-generatorEnumerator :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GeneratorEnumerator
-generatorEnumerator pat rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GeneratorEnumerator"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Typed.unTypedTerm pat)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the pat field of hydra.scala.syntax.GeneratorEnumerator
-generatorEnumeratorPat :: Typed.TypedTerm Syntax.GeneratorEnumerator -> Typed.TypedTerm Syntax.Pat
-generatorEnumeratorPat x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GeneratorEnumerator"),
-        Core.projectionFieldName = (Core.Name "pat")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.GeneratorEnumerator
-generatorEnumeratorRhs :: Typed.TypedTerm Syntax.GeneratorEnumerator -> Typed.TypedTerm Syntax.Data
-generatorEnumeratorRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GeneratorEnumerator"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the pat field of hydra.scala.syntax.GeneratorEnumerator
-generatorEnumeratorWithPat :: Typed.TypedTerm Syntax.GeneratorEnumerator -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.GeneratorEnumerator
-generatorEnumeratorWithPat original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GeneratorEnumerator"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GeneratorEnumerator"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.GeneratorEnumerator
-generatorEnumeratorWithRhs :: Typed.TypedTerm Syntax.GeneratorEnumerator -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GeneratorEnumerator
-generatorEnumeratorWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GeneratorEnumerator"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GeneratorEnumerator"),
-              Core.projectionFieldName = (Core.Name "pat")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.GivenAliasDefn
-givenAliasDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [[Syntax.ParamType]] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GivenAliasDefn
-givenAliasDefn mods name tparams sparams decltpe body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Typed.unTypedTerm sparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm decltpe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnBody :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Data
-givenAliasDefnBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the decltpe field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnDecltpe :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Type
-givenAliasDefnDecltpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-        Core.projectionFieldName = (Core.Name "decltpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnMods :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [Syntax.Mod]
-givenAliasDefnMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnName :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Name
-givenAliasDefnName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the sparams field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnSparams :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [[Syntax.ParamData]]
-givenAliasDefnSparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-        Core.projectionFieldName = (Core.Name "sparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnTparams :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [[Syntax.ParamType]]
-givenAliasDefnTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnWithBody :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GivenAliasDefn
-givenAliasDefnWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the decltpe field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnWithDecltpe :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenAliasDefn
-givenAliasDefnWithDecltpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnWithMods :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.GivenAliasDefn
-givenAliasDefnWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnWithName :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.GivenAliasDefn
-givenAliasDefnWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the sparams field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnWithSparams :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.GivenAliasDefn
-givenAliasDefnWithSparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.GivenAliasDefn
-givenAliasDefnWithTparams :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [[Syntax.ParamType]] -> Typed.TypedTerm Syntax.GivenAliasDefn
-givenAliasDefnWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenAliasDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.GivenDecl
-givenDecl :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenDecl
-givenDecl mods name tparams sparams decltpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Typed.unTypedTerm sparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm decltpe)}]}))
-
--- | DSL accessor for the decltpe field of hydra.scala.syntax.GivenDecl
-givenDeclDecltpe :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm Syntax.Type
-givenDeclDecltpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-        Core.projectionFieldName = (Core.Name "decltpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.GivenDecl
-givenDeclMods :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [Syntax.Mod]
-givenDeclMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.GivenDecl
-givenDeclName :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm Syntax.NameData
-givenDeclName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the sparams field of hydra.scala.syntax.GivenDecl
-givenDeclSparams :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [[Syntax.ParamData]]
-givenDeclSparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-        Core.projectionFieldName = (Core.Name "sparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.GivenDecl
-givenDeclTparams :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [Syntax.ParamType]
-givenDeclTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the decltpe field of hydra.scala.syntax.GivenDecl
-givenDeclWithDecltpe :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenDecl
-givenDeclWithDecltpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.GivenDecl
-givenDeclWithMods :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.GivenDecl
-givenDeclWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.GivenDecl
-givenDeclWithName :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.GivenDecl
-givenDeclWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the sparams field of hydra.scala.syntax.GivenDecl
-givenDeclWithSparams :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.GivenDecl
-givenDeclWithSparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.GivenDecl
-givenDeclWithTparams :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.GivenDecl
-givenDeclWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.GivenDefn
-givenDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [[Syntax.ParamType]] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.GivenDefn
-givenDefn mods name tparams sparams templ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Typed.unTypedTerm sparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "templ"),
-          Core.fieldTerm = (Typed.unTypedTerm templ)}]}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.GivenDefn
-givenDefnMods :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [Syntax.Mod]
-givenDefnMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.GivenDefn
-givenDefnName :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm Syntax.Name
-givenDefnName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the sparams field of hydra.scala.syntax.GivenDefn
-givenDefnSparams :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [[Syntax.ParamData]]
-givenDefnSparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-        Core.projectionFieldName = (Core.Name "sparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the templ field of hydra.scala.syntax.GivenDefn
-givenDefnTempl :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm Syntax.Template
-givenDefnTempl x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-        Core.projectionFieldName = (Core.Name "templ")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.GivenDefn
-givenDefnTparams :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [[Syntax.ParamType]]
-givenDefnTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.GivenDefn
-givenDefnWithMods :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.GivenDefn
-givenDefnWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "templ"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "templ")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.GivenDefn
-givenDefnWithName :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.GivenDefn
-givenDefnWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "templ"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "templ")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the sparams field of hydra.scala.syntax.GivenDefn
-givenDefnWithSparams :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.GivenDefn
-givenDefnWithSparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "templ"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "templ")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the templ field of hydra.scala.syntax.GivenDefn
-givenDefnWithTempl :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.GivenDefn
-givenDefnWithTempl original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "templ"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.GivenDefn
-givenDefnWithTparams :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [[Syntax.ParamType]] -> Typed.TypedTerm Syntax.GivenDefn
-givenDefnWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "sparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "sparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "templ"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenDefn"),
-              Core.projectionFieldName = (Core.Name "templ")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.GivenImportee
-givenImportee :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenImportee
-givenImportee tpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenImportee"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)}]}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.GivenImportee
-givenImporteeTpe :: Typed.TypedTerm Syntax.GivenImportee -> Typed.TypedTerm Syntax.Type
-givenImporteeTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenImportee"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.GivenImportee
-givenImporteeWithTpe :: Typed.TypedTerm Syntax.GivenImportee -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenImportee
-givenImporteeWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenImportee"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.GivenPat
-givenPat :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenPat
-givenPat tpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)}]}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.GivenPat
-givenPatTpe :: Typed.TypedTerm Syntax.GivenPat -> Typed.TypedTerm Syntax.Type
-givenPatTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GivenPat"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.GivenPat
-givenPatWithTpe :: Typed.TypedTerm Syntax.GivenPat -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenPat
-givenPatWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GivenPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.GuardEnumerator
-guardEnumerator :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GuardEnumerator
-guardEnumerator cond =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GuardEnumerator"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "cond"),
-          Core.fieldTerm = (Typed.unTypedTerm cond)}]}))
-
--- | DSL accessor for the cond field of hydra.scala.syntax.GuardEnumerator
-guardEnumeratorCond :: Typed.TypedTerm Syntax.GuardEnumerator -> Typed.TypedTerm Syntax.Data
-guardEnumeratorCond x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.GuardEnumerator"),
-        Core.projectionFieldName = (Core.Name "cond")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the cond field of hydra.scala.syntax.GuardEnumerator
-guardEnumeratorWithCond :: Typed.TypedTerm Syntax.GuardEnumerator -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GuardEnumerator
-guardEnumeratorWithCond original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.GuardEnumerator"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "cond"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.IfData
-ifData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.IfData
-ifData cond thenp elsep =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "cond"),
-          Core.fieldTerm = (Typed.unTypedTerm cond)},
-        Core.Field {
-          Core.fieldName = (Core.Name "thenp"),
-          Core.fieldTerm = (Typed.unTypedTerm thenp)},
-        Core.Field {
-          Core.fieldName = (Core.Name "elsep"),
-          Core.fieldTerm = (Typed.unTypedTerm elsep)}]}))
-
--- | DSL accessor for the cond field of hydra.scala.syntax.IfData
-ifDataCond :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data
-ifDataCond x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-        Core.projectionFieldName = (Core.Name "cond")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the elsep field of hydra.scala.syntax.IfData
-ifDataElsep :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data
-ifDataElsep x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-        Core.projectionFieldName = (Core.Name "elsep")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the thenp field of hydra.scala.syntax.IfData
-ifDataThenp :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data
-ifDataThenp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-        Core.projectionFieldName = (Core.Name "thenp")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the cond field of hydra.scala.syntax.IfData
-ifDataWithCond :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.IfData
-ifDataWithCond original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "cond"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "thenp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-              Core.projectionFieldName = (Core.Name "thenp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "elsep"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-              Core.projectionFieldName = (Core.Name "elsep")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the elsep field of hydra.scala.syntax.IfData
-ifDataWithElsep :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.IfData
-ifDataWithElsep original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "cond"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-              Core.projectionFieldName = (Core.Name "cond")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "thenp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-              Core.projectionFieldName = (Core.Name "thenp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "elsep"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the thenp field of hydra.scala.syntax.IfData
-ifDataWithThenp :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.IfData
-ifDataWithThenp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "cond"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-              Core.projectionFieldName = (Core.Name "cond")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "thenp"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "elsep"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.IfData"),
-              Core.projectionFieldName = (Core.Name "elsep")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ImplicitFunctionType
-implicitFunctionType :: Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ImplicitFunctionType
-implicitFunctionType params res =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ImplicitFunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm params)},
-        Core.Field {
-          Core.fieldName = (Core.Name "res"),
-          Core.fieldTerm = (Typed.unTypedTerm res)}]}))
-
--- | DSL accessor for the params field of hydra.scala.syntax.ImplicitFunctionType
-implicitFunctionTypeParams :: Typed.TypedTerm Syntax.ImplicitFunctionType -> Typed.TypedTerm [Syntax.Type]
-implicitFunctionTypeParams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ImplicitFunctionType"),
-        Core.projectionFieldName = (Core.Name "params")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the res field of hydra.scala.syntax.ImplicitFunctionType
-implicitFunctionTypeRes :: Typed.TypedTerm Syntax.ImplicitFunctionType -> Typed.TypedTerm Syntax.Type
-implicitFunctionTypeRes x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ImplicitFunctionType"),
-        Core.projectionFieldName = (Core.Name "res")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the params field of hydra.scala.syntax.ImplicitFunctionType
-implicitFunctionTypeWithParams :: Typed.TypedTerm Syntax.ImplicitFunctionType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ImplicitFunctionType
-implicitFunctionTypeWithParams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ImplicitFunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "res"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ImplicitFunctionType"),
-              Core.projectionFieldName = (Core.Name "res")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the res field of hydra.scala.syntax.ImplicitFunctionType
-implicitFunctionTypeWithRes :: Typed.TypedTerm Syntax.ImplicitFunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ImplicitFunctionType
-implicitFunctionTypeWithRes original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ImplicitFunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ImplicitFunctionType"),
-              Core.projectionFieldName = (Core.Name "params")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "res"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.Import
-import_ :: Typed.TypedTerm [Syntax.Importer] -> Typed.TypedTerm Syntax.Import
-import_ importers =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Import"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "importers"),
-          Core.fieldTerm = (Typed.unTypedTerm importers)}]}))
-
--- | DSL injection for the export variant of hydra.scala.syntax.ImportExportStat
-importExportStatExport :: Typed.TypedTerm Syntax.Export -> Typed.TypedTerm Syntax.ImportExportStat
-importExportStatExport x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.ImportExportStat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "export"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the import variant of hydra.scala.syntax.ImportExportStat
-importExportStatImport :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm Syntax.ImportExportStat
-importExportStatImport x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.ImportExportStat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "import"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL accessor for the importers field of hydra.scala.syntax.Import
-importImporters :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm [Syntax.Importer]
-importImporters x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Import"),
-        Core.projectionFieldName = (Core.Name "importers")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the importers field of hydra.scala.syntax.Import
-importWithImporters :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm [Syntax.Importer] -> Typed.TypedTerm Syntax.Import
-importWithImporters original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Import"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "importers"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the given variant of hydra.scala.syntax.Importee
-importeeGiven :: Typed.TypedTerm Syntax.GivenImportee -> Typed.TypedTerm Syntax.Importee
-importeeGiven x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Importee"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "given"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the givenAll variant of hydra.scala.syntax.Importee
-importeeGivenAll :: Typed.TypedTerm Syntax.Importee
-importeeGivenAll =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Importee"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "givenAll"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the name variant of hydra.scala.syntax.Importee
-importeeName :: Typed.TypedTerm Syntax.NameImportee -> Typed.TypedTerm Syntax.Importee
-importeeName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Importee"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "name"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the rename variant of hydra.scala.syntax.Importee
-importeeRename :: Typed.TypedTerm Syntax.RenameImportee -> Typed.TypedTerm Syntax.Importee
-importeeRename x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Importee"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "rename"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the unimport variant of hydra.scala.syntax.Importee
-importeeUnimport :: Typed.TypedTerm Syntax.UnimportImportee -> Typed.TypedTerm Syntax.Importee
-importeeUnimport x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Importee"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "unimport"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the wildcard variant of hydra.scala.syntax.Importee
-importeeWildcard :: Typed.TypedTerm Syntax.Importee
-importeeWildcard =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Importee"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "wildcard"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL constructor for hydra.scala.syntax.Importer
-importer :: Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm [Syntax.Importee] -> Typed.TypedTerm Syntax.Importer
-importer ref importees =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Importer"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "ref"),
-          Core.fieldTerm = (Typed.unTypedTerm ref)},
-        Core.Field {
-          Core.fieldName = (Core.Name "importees"),
-          Core.fieldTerm = (Typed.unTypedTerm importees)}]}))
-
--- | DSL accessor for the importees field of hydra.scala.syntax.Importer
-importerImportees :: Typed.TypedTerm Syntax.Importer -> Typed.TypedTerm [Syntax.Importee]
-importerImportees x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Importer"),
-        Core.projectionFieldName = (Core.Name "importees")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the ref field of hydra.scala.syntax.Importer
-importerRef :: Typed.TypedTerm Syntax.Importer -> Typed.TypedTerm Syntax.RefData
-importerRef x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Importer"),
-        Core.projectionFieldName = (Core.Name "ref")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the importees field of hydra.scala.syntax.Importer
-importerWithImportees :: Typed.TypedTerm Syntax.Importer -> Typed.TypedTerm [Syntax.Importee] -> Typed.TypedTerm Syntax.Importer
-importerWithImportees original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Importer"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "ref"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Importer"),
-              Core.projectionFieldName = (Core.Name "ref")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "importees"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the ref field of hydra.scala.syntax.Importer
-importerWithRef :: Typed.TypedTerm Syntax.Importer -> Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.Importer
-importerWithRef original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Importer"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "ref"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "importees"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Importer"),
-              Core.projectionFieldName = (Core.Name "importees")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.Init
-init :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [[Syntax.Data]] -> Typed.TypedTerm Syntax.Init
-init tpe name argss =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Init"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "argss"),
-          Core.fieldTerm = (Typed.unTypedTerm argss)}]}))
-
--- | DSL accessor for the argss field of hydra.scala.syntax.Init
-initArgss :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm [[Syntax.Data]]
-initArgss x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Init"),
-        Core.projectionFieldName = (Core.Name "argss")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.Init
-initName :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.Name
-initName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Init"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.Init
-initTpe :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.Type
-initTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Init"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the argss field of hydra.scala.syntax.Init
-initWithArgss :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm [[Syntax.Data]] -> Typed.TypedTerm Syntax.Init
-initWithArgss original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Init"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Init"),
-              Core.projectionFieldName = (Core.Name "tpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Init"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "argss"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.Init
-initWithName :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Init
-initWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Init"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Init"),
-              Core.projectionFieldName = (Core.Name "tpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "argss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Init"),
-              Core.projectionFieldName = (Core.Name "argss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.Init
-initWithTpe :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Init
-initWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Init"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Init"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "argss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Init"),
-              Core.projectionFieldName = (Core.Name "argss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.InterpolateData
-interpolateData :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.Lit] -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.InterpolateData
-interpolateData prefix parts args =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "prefix"),
-          Core.fieldTerm = (Typed.unTypedTerm prefix)},
-        Core.Field {
-          Core.fieldName = (Core.Name "parts"),
-          Core.fieldTerm = (Typed.unTypedTerm parts)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm args)}]}))
-
--- | DSL accessor for the args field of hydra.scala.syntax.InterpolateData
-interpolateDataArgs :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm [Syntax.Data]
-interpolateDataArgs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-        Core.projectionFieldName = (Core.Name "args")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the parts field of hydra.scala.syntax.InterpolateData
-interpolateDataParts :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm [Syntax.Lit]
-interpolateDataParts x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-        Core.projectionFieldName = (Core.Name "parts")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the prefix field of hydra.scala.syntax.InterpolateData
-interpolateDataPrefix :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm Syntax.NameData
-interpolateDataPrefix x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-        Core.projectionFieldName = (Core.Name "prefix")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the args field of hydra.scala.syntax.InterpolateData
-interpolateDataWithArgs :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.InterpolateData
-interpolateDataWithArgs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "prefix"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-              Core.projectionFieldName = (Core.Name "prefix")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "parts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-              Core.projectionFieldName = (Core.Name "parts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the parts field of hydra.scala.syntax.InterpolateData
-interpolateDataWithParts :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm [Syntax.Lit] -> Typed.TypedTerm Syntax.InterpolateData
-interpolateDataWithParts original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "prefix"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-              Core.projectionFieldName = (Core.Name "prefix")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "parts"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-              Core.projectionFieldName = (Core.Name "args")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the prefix field of hydra.scala.syntax.InterpolateData
-interpolateDataWithPrefix :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.InterpolateData
-interpolateDataWithPrefix original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "prefix"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "parts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-              Core.projectionFieldName = (Core.Name "parts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolateData"),
-              Core.projectionFieldName = (Core.Name "args")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.InterpolatePat
-interpolatePat :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.Lit] -> Typed.TypedTerm Syntax.InterpolatePat
-interpolatePat prefix parts =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.InterpolatePat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "prefix"),
-          Core.fieldTerm = (Typed.unTypedTerm prefix)},
-        Core.Field {
-          Core.fieldName = (Core.Name "parts"),
-          Core.fieldTerm = (Typed.unTypedTerm parts)}]}))
-
--- | DSL accessor for the parts field of hydra.scala.syntax.InterpolatePat
-interpolatePatParts :: Typed.TypedTerm Syntax.InterpolatePat -> Typed.TypedTerm [Syntax.Lit]
-interpolatePatParts x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolatePat"),
-        Core.projectionFieldName = (Core.Name "parts")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the prefix field of hydra.scala.syntax.InterpolatePat
-interpolatePatPrefix :: Typed.TypedTerm Syntax.InterpolatePat -> Typed.TypedTerm Syntax.NameData
-interpolatePatPrefix x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolatePat"),
-        Core.projectionFieldName = (Core.Name "prefix")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the parts field of hydra.scala.syntax.InterpolatePat
-interpolatePatWithParts :: Typed.TypedTerm Syntax.InterpolatePat -> Typed.TypedTerm [Syntax.Lit] -> Typed.TypedTerm Syntax.InterpolatePat
-interpolatePatWithParts original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.InterpolatePat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "prefix"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolatePat"),
-              Core.projectionFieldName = (Core.Name "prefix")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "parts"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the prefix field of hydra.scala.syntax.InterpolatePat
-interpolatePatWithPrefix :: Typed.TypedTerm Syntax.InterpolatePat -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.InterpolatePat
-interpolatePatWithPrefix original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.InterpolatePat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "prefix"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "parts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.InterpolatePat"),
-              Core.projectionFieldName = (Core.Name "parts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.LambdaType
-lambdaType :: Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.LambdaType
-lambdaType tparams tpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.LambdaType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)}]}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.LambdaType
-lambdaTypeTparams :: Typed.TypedTerm Syntax.LambdaType -> Typed.TypedTerm [Syntax.ParamType]
-lambdaTypeTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.LambdaType"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.LambdaType
-lambdaTypeTpe :: Typed.TypedTerm Syntax.LambdaType -> Typed.TypedTerm Syntax.Type
-lambdaTypeTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.LambdaType"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.LambdaType
-lambdaTypeWithTparams :: Typed.TypedTerm Syntax.LambdaType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.LambdaType
-lambdaTypeWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.LambdaType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.LambdaType"),
-              Core.projectionFieldName = (Core.Name "tpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.LambdaType
-lambdaTypeWithTpe :: Typed.TypedTerm Syntax.LambdaType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.LambdaType
-lambdaTypeWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.LambdaType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.LambdaType"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the boolean variant of hydra.scala.syntax.Lit
-litBoolean :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Lit
-litBoolean x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "boolean"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the byte variant of hydra.scala.syntax.Lit
-litByte :: Typed.TypedTerm I.Int8 -> Typed.TypedTerm Syntax.Lit
-litByte x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "byte"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the bytes variant of hydra.scala.syntax.Lit
-litBytes :: Typed.TypedTerm [Int] -> Typed.TypedTerm Syntax.Lit
-litBytes x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "bytes"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the char variant of hydra.scala.syntax.Lit
-litChar :: Typed.TypedTerm Int -> Typed.TypedTerm Syntax.Lit
-litChar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "char"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the double variant of hydra.scala.syntax.Lit
-litDouble :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.Lit
-litDouble x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "double"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the float variant of hydra.scala.syntax.Lit
-litFloat :: Typed.TypedTerm Float -> Typed.TypedTerm Syntax.Lit
-litFloat x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "float"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the int variant of hydra.scala.syntax.Lit
-litInt :: Typed.TypedTerm Int -> Typed.TypedTerm Syntax.Lit
-litInt x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "int"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the long variant of hydra.scala.syntax.Lit
-litLong :: Typed.TypedTerm I.Int64 -> Typed.TypedTerm Syntax.Lit
-litLong x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "long"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the null variant of hydra.scala.syntax.Lit
-litNull :: Typed.TypedTerm Syntax.Lit
-litNull =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "null"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the short variant of hydra.scala.syntax.Lit
-litShort :: Typed.TypedTerm I.Int16 -> Typed.TypedTerm Syntax.Lit
-litShort x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "short"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the string variant of hydra.scala.syntax.Lit
-litString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Lit
-litString x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "string"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the symbol variant of hydra.scala.syntax.Lit
-litSymbol :: Typed.TypedTerm Syntax.ScalaSymbol -> Typed.TypedTerm Syntax.Lit
-litSymbol x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "symbol"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the unit variant of hydra.scala.syntax.Lit
-litUnit :: Typed.TypedTerm Syntax.Lit
-litUnit =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Lit"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "unit"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL constructor for hydra.scala.syntax.MatchData
-matchData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm Syntax.MatchData
-matchData expr cases =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.MatchData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm expr)},
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Typed.unTypedTerm cases)}]}))
-
--- | DSL accessor for the cases field of hydra.scala.syntax.MatchData
-matchDataCases :: Typed.TypedTerm Syntax.MatchData -> Typed.TypedTerm [Syntax.Case]
-matchDataCases x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MatchData"),
-        Core.projectionFieldName = (Core.Name "cases")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the expr field of hydra.scala.syntax.MatchData
-matchDataExpr :: Typed.TypedTerm Syntax.MatchData -> Typed.TypedTerm Syntax.Data
-matchDataExpr x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MatchData"),
-        Core.projectionFieldName = (Core.Name "expr")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the cases field of hydra.scala.syntax.MatchData
-matchDataWithCases :: Typed.TypedTerm Syntax.MatchData -> Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm Syntax.MatchData
-matchDataWithCases original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.MatchData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MatchData"),
-              Core.projectionFieldName = (Core.Name "expr")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the expr field of hydra.scala.syntax.MatchData
-matchDataWithExpr :: Typed.TypedTerm Syntax.MatchData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.MatchData
-matchDataWithExpr original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.MatchData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MatchData"),
-              Core.projectionFieldName = (Core.Name "cases")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.MatchType
-matchType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm [Syntax.TypeCase] -> Typed.TypedTerm Syntax.MatchType
-matchType tpe cases =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.MatchType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Typed.unTypedTerm cases)}]}))
-
--- | DSL accessor for the cases field of hydra.scala.syntax.MatchType
-matchTypeCases :: Typed.TypedTerm Syntax.MatchType -> Typed.TypedTerm [Syntax.TypeCase]
-matchTypeCases x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MatchType"),
-        Core.projectionFieldName = (Core.Name "cases")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.MatchType
-matchTypeTpe :: Typed.TypedTerm Syntax.MatchType -> Typed.TypedTerm Syntax.Type
-matchTypeTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MatchType"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the cases field of hydra.scala.syntax.MatchType
-matchTypeWithCases :: Typed.TypedTerm Syntax.MatchType -> Typed.TypedTerm [Syntax.TypeCase] -> Typed.TypedTerm Syntax.MatchType
-matchTypeWithCases original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.MatchType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MatchType"),
-              Core.projectionFieldName = (Core.Name "tpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.MatchType
-matchTypeWithTpe :: Typed.TypedTerm Syntax.MatchType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.MatchType
-matchTypeWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.MatchType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MatchType"),
-              Core.projectionFieldName = (Core.Name "cases")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the self variant of hydra.scala.syntax.Member
-memberSelf :: Typed.TypedTerm Syntax.Self -> Typed.TypedTerm Syntax.Member
-memberSelf x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Member"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "self"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the term variant of hydra.scala.syntax.Member
-memberTerm :: Typed.TypedTerm Syntax.DataMember -> Typed.TypedTerm Syntax.Member
-memberTerm x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Member"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "term"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the termParam variant of hydra.scala.syntax.Member
-memberTermParam :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm Syntax.Member
-memberTermParam x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Member"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "termParam"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the type variant of hydra.scala.syntax.Member
-memberType :: Typed.TypedTerm Syntax.TypeMember -> Typed.TypedTerm Syntax.Member
-memberType x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Member"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "type"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the typeParam variant of hydra.scala.syntax.Member
-memberTypeParam :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm Syntax.Member
-memberTypeParam x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Member"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "typeParam"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.MethodType
-methodType :: Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.MethodType
-methodType paramss tpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.MethodType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Typed.unTypedTerm paramss)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)}]}))
-
--- | DSL accessor for the paramss field of hydra.scala.syntax.MethodType
-methodTypeParamss :: Typed.TypedTerm Syntax.MethodType -> Typed.TypedTerm [[Syntax.ParamData]]
-methodTypeParamss x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MethodType"),
-        Core.projectionFieldName = (Core.Name "paramss")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.MethodType
-methodTypeTpe :: Typed.TypedTerm Syntax.MethodType -> Typed.TypedTerm Syntax.Type
-methodTypeTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MethodType"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the paramss field of hydra.scala.syntax.MethodType
-methodTypeWithParamss :: Typed.TypedTerm Syntax.MethodType -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.MethodType
-methodTypeWithParamss original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.MethodType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MethodType"),
-              Core.projectionFieldName = (Core.Name "tpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.MethodType
-methodTypeWithTpe :: Typed.TypedTerm Syntax.MethodType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.MethodType
-methodTypeWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.MethodType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.MethodType"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the abstract variant of hydra.scala.syntax.Mod
-modAbstract :: Typed.TypedTerm Syntax.Mod
-modAbstract =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "abstract"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the annot variant of hydra.scala.syntax.Mod
-modAnnot :: Typed.TypedTerm Syntax.AnnotMod -> Typed.TypedTerm Syntax.Mod
-modAnnot x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "annot"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the case variant of hydra.scala.syntax.Mod
-modCase :: Typed.TypedTerm Syntax.Mod
-modCase =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "case"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the contravariant variant of hydra.scala.syntax.Mod
-modContravariant :: Typed.TypedTerm Syntax.Mod
-modContravariant =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "contravariant"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the covariant variant of hydra.scala.syntax.Mod
-modCovariant :: Typed.TypedTerm Syntax.Mod
-modCovariant =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "covariant"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the final variant of hydra.scala.syntax.Mod
-modFinal :: Typed.TypedTerm Syntax.Mod
-modFinal =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "final"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the implicit variant of hydra.scala.syntax.Mod
-modImplicit :: Typed.TypedTerm Syntax.Mod
-modImplicit =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "implicit"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the infix variant of hydra.scala.syntax.Mod
-modInfix :: Typed.TypedTerm Syntax.Mod
-modInfix =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "infix"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the inline variant of hydra.scala.syntax.Mod
-modInline :: Typed.TypedTerm Syntax.Mod
-modInline =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "inline"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the lazy variant of hydra.scala.syntax.Mod
-modLazy :: Typed.TypedTerm Syntax.Mod
-modLazy =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "lazy"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the opaque variant of hydra.scala.syntax.Mod
-modOpaque :: Typed.TypedTerm Syntax.Mod
-modOpaque =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "opaque"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the open variant of hydra.scala.syntax.Mod
-modOpen :: Typed.TypedTerm Syntax.Mod
-modOpen =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "open"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the override variant of hydra.scala.syntax.Mod
-modOverride :: Typed.TypedTerm Syntax.Mod
-modOverride =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "override"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the private variant of hydra.scala.syntax.Mod
-modPrivate :: Typed.TypedTerm Syntax.PrivateMod -> Typed.TypedTerm Syntax.Mod
-modPrivate x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "private"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the protected variant of hydra.scala.syntax.Mod
-modProtected :: Typed.TypedTerm Syntax.ProtectedMod -> Typed.TypedTerm Syntax.Mod
-modProtected x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "protected"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the sealed variant of hydra.scala.syntax.Mod
-modSealed :: Typed.TypedTerm Syntax.Mod
-modSealed =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "sealed"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the super variant of hydra.scala.syntax.Mod
-modSuper :: Typed.TypedTerm Syntax.Mod
-modSuper =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "super"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the transparent variant of hydra.scala.syntax.Mod
-modTransparent :: Typed.TypedTerm Syntax.Mod
-modTransparent =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "transparent"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the using variant of hydra.scala.syntax.Mod
-modUsing :: Typed.TypedTerm Syntax.Mod
-modUsing =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "using"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the valParam variant of hydra.scala.syntax.Mod
-modValParam :: Typed.TypedTerm Syntax.Mod
-modValParam =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "valParam"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the varParam variant of hydra.scala.syntax.Mod
-modVarParam :: Typed.TypedTerm Syntax.Mod
-modVarParam =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Mod"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "varParam"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the anonymous variant of hydra.scala.syntax.Name
-nameAnonymous :: Typed.TypedTerm Syntax.Name
-nameAnonymous =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Name"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "anonymous"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL constructor for hydra.scala.syntax.NameData
-nameData :: Typed.TypedTerm Syntax.PredefString -> Typed.TypedTerm Syntax.NameData
-nameData value =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.NameData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm value)}]}))
-
--- | DSL accessor for the value field of hydra.scala.syntax.NameData
-nameDataValue :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.PredefString
-nameDataValue x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.NameData"),
-        Core.projectionFieldName = (Core.Name "value")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the value field of hydra.scala.syntax.NameData
-nameDataWithValue :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.PredefString -> Typed.TypedTerm Syntax.NameData
-nameDataWithValue original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.NameData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.NameImportee
-nameImportee :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.NameImportee
-nameImportee name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.NameImportee"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.NameImportee
-nameImporteeName :: Typed.TypedTerm Syntax.NameImportee -> Typed.TypedTerm Syntax.Name
-nameImporteeName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.NameImportee"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.NameImportee
-nameImporteeWithName :: Typed.TypedTerm Syntax.NameImportee -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.NameImportee
-nameImporteeWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.NameImportee"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the indeterminate variant of hydra.scala.syntax.Name
-nameIndeterminate :: Typed.TypedTerm Syntax.PredefString -> Typed.TypedTerm Syntax.Name
-nameIndeterminate x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Name"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "indeterminate"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.NameType
-nameType :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.NameType
-nameType value =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.NameType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm value)}]}))
-
--- | DSL accessor for the value field of hydra.scala.syntax.NameType
-nameTypeValue :: Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm String
-nameTypeValue x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.NameType"),
-        Core.projectionFieldName = (Core.Name "value")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the value field of hydra.scala.syntax.NameType
-nameTypeWithValue :: Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.NameType
-nameTypeWithValue original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.NameType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the value variant of hydra.scala.syntax.Name
-nameValue :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Name
-nameValue x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Name"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "value"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.NewAnonymousData
-newAnonymousData :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.NewAnonymousData
-newAnonymousData templ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.NewAnonymousData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "templ"),
-          Core.fieldTerm = (Typed.unTypedTerm templ)}]}))
-
--- | DSL accessor for the templ field of hydra.scala.syntax.NewAnonymousData
-newAnonymousDataTempl :: Typed.TypedTerm Syntax.NewAnonymousData -> Typed.TypedTerm Syntax.Template
-newAnonymousDataTempl x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.NewAnonymousData"),
-        Core.projectionFieldName = (Core.Name "templ")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the templ field of hydra.scala.syntax.NewAnonymousData
-newAnonymousDataWithTempl :: Typed.TypedTerm Syntax.NewAnonymousData -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.NewAnonymousData
-newAnonymousDataWithTempl original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.NewAnonymousData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "templ"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.NewData
-newData :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.NewData
-newData init =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.NewData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "init"),
-          Core.fieldTerm = (Typed.unTypedTerm init)}]}))
-
--- | DSL accessor for the init field of hydra.scala.syntax.NewData
-newDataInit :: Typed.TypedTerm Syntax.NewData -> Typed.TypedTerm Syntax.Init
-newDataInit x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.NewData"),
-        Core.projectionFieldName = (Core.Name "init")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the init field of hydra.scala.syntax.NewData
-newDataWithInit :: Typed.TypedTerm Syntax.NewData -> Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.NewData
-newDataWithInit original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.NewData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "init"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ObjectDefn
-objectDefn :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ObjectDefn
-objectDefn name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ObjectDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.ObjectDefn
-objectDefnName :: Typed.TypedTerm Syntax.ObjectDefn -> Typed.TypedTerm Syntax.NameData
-objectDefnName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ObjectDefn"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.ObjectDefn
-objectDefnWithName :: Typed.TypedTerm Syntax.ObjectDefn -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ObjectDefn
-objectDefnWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ObjectDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ObjectPkg
-objectPkg :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.ObjectPkg
-objectPkg mods name template =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Typed.unTypedTerm template)}]}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.ObjectPkg
-objectPkgMods :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm [Syntax.Mod]
-objectPkgMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.ObjectPkg
-objectPkgName :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm Syntax.NameData
-objectPkgName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the template field of hydra.scala.syntax.ObjectPkg
-objectPkgTemplate :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm Syntax.Template
-objectPkgTemplate x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-        Core.projectionFieldName = (Core.Name "template")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.ObjectPkg
-objectPkgWithMods :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ObjectPkg
-objectPkgWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.ObjectPkg
-objectPkgWithName :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ObjectPkg
-objectPkgWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the template field of hydra.scala.syntax.ObjectPkg
-objectPkgWithTemplate :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.ObjectPkg
-objectPkgWithTemplate original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ObjectPkg"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.OrType
-orType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.OrType
-orType lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.OrType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the lhs field of hydra.scala.syntax.OrType
-orTypeLhs :: Typed.TypedTerm Syntax.OrType -> Typed.TypedTerm Syntax.Type
-orTypeLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.OrType"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.OrType
-orTypeRhs :: Typed.TypedTerm Syntax.OrType -> Typed.TypedTerm Syntax.Type
-orTypeRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.OrType"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.scala.syntax.OrType
-orTypeWithLhs :: Typed.TypedTerm Syntax.OrType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.OrType
-orTypeWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.OrType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.OrType"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.OrType
-orTypeWithRhs :: Typed.TypedTerm Syntax.OrType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.OrType
-orTypeWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.OrType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.OrType"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ParamData
-paramData :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.ParamData
-paramData mods name decltpe default_ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm decltpe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm default_)}]}))
-
--- | DSL accessor for the decltpe field of hydra.scala.syntax.ParamData
-paramDataDecltpe :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm (Maybe Syntax.Type)
-paramDataDecltpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-        Core.projectionFieldName = (Core.Name "decltpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the default field of hydra.scala.syntax.ParamData
-paramDataDefault :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm (Maybe Syntax.Data)
-paramDataDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-        Core.projectionFieldName = (Core.Name "default")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.ParamData
-paramDataMods :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm [Syntax.Mod]
-paramDataMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.ParamData
-paramDataName :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm Syntax.Name
-paramDataName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the decltpe field of hydra.scala.syntax.ParamData
-paramDataWithDecltpe :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.ParamData
-paramDataWithDecltpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the default field of hydra.scala.syntax.ParamData
-paramDataWithDefault :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.ParamData
-paramDataWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.ParamData
-paramDataWithMods :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ParamData
-paramDataWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.ParamData
-paramDataWithName :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ParamData
-paramDataWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamData"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ParamType
-paramType :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm [Syntax.TypeBounds] -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ParamType
-paramType mods name tparams tbounds vbounds cbounds =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tbounds"),
-          Core.fieldTerm = (Typed.unTypedTerm tbounds)},
-        Core.Field {
-          Core.fieldName = (Core.Name "vbounds"),
-          Core.fieldTerm = (Typed.unTypedTerm vbounds)},
-        Core.Field {
-          Core.fieldName = (Core.Name "cbounds"),
-          Core.fieldTerm = (Typed.unTypedTerm cbounds)}]}))
-
--- | DSL accessor for the cbounds field of hydra.scala.syntax.ParamType
-paramTypeCbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Type]
-paramTypeCbounds x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-        Core.projectionFieldName = (Core.Name "cbounds")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.ParamType
-paramTypeMods :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Mod]
-paramTypeMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.ParamType
-paramTypeName :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm Syntax.Name
-paramTypeName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tbounds field of hydra.scala.syntax.ParamType
-paramTypeTbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.TypeBounds]
-paramTypeTbounds x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-        Core.projectionFieldName = (Core.Name "tbounds")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.ParamType
-paramTypeTparams :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.ParamType]
-paramTypeTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the vbounds field of hydra.scala.syntax.ParamType
-paramTypeVbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Type]
-paramTypeVbounds x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-        Core.projectionFieldName = (Core.Name "vbounds")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the cbounds field of hydra.scala.syntax.ParamType
-paramTypeWithCbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ParamType
-paramTypeWithCbounds original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "tbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "vbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "vbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "cbounds"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.ParamType
-paramTypeWithMods :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ParamType
-paramTypeWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "tbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "vbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "vbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "cbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "cbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.ParamType
-paramTypeWithName :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ParamType
-paramTypeWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "tbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "vbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "vbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "cbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "cbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tbounds field of hydra.scala.syntax.ParamType
-paramTypeWithTbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.TypeBounds] -> Typed.TypedTerm Syntax.ParamType
-paramTypeWithTbounds original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tbounds"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "vbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "vbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "cbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "cbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.ParamType
-paramTypeWithTparams :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.ParamType
-paramTypeWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "tbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "vbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "vbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "cbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "cbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the vbounds field of hydra.scala.syntax.ParamType
-paramTypeWithVbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ParamType
-paramTypeWithVbounds original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "tbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "vbounds"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "cbounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ParamType"),
-              Core.projectionFieldName = (Core.Name "cbounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.PartialFunctionData
-partialFunctionData :: Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm Syntax.PartialFunctionData
-partialFunctionData cases =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PartialFunctionData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Typed.unTypedTerm cases)}]}))
-
--- | DSL accessor for the cases field of hydra.scala.syntax.PartialFunctionData
-partialFunctionDataCases :: Typed.TypedTerm Syntax.PartialFunctionData -> Typed.TypedTerm [Syntax.Case]
-partialFunctionDataCases x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PartialFunctionData"),
-        Core.projectionFieldName = (Core.Name "cases")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the cases field of hydra.scala.syntax.PartialFunctionData
-partialFunctionDataWithCases :: Typed.TypedTerm Syntax.PartialFunctionData -> Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm Syntax.PartialFunctionData
-partialFunctionDataWithCases original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PartialFunctionData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the alternative variant of hydra.scala.syntax.Pat
-patAlternative :: Typed.TypedTerm Syntax.AlternativePat -> Typed.TypedTerm Syntax.Pat
-patAlternative x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "alternative"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the bind variant of hydra.scala.syntax.Pat
-patBind :: Typed.TypedTerm Syntax.BindPat -> Typed.TypedTerm Syntax.Pat
-patBind x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "bind"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the extract variant of hydra.scala.syntax.Pat
-patExtract :: Typed.TypedTerm Syntax.ExtractPat -> Typed.TypedTerm Syntax.Pat
-patExtract x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "extract"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the extractInfix variant of hydra.scala.syntax.Pat
-patExtractInfix :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm Syntax.Pat
-patExtractInfix x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "extractInfix"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the given variant of hydra.scala.syntax.Pat
-patGiven :: Typed.TypedTerm Syntax.GivenPat -> Typed.TypedTerm Syntax.Pat
-patGiven x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "given"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the interpolate variant of hydra.scala.syntax.Pat
-patInterpolate :: Typed.TypedTerm Syntax.InterpolatePat -> Typed.TypedTerm Syntax.Pat
-patInterpolate x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "interpolate"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the repeated variant of hydra.scala.syntax.Pat
-patRepeated :: Typed.TypedTerm Syntax.RepeatedPat -> Typed.TypedTerm Syntax.Pat
-patRepeated x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "repeated"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the seqWildcard variant of hydra.scala.syntax.Pat
-patSeqWildcard :: Typed.TypedTerm Syntax.Pat
-patSeqWildcard =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "seqWildcard"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the tuple variant of hydra.scala.syntax.Pat
-patTuple :: Typed.TypedTerm Syntax.TuplePat -> Typed.TypedTerm Syntax.Pat
-patTuple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "tuple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the typed variant of hydra.scala.syntax.Pat
-patTyped :: Typed.TypedTerm Syntax.TypedPat -> Typed.TypedTerm Syntax.Pat
-patTyped x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "typed"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the var variant of hydra.scala.syntax.Pat
-patVar :: Typed.TypedTerm Syntax.VarPat -> Typed.TypedTerm Syntax.Pat
-patVar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "var"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the wildcard variant of hydra.scala.syntax.Pat
-patWildcard :: Typed.TypedTerm Syntax.Pat
-patWildcard =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Pat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "wildcard"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL constructor for hydra.scala.syntax.Pkg
-pkg :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Pkg
-pkg name ref stats =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ref"),
-          Core.fieldTerm = (Typed.unTypedTerm ref)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm stats)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.Pkg
-pkgName :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm Syntax.NameData
-pkgName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the ref field of hydra.scala.syntax.Pkg
-pkgRef :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm Syntax.RefData
-pkgRef x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-        Core.projectionFieldName = (Core.Name "ref")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the stats field of hydra.scala.syntax.Pkg
-pkgStats :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm [Syntax.Stat]
-pkgStats x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-        Core.projectionFieldName = (Core.Name "stats")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.Pkg
-pkgWithName :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.Pkg
-pkgWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ref"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-              Core.projectionFieldName = (Core.Name "ref")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-              Core.projectionFieldName = (Core.Name "stats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the ref field of hydra.scala.syntax.Pkg
-pkgWithRef :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.Pkg
-pkgWithRef original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ref"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-              Core.projectionFieldName = (Core.Name "stats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the stats field of hydra.scala.syntax.Pkg
-pkgWithStats :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Pkg
-pkgWithStats original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ref"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Pkg"),
-              Core.projectionFieldName = (Core.Name "ref")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.PlaceholderType
-placeholderType :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm Syntax.PlaceholderType
-placeholderType bounds =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PlaceholderType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "bounds"),
-          Core.fieldTerm = (Typed.unTypedTerm bounds)}]}))
-
--- | DSL accessor for the bounds field of hydra.scala.syntax.PlaceholderType
-placeholderTypeBounds :: Typed.TypedTerm Syntax.PlaceholderType -> Typed.TypedTerm Syntax.TypeBounds
-placeholderTypeBounds x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PlaceholderType"),
-        Core.projectionFieldName = (Core.Name "bounds")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the bounds field of hydra.scala.syntax.PlaceholderType
-placeholderTypeWithBounds :: Typed.TypedTerm Syntax.PlaceholderType -> Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm Syntax.PlaceholderType
-placeholderTypeWithBounds original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PlaceholderType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "bounds"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.PolyFunctionData
-polyFunctionData :: Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.PolyFunctionData
-polyFunctionData tparams body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.scala.syntax.PolyFunctionData
-polyFunctionDataBody :: Typed.TypedTerm Syntax.PolyFunctionData -> Typed.TypedTerm Syntax.Data
-polyFunctionDataBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionData"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.PolyFunctionData
-polyFunctionDataTparams :: Typed.TypedTerm Syntax.PolyFunctionData -> Typed.TypedTerm [Syntax.ParamType]
-polyFunctionDataTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionData"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.scala.syntax.PolyFunctionData
-polyFunctionDataWithBody :: Typed.TypedTerm Syntax.PolyFunctionData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.PolyFunctionData
-polyFunctionDataWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionData"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.PolyFunctionData
-polyFunctionDataWithTparams :: Typed.TypedTerm Syntax.PolyFunctionData -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PolyFunctionData
-polyFunctionDataWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionData"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.PolyFunctionType
-polyFunctionType :: Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.PolyFunctionType
-polyFunctionType tparams tpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)}]}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.PolyFunctionType
-polyFunctionTypeTparams :: Typed.TypedTerm Syntax.PolyFunctionType -> Typed.TypedTerm [Syntax.ParamType]
-polyFunctionTypeTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionType"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.PolyFunctionType
-polyFunctionTypeTpe :: Typed.TypedTerm Syntax.PolyFunctionType -> Typed.TypedTerm Syntax.Type
-polyFunctionTypeTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionType"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.PolyFunctionType
-polyFunctionTypeWithTparams :: Typed.TypedTerm Syntax.PolyFunctionType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PolyFunctionType
-polyFunctionTypeWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionType"),
-              Core.projectionFieldName = (Core.Name "tpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.PolyFunctionType
-polyFunctionTypeWithTpe :: Typed.TypedTerm Syntax.PolyFunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.PolyFunctionType
-polyFunctionTypeWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PolyFunctionType"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for the hydra.scala.syntax.PredefString wrapper
-predefString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.PredefString
-predefString x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.scala.syntax.PredefString"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.scala.syntax.PrimaryCtor
-primaryCtor :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.PrimaryCtor
-primaryCtor mods name paramss =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Typed.unTypedTerm paramss)}]}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.PrimaryCtor
-primaryCtorMods :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm [Syntax.Mod]
-primaryCtorMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.PrimaryCtor
-primaryCtorName :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Name
-primaryCtorName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramss field of hydra.scala.syntax.PrimaryCtor
-primaryCtorParamss :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm [[Syntax.ParamData]]
-primaryCtorParamss x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-        Core.projectionFieldName = (Core.Name "paramss")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.PrimaryCtor
-primaryCtorWithMods :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.PrimaryCtor
-primaryCtorWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.PrimaryCtor
-primaryCtorWithName :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.PrimaryCtor
-primaryCtorWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramss field of hydra.scala.syntax.PrimaryCtor
-primaryCtorWithParamss :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.PrimaryCtor
-primaryCtorWithParamss original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PrimaryCtor"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.PrivateMod
-privateMod :: Typed.TypedTerm Syntax.Ref -> Typed.TypedTerm Syntax.PrivateMod
-privateMod within =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PrivateMod"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "within"),
-          Core.fieldTerm = (Typed.unTypedTerm within)}]}))
-
--- | DSL updater for the within field of hydra.scala.syntax.PrivateMod
-privateModWithWithin :: Typed.TypedTerm Syntax.PrivateMod -> Typed.TypedTerm Syntax.Ref -> Typed.TypedTerm Syntax.PrivateMod
-privateModWithWithin original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.PrivateMod"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "within"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL accessor for the within field of hydra.scala.syntax.PrivateMod
-privateModWithin :: Typed.TypedTerm Syntax.PrivateMod -> Typed.TypedTerm Syntax.Ref
-privateModWithin x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.PrivateMod"),
-        Core.projectionFieldName = (Core.Name "within")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.scala.syntax.ProjectType
-projectType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.ProjectType
-projectType qual name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ProjectType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qual"),
-          Core.fieldTerm = (Typed.unTypedTerm qual)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.ProjectType
-projectTypeName :: Typed.TypedTerm Syntax.ProjectType -> Typed.TypedTerm Syntax.NameType
-projectTypeName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ProjectType"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the qual field of hydra.scala.syntax.ProjectType
-projectTypeQual :: Typed.TypedTerm Syntax.ProjectType -> Typed.TypedTerm Syntax.Type
-projectTypeQual x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ProjectType"),
-        Core.projectionFieldName = (Core.Name "qual")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.ProjectType
-projectTypeWithName :: Typed.TypedTerm Syntax.ProjectType -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.ProjectType
-projectTypeWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ProjectType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qual"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ProjectType"),
-              Core.projectionFieldName = (Core.Name "qual")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the qual field of hydra.scala.syntax.ProjectType
-projectTypeWithQual :: Typed.TypedTerm Syntax.ProjectType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ProjectType
-projectTypeWithQual original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ProjectType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qual"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ProjectType"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ProtectedMod
-protectedMod :: Typed.TypedTerm Syntax.Ref -> Typed.TypedTerm Syntax.ProtectedMod
-protectedMod within =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ProtectedMod"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "within"),
-          Core.fieldTerm = (Typed.unTypedTerm within)}]}))
-
--- | DSL updater for the within field of hydra.scala.syntax.ProtectedMod
-protectedModWithWithin :: Typed.TypedTerm Syntax.ProtectedMod -> Typed.TypedTerm Syntax.Ref -> Typed.TypedTerm Syntax.ProtectedMod
-protectedModWithWithin original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ProtectedMod"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "within"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL accessor for the within field of hydra.scala.syntax.ProtectedMod
-protectedModWithin :: Typed.TypedTerm Syntax.ProtectedMod -> Typed.TypedTerm Syntax.Ref
-protectedModWithin x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ProtectedMod"),
-        Core.projectionFieldName = (Core.Name "within")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL injection for the anonymous variant of hydra.scala.syntax.RefData
-refDataAnonymous :: Typed.TypedTerm Syntax.AnonymousData -> Typed.TypedTerm Syntax.RefData
-refDataAnonymous x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.RefData"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "anonymous"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the applyUnary variant of hydra.scala.syntax.RefData
-refDataApplyUnary :: Typed.TypedTerm Syntax.ApplyUnaryData -> Typed.TypedTerm Syntax.RefData
-refDataApplyUnary x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.RefData"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "applyUnary"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the name variant of hydra.scala.syntax.RefData
-refDataName :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.RefData
-refDataName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.RefData"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "name"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the select variant of hydra.scala.syntax.RefData
-refDataSelect :: Typed.TypedTerm Syntax.SelectData -> Typed.TypedTerm Syntax.RefData
-refDataSelect x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.RefData"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "select"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the super variant of hydra.scala.syntax.RefData
-refDataSuper :: Typed.TypedTerm Syntax.SuperData -> Typed.TypedTerm Syntax.RefData
-refDataSuper x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.RefData"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "super"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the this variant of hydra.scala.syntax.RefData
-refDataThis :: Typed.TypedTerm Syntax.ThisData -> Typed.TypedTerm Syntax.RefData
-refDataThis x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.RefData"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "this"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the init variant of hydra.scala.syntax.Ref
-refInit :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.Ref
-refInit x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Ref"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "init"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the name variant of hydra.scala.syntax.Ref
-refName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Ref
-refName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Ref"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "name"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the name variant of hydra.scala.syntax.RefType
-refTypeName :: Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.RefType
-refTypeName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.RefType"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "name"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the project variant of hydra.scala.syntax.RefType
-refTypeProject :: Typed.TypedTerm Syntax.ProjectType -> Typed.TypedTerm Syntax.RefType
-refTypeProject x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.RefType"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "project"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the select variant of hydra.scala.syntax.RefType
-refTypeSelect :: Typed.TypedTerm Syntax.SelectType -> Typed.TypedTerm Syntax.RefType
-refTypeSelect x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.RefType"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "select"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the singleton variant of hydra.scala.syntax.RefType
-refTypeSingleton :: Typed.TypedTerm Syntax.SingletonType -> Typed.TypedTerm Syntax.RefType
-refTypeSingleton x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.RefType"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "singleton"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.RefineType
-refineType :: Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.RefineType
-refineType tpe stats =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RefineType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm stats)}]}))
-
--- | DSL accessor for the stats field of hydra.scala.syntax.RefineType
-refineTypeStats :: Typed.TypedTerm Syntax.RefineType -> Typed.TypedTerm [Syntax.Stat]
-refineTypeStats x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RefineType"),
-        Core.projectionFieldName = (Core.Name "stats")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.RefineType
-refineTypeTpe :: Typed.TypedTerm Syntax.RefineType -> Typed.TypedTerm (Maybe Syntax.Type)
-refineTypeTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RefineType"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the stats field of hydra.scala.syntax.RefineType
-refineTypeWithStats :: Typed.TypedTerm Syntax.RefineType -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.RefineType
-refineTypeWithStats original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RefineType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RefineType"),
-              Core.projectionFieldName = (Core.Name "tpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.RefineType
-refineTypeWithTpe :: Typed.TypedTerm Syntax.RefineType -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.RefineType
-refineTypeWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RefineType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RefineType"),
-              Core.projectionFieldName = (Core.Name "stats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.RenameImportee
-renameImportee :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RenameImportee
-renameImportee name rename =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RenameImportee"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rename"),
-          Core.fieldTerm = (Typed.unTypedTerm rename)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.RenameImportee
-renameImporteeName :: Typed.TypedTerm Syntax.RenameImportee -> Typed.TypedTerm Syntax.Name
-renameImporteeName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RenameImportee"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rename field of hydra.scala.syntax.RenameImportee
-renameImporteeRename :: Typed.TypedTerm Syntax.RenameImportee -> Typed.TypedTerm Syntax.Name
-renameImporteeRename x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RenameImportee"),
-        Core.projectionFieldName = (Core.Name "rename")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.RenameImportee
-renameImporteeWithName :: Typed.TypedTerm Syntax.RenameImportee -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RenameImportee
-renameImporteeWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RenameImportee"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rename"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RenameImportee"),
-              Core.projectionFieldName = (Core.Name "rename")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rename field of hydra.scala.syntax.RenameImportee
-renameImporteeWithRename :: Typed.TypedTerm Syntax.RenameImportee -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RenameImportee
-renameImporteeWithRename original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RenameImportee"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RenameImportee"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rename"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.RepeatedData
-repeatedData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.RepeatedData
-repeatedData expr =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RepeatedData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm expr)}]}))
-
--- | DSL accessor for the expr field of hydra.scala.syntax.RepeatedData
-repeatedDataExpr :: Typed.TypedTerm Syntax.RepeatedData -> Typed.TypedTerm Syntax.Data
-repeatedDataExpr x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RepeatedData"),
-        Core.projectionFieldName = (Core.Name "expr")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the expr field of hydra.scala.syntax.RepeatedData
-repeatedDataWithExpr :: Typed.TypedTerm Syntax.RepeatedData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.RepeatedData
-repeatedDataWithExpr original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RepeatedData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.RepeatedEnumCaseDefn
-repeatedEnumCaseDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm [Syntax.NameData] -> Typed.TypedTerm Syntax.RepeatedEnumCaseDefn
-repeatedEnumCaseDefn mods cases =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Typed.unTypedTerm cases)}]}))
-
--- | DSL accessor for the cases field of hydra.scala.syntax.RepeatedEnumCaseDefn
-repeatedEnumCaseDefnCases :: Typed.TypedTerm Syntax.RepeatedEnumCaseDefn -> Typed.TypedTerm [Syntax.NameData]
-repeatedEnumCaseDefnCases x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
-        Core.projectionFieldName = (Core.Name "cases")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.RepeatedEnumCaseDefn
-repeatedEnumCaseDefnMods :: Typed.TypedTerm Syntax.RepeatedEnumCaseDefn -> Typed.TypedTerm [Syntax.Mod]
-repeatedEnumCaseDefnMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the cases field of hydra.scala.syntax.RepeatedEnumCaseDefn
-repeatedEnumCaseDefnWithCases :: Typed.TypedTerm Syntax.RepeatedEnumCaseDefn -> Typed.TypedTerm [Syntax.NameData] -> Typed.TypedTerm Syntax.RepeatedEnumCaseDefn
-repeatedEnumCaseDefnWithCases original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.RepeatedEnumCaseDefn
-repeatedEnumCaseDefnWithMods :: Typed.TypedTerm Syntax.RepeatedEnumCaseDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.RepeatedEnumCaseDefn
-repeatedEnumCaseDefnWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
-              Core.projectionFieldName = (Core.Name "cases")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.RepeatedPat
-repeatedPat :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.RepeatedPat
-repeatedPat name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RepeatedPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.RepeatedPat
-repeatedPatName :: Typed.TypedTerm Syntax.RepeatedPat -> Typed.TypedTerm Syntax.NameData
-repeatedPatName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RepeatedPat"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.RepeatedPat
-repeatedPatWithName :: Typed.TypedTerm Syntax.RepeatedPat -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.RepeatedPat
-repeatedPatWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RepeatedPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.RepeatedType
-repeatedType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.RepeatedType
-repeatedType tpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RepeatedType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm tpe)}]}))
-
--- | DSL accessor for the tpe field of hydra.scala.syntax.RepeatedType
-repeatedTypeTpe :: Typed.TypedTerm Syntax.RepeatedType -> Typed.TypedTerm Syntax.Type
-repeatedTypeTpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.RepeatedType"),
-        Core.projectionFieldName = (Core.Name "tpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the tpe field of hydra.scala.syntax.RepeatedType
-repeatedTypeWithTpe :: Typed.TypedTerm Syntax.RepeatedType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.RepeatedType
-repeatedTypeWithTpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.RepeatedType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "tpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ReturnData
-returnData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ReturnData
-returnData expr =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ReturnData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm expr)}]}))
-
--- | DSL accessor for the expr field of hydra.scala.syntax.ReturnData
-returnDataExpr :: Typed.TypedTerm Syntax.ReturnData -> Typed.TypedTerm Syntax.Data
-returnDataExpr x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ReturnData"),
-        Core.projectionFieldName = (Core.Name "expr")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the expr field of hydra.scala.syntax.ReturnData
-returnDataWithExpr :: Typed.TypedTerm Syntax.ReturnData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ReturnData
-returnDataWithExpr original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ReturnData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ScalaSymbol
-scalaSymbol :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.ScalaSymbol
-scalaSymbol name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ScalaSymbol"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.ScalaSymbol
-scalaSymbolName :: Typed.TypedTerm Syntax.ScalaSymbol -> Typed.TypedTerm String
-scalaSymbolName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ScalaSymbol"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.ScalaSymbol
-scalaSymbolWithName :: Typed.TypedTerm Syntax.ScalaSymbol -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.ScalaSymbol
-scalaSymbolWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ScalaSymbol"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.SecondaryCtor
-secondaryCtor :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Init -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.SecondaryCtor
-secondaryCtor mods name paramss init stats =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Typed.unTypedTerm paramss)},
-        Core.Field {
-          Core.fieldName = (Core.Name "init"),
-          Core.fieldTerm = (Typed.unTypedTerm init)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm stats)}]}))
-
--- | DSL accessor for the init field of hydra.scala.syntax.SecondaryCtor
-secondaryCtorInit :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm Syntax.Init
-secondaryCtorInit x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-        Core.projectionFieldName = (Core.Name "init")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.SecondaryCtor
-secondaryCtorMods :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [Syntax.Mod]
-secondaryCtorMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.SecondaryCtor
-secondaryCtorName :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm Syntax.Name
-secondaryCtorName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramss field of hydra.scala.syntax.SecondaryCtor
-secondaryCtorParamss :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [[Syntax.ParamData]]
-secondaryCtorParamss x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-        Core.projectionFieldName = (Core.Name "paramss")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the stats field of hydra.scala.syntax.SecondaryCtor
-secondaryCtorStats :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [Syntax.Stat]
-secondaryCtorStats x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-        Core.projectionFieldName = (Core.Name "stats")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the init field of hydra.scala.syntax.SecondaryCtor
-secondaryCtorWithInit :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.SecondaryCtor
-secondaryCtorWithInit original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "init"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "stats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.SecondaryCtor
-secondaryCtorWithMods :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.SecondaryCtor
-secondaryCtorWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "init"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "init")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "stats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.SecondaryCtor
-secondaryCtorWithName :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SecondaryCtor
-secondaryCtorWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "init"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "init")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "stats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramss field of hydra.scala.syntax.SecondaryCtor
-secondaryCtorWithParamss :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.SecondaryCtor
-secondaryCtorWithParamss original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "init"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "init")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "stats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the stats field of hydra.scala.syntax.SecondaryCtor
-secondaryCtorWithStats :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.SecondaryCtor
-secondaryCtorWithStats original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramss"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "paramss")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "init"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SecondaryCtor"),
-              Core.projectionFieldName = (Core.Name "init")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.SelectData
-selectData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.SelectData
-selectData qual name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SelectData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qual"),
-          Core.fieldTerm = (Typed.unTypedTerm qual)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.SelectData
-selectDataName :: Typed.TypedTerm Syntax.SelectData -> Typed.TypedTerm Syntax.NameData
-selectDataName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SelectData"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the qual field of hydra.scala.syntax.SelectData
-selectDataQual :: Typed.TypedTerm Syntax.SelectData -> Typed.TypedTerm Syntax.Data
-selectDataQual x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SelectData"),
-        Core.projectionFieldName = (Core.Name "qual")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.SelectData
-selectDataWithName :: Typed.TypedTerm Syntax.SelectData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.SelectData
-selectDataWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SelectData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qual"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SelectData"),
-              Core.projectionFieldName = (Core.Name "qual")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the qual field of hydra.scala.syntax.SelectData
-selectDataWithQual :: Typed.TypedTerm Syntax.SelectData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.SelectData
-selectDataWithQual original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SelectData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qual"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SelectData"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.SelectType
-selectType :: Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.SelectType
-selectType qual name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SelectType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qual"),
-          Core.fieldTerm = (Typed.unTypedTerm qual)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.SelectType
-selectTypeName :: Typed.TypedTerm Syntax.SelectType -> Typed.TypedTerm Syntax.NameType
-selectTypeName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SelectType"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the qual field of hydra.scala.syntax.SelectType
-selectTypeQual :: Typed.TypedTerm Syntax.SelectType -> Typed.TypedTerm Syntax.RefData
-selectTypeQual x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SelectType"),
-        Core.projectionFieldName = (Core.Name "qual")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.SelectType
-selectTypeWithName :: Typed.TypedTerm Syntax.SelectType -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.SelectType
-selectTypeWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SelectType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qual"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SelectType"),
-              Core.projectionFieldName = (Core.Name "qual")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the qual field of hydra.scala.syntax.SelectType
-selectTypeWithQual :: Typed.TypedTerm Syntax.SelectType -> Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.SelectType
-selectTypeWithQual original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SelectType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qual"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SelectType"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.scala.syntax.Self wrapper
-self :: Typed.TypedTerm () -> Typed.TypedTerm Syntax.Self
-self x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.scala.syntax.Self"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.scala.syntax.SingletonType
-singletonType :: Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.SingletonType
-singletonType ref =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SingletonType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "ref"),
-          Core.fieldTerm = (Typed.unTypedTerm ref)}]}))
-
--- | DSL accessor for the ref field of hydra.scala.syntax.SingletonType
-singletonTypeRef :: Typed.TypedTerm Syntax.SingletonType -> Typed.TypedTerm Syntax.RefData
-singletonTypeRef x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SingletonType"),
-        Core.projectionFieldName = (Core.Name "ref")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the ref field of hydra.scala.syntax.SingletonType
-singletonTypeWithRef :: Typed.TypedTerm Syntax.SingletonType -> Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.SingletonType
-singletonTypeWithRef original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SingletonType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "ref"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.Source
-source :: Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Source
-source stats =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Source"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm stats)}]}))
-
--- | DSL accessor for the stats field of hydra.scala.syntax.Source
-sourceStats :: Typed.TypedTerm Syntax.Source -> Typed.TypedTerm [Syntax.Stat]
-sourceStats x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Source"),
-        Core.projectionFieldName = (Core.Name "stats")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the stats field of hydra.scala.syntax.Source
-sourceWithStats :: Typed.TypedTerm Syntax.Source -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Source
-sourceWithStats original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Source"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the decl variant of hydra.scala.syntax.Stat
-statDecl :: Typed.TypedTerm Syntax.Decl -> Typed.TypedTerm Syntax.Stat
-statDecl x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Stat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "decl"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the defn variant of hydra.scala.syntax.Stat
-statDefn :: Typed.TypedTerm Syntax.Defn -> Typed.TypedTerm Syntax.Stat
-statDefn x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Stat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "defn"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the importExport variant of hydra.scala.syntax.Stat
-statImportExport :: Typed.TypedTerm Syntax.ImportExportStat -> Typed.TypedTerm Syntax.Stat
-statImportExport x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Stat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "importExport"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the term variant of hydra.scala.syntax.Stat
-statTerm :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Stat
-statTerm x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Stat"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "term"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.SuperData
-superData :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SuperData
-superData thisp superp =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SuperData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "thisp"),
-          Core.fieldTerm = (Typed.unTypedTerm thisp)},
-        Core.Field {
-          Core.fieldName = (Core.Name "superp"),
-          Core.fieldTerm = (Typed.unTypedTerm superp)}]}))
-
--- | DSL accessor for the superp field of hydra.scala.syntax.SuperData
-superDataSuperp :: Typed.TypedTerm Syntax.SuperData -> Typed.TypedTerm Syntax.Name
-superDataSuperp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SuperData"),
-        Core.projectionFieldName = (Core.Name "superp")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the thisp field of hydra.scala.syntax.SuperData
-superDataThisp :: Typed.TypedTerm Syntax.SuperData -> Typed.TypedTerm Syntax.Name
-superDataThisp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SuperData"),
-        Core.projectionFieldName = (Core.Name "thisp")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the superp field of hydra.scala.syntax.SuperData
-superDataWithSuperp :: Typed.TypedTerm Syntax.SuperData -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SuperData
-superDataWithSuperp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SuperData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "thisp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SuperData"),
-              Core.projectionFieldName = (Core.Name "thisp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "superp"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the thisp field of hydra.scala.syntax.SuperData
-superDataWithThisp :: Typed.TypedTerm Syntax.SuperData -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SuperData
-superDataWithThisp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.SuperData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "thisp"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "superp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.SuperData"),
-              Core.projectionFieldName = (Core.Name "superp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.Template
-template :: Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm [Syntax.Init] -> Typed.TypedTerm Syntax.Self -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Template
-template early inits self stats =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Template"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "early"),
-          Core.fieldTerm = (Typed.unTypedTerm early)},
-        Core.Field {
-          Core.fieldName = (Core.Name "inits"),
-          Core.fieldTerm = (Typed.unTypedTerm inits)},
-        Core.Field {
-          Core.fieldName = (Core.Name "self"),
-          Core.fieldTerm = (Typed.unTypedTerm self)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm stats)}]}))
-
--- | DSL accessor for the early field of hydra.scala.syntax.Template
-templateEarly :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Stat]
-templateEarly x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-        Core.projectionFieldName = (Core.Name "early")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the inits field of hydra.scala.syntax.Template
-templateInits :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Init]
-templateInits x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-        Core.projectionFieldName = (Core.Name "inits")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the self field of hydra.scala.syntax.Template
-templateSelf :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.Self
-templateSelf x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-        Core.projectionFieldName = (Core.Name "self")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the stats field of hydra.scala.syntax.Template
-templateStats :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Stat]
-templateStats x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-        Core.projectionFieldName = (Core.Name "stats")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the early field of hydra.scala.syntax.Template
-templateWithEarly :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Template
-templateWithEarly original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Template"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "early"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "inits"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "inits")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "self"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "self")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "stats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the inits field of hydra.scala.syntax.Template
-templateWithInits :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Init] -> Typed.TypedTerm Syntax.Template
-templateWithInits original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Template"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "early"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "early")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inits"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "self"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "self")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "stats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the self field of hydra.scala.syntax.Template
-templateWithSelf :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.Self -> Typed.TypedTerm Syntax.Template
-templateWithSelf original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Template"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "early"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "early")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inits"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "inits")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "self"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "stats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the stats field of hydra.scala.syntax.Template
-templateWithStats :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Template
-templateWithStats original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.Template"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "early"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "early")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inits"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "inits")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "self"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.Template"),
-              Core.projectionFieldName = (Core.Name "self")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stats"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for the hydra.scala.syntax.ThisData wrapper
-thisData :: Typed.TypedTerm () -> Typed.TypedTerm Syntax.ThisData
-thisData x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.scala.syntax.ThisData"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.scala.syntax.ThrowData
-throwData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ThrowData
-throwData expr =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ThrowData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm expr)}]}))
-
--- | DSL accessor for the expr field of hydra.scala.syntax.ThrowData
-throwDataExpr :: Typed.TypedTerm Syntax.ThrowData -> Typed.TypedTerm Syntax.Data
-throwDataExpr x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ThrowData"),
-        Core.projectionFieldName = (Core.Name "expr")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the expr field of hydra.scala.syntax.ThrowData
-throwDataWithExpr :: Typed.TypedTerm Syntax.ThrowData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ThrowData
-throwDataWithExpr original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ThrowData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.TraitDefn
-traitDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.TraitDefn
-traitDefn mods name tparams ctor template =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Typed.unTypedTerm ctor)},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Typed.unTypedTerm template)}]}))
-
--- | DSL accessor for the ctor field of hydra.scala.syntax.TraitDefn
-traitDefnCtor :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.PrimaryCtor
-traitDefnCtor x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-        Core.projectionFieldName = (Core.Name "ctor")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.TraitDefn
-traitDefnMods :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm [Syntax.Mod]
-traitDefnMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.TraitDefn
-traitDefnName :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.NameType
-traitDefnName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the template field of hydra.scala.syntax.TraitDefn
-traitDefnTemplate :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.Template
-traitDefnTemplate x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-        Core.projectionFieldName = (Core.Name "template")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.TraitDefn
-traitDefnTparams :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm [Syntax.ParamType]
-traitDefnTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the ctor field of hydra.scala.syntax.TraitDefn
-traitDefnWithCtor :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.TraitDefn
-traitDefnWithCtor original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.TraitDefn
-traitDefnWithMods :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.TraitDefn
-traitDefnWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.TraitDefn
-traitDefnWithName :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.TraitDefn
-traitDefnWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the template field of hydra.scala.syntax.TraitDefn
-traitDefnWithTemplate :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.TraitDefn
-traitDefnWithTemplate original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.TraitDefn
-traitDefnWithTparams :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.TraitDefn
-traitDefnWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ctor"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "ctor")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "template"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TraitDefn"),
-              Core.projectionFieldName = (Core.Name "template")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the bounds variant of hydra.scala.syntax.Tree
-treeBounds :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm Syntax.Tree
-treeBounds x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "bounds"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the caseTree variant of hydra.scala.syntax.Tree
-treeCaseTree :: Typed.TypedTerm Syntax.CaseTree -> Typed.TypedTerm Syntax.Tree
-treeCaseTree x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "caseTree"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the ctor variant of hydra.scala.syntax.Tree
-treeCtor :: Typed.TypedTerm Syntax.Ctor -> Typed.TypedTerm Syntax.Tree
-treeCtor x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "ctor"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the enumerator variant of hydra.scala.syntax.Tree
-treeEnumerator :: Typed.TypedTerm Syntax.Enumerator -> Typed.TypedTerm Syntax.Tree
-treeEnumerator x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "enumerator"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the importee variant of hydra.scala.syntax.Tree
-treeImportee :: Typed.TypedTerm Syntax.Importee -> Typed.TypedTerm Syntax.Tree
-treeImportee x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "importee"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the importer variant of hydra.scala.syntax.Tree
-treeImporter :: Typed.TypedTerm Syntax.Importer -> Typed.TypedTerm Syntax.Tree
-treeImporter x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "importer"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the member variant of hydra.scala.syntax.Tree
-treeMember :: Typed.TypedTerm Syntax.Member -> Typed.TypedTerm Syntax.Tree
-treeMember x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "member"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the mod variant of hydra.scala.syntax.Tree
-treeMod :: Typed.TypedTerm Syntax.Mod -> Typed.TypedTerm Syntax.Tree
-treeMod x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "mod"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the pat variant of hydra.scala.syntax.Tree
-treePat :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Tree
-treePat x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "pat"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the ref variant of hydra.scala.syntax.Tree
-treeRef :: Typed.TypedTerm Syntax.Ref -> Typed.TypedTerm Syntax.Tree
-treeRef x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "ref"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the source variant of hydra.scala.syntax.Tree
-treeSource :: Typed.TypedTerm Syntax.Source -> Typed.TypedTerm Syntax.Tree
-treeSource x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "source"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the stat variant of hydra.scala.syntax.Tree
-treeStat :: Typed.TypedTerm Syntax.Stat -> Typed.TypedTerm Syntax.Tree
-treeStat x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "stat"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the template variant of hydra.scala.syntax.Tree
-treeTemplate :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.Tree
-treeTemplate x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "template"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the type variant of hydra.scala.syntax.Tree
-treeType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Tree
-treeType x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Tree"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "type"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.TryData
-tryData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.TryData
-tryData expr catchp finallyp =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm expr)},
-        Core.Field {
-          Core.fieldName = (Core.Name "catchp"),
-          Core.fieldTerm = (Typed.unTypedTerm catchp)},
-        Core.Field {
-          Core.fieldName = (Core.Name "finallyp"),
-          Core.fieldTerm = (Typed.unTypedTerm finallyp)}]}))
-
--- | DSL accessor for the catchp field of hydra.scala.syntax.TryData
-tryDataCatchp :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm [Syntax.Case]
-tryDataCatchp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-        Core.projectionFieldName = (Core.Name "catchp")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the expr field of hydra.scala.syntax.TryData
-tryDataExpr :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm Syntax.Data
-tryDataExpr x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-        Core.projectionFieldName = (Core.Name "expr")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the finallyp field of hydra.scala.syntax.TryData
-tryDataFinallyp :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm (Maybe Syntax.Data)
-tryDataFinallyp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-        Core.projectionFieldName = (Core.Name "finallyp")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the catchp field of hydra.scala.syntax.TryData
-tryDataWithCatchp :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm Syntax.TryData
-tryDataWithCatchp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-              Core.projectionFieldName = (Core.Name "expr")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "catchp"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "finallyp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-              Core.projectionFieldName = (Core.Name "finallyp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the expr field of hydra.scala.syntax.TryData
-tryDataWithExpr :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.TryData
-tryDataWithExpr original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "catchp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-              Core.projectionFieldName = (Core.Name "catchp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "finallyp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-              Core.projectionFieldName = (Core.Name "finallyp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the finallyp field of hydra.scala.syntax.TryData
-tryDataWithFinallyp :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.TryData
-tryDataWithFinallyp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-              Core.projectionFieldName = (Core.Name "expr")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "catchp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryData"),
-              Core.projectionFieldName = (Core.Name "catchp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "finallyp"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.TryWithHandlerData
-tryWithHandlerData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.TryWithHandlerData
-tryWithHandlerData expr catchp finallyp =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm expr)},
-        Core.Field {
-          Core.fieldName = (Core.Name "catchp"),
-          Core.fieldTerm = (Typed.unTypedTerm catchp)},
-        Core.Field {
-          Core.fieldName = (Core.Name "finallyp"),
-          Core.fieldTerm = (Typed.unTypedTerm finallyp)}]}))
-
--- | DSL accessor for the catchp field of hydra.scala.syntax.TryWithHandlerData
-tryWithHandlerDataCatchp :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm Syntax.Data
-tryWithHandlerDataCatchp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-        Core.projectionFieldName = (Core.Name "catchp")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the expr field of hydra.scala.syntax.TryWithHandlerData
-tryWithHandlerDataExpr :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm Syntax.Data
-tryWithHandlerDataExpr x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-        Core.projectionFieldName = (Core.Name "expr")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the finallyp field of hydra.scala.syntax.TryWithHandlerData
-tryWithHandlerDataFinallyp :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm (Maybe Syntax.Data)
-tryWithHandlerDataFinallyp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-        Core.projectionFieldName = (Core.Name "finallyp")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the catchp field of hydra.scala.syntax.TryWithHandlerData
-tryWithHandlerDataWithCatchp :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.TryWithHandlerData
-tryWithHandlerDataWithCatchp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-              Core.projectionFieldName = (Core.Name "expr")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "catchp"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "finallyp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-              Core.projectionFieldName = (Core.Name "finallyp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the expr field of hydra.scala.syntax.TryWithHandlerData
-tryWithHandlerDataWithExpr :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.TryWithHandlerData
-tryWithHandlerDataWithExpr original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "catchp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-              Core.projectionFieldName = (Core.Name "catchp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "finallyp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-              Core.projectionFieldName = (Core.Name "finallyp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the finallyp field of hydra.scala.syntax.TryWithHandlerData
-tryWithHandlerDataWithFinallyp :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.TryWithHandlerData
-tryWithHandlerDataWithFinallyp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-              Core.projectionFieldName = (Core.Name "expr")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "catchp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TryWithHandlerData"),
-              Core.projectionFieldName = (Core.Name "catchp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "finallyp"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.TupleData
-tupleData :: Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.TupleData
-tupleData args =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TupleData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm args)}]}))
-
--- | DSL accessor for the args field of hydra.scala.syntax.TupleData
-tupleDataArgs :: Typed.TypedTerm Syntax.TupleData -> Typed.TypedTerm [Syntax.Data]
-tupleDataArgs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TupleData"),
-        Core.projectionFieldName = (Core.Name "args")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the args field of hydra.scala.syntax.TupleData
-tupleDataWithArgs :: Typed.TypedTerm Syntax.TupleData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.TupleData
-tupleDataWithArgs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TupleData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.TuplePat
-tuplePat :: Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.TuplePat
-tuplePat args =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TuplePat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm args)}]}))
-
--- | DSL accessor for the args field of hydra.scala.syntax.TuplePat
-tuplePatArgs :: Typed.TypedTerm Syntax.TuplePat -> Typed.TypedTerm [Syntax.Pat]
-tuplePatArgs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TuplePat"),
-        Core.projectionFieldName = (Core.Name "args")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the args field of hydra.scala.syntax.TuplePat
-tuplePatWithArgs :: Typed.TypedTerm Syntax.TuplePat -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.TuplePat
-tuplePatWithArgs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TuplePat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.TupleType
-tupleType :: Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.TupleType
-tupleType args =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TupleType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm args)}]}))
-
--- | DSL accessor for the args field of hydra.scala.syntax.TupleType
-tupleTypeArgs :: Typed.TypedTerm Syntax.TupleType -> Typed.TypedTerm [Syntax.Type]
-tupleTypeArgs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TupleType"),
-        Core.projectionFieldName = (Core.Name "args")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the args field of hydra.scala.syntax.TupleType
-tupleTypeWithArgs :: Typed.TypedTerm Syntax.TupleType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.TupleType
-tupleTypeWithArgs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TupleType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "args"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the and variant of hydra.scala.syntax.Type
-typeAnd :: Typed.TypedTerm Syntax.AndType -> Typed.TypedTerm Syntax.Type
-typeAnd x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "and"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the annotate variant of hydra.scala.syntax.Type
-typeAnnotate :: Typed.TypedTerm Syntax.AnnotateType -> Typed.TypedTerm Syntax.Type
-typeAnnotate x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "annotate"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the anonymousName variant of hydra.scala.syntax.Type
-typeAnonymousName :: Typed.TypedTerm Syntax.AnonymousNameType -> Typed.TypedTerm Syntax.Type
-typeAnonymousName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "anonymousName"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the apply variant of hydra.scala.syntax.Type
-typeApply :: Typed.TypedTerm Syntax.ApplyType -> Typed.TypedTerm Syntax.Type
-typeApply x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "apply"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the applyInfix variant of hydra.scala.syntax.Type
-typeApplyInfix :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.Type
-typeApplyInfix x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "applyInfix"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.TypeBounds
-typeBounds :: Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.TypeBounds
-typeBounds lo hi =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeBounds"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lo"),
-          Core.fieldTerm = (Typed.unTypedTerm lo)},
-        Core.Field {
-          Core.fieldName = (Core.Name "hi"),
-          Core.fieldTerm = (Typed.unTypedTerm hi)}]}))
-
--- | DSL accessor for the hi field of hydra.scala.syntax.TypeBounds
-typeBoundsHi :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm (Maybe Syntax.Type)
-typeBoundsHi x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeBounds"),
-        Core.projectionFieldName = (Core.Name "hi")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the lo field of hydra.scala.syntax.TypeBounds
-typeBoundsLo :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm (Maybe Syntax.Type)
-typeBoundsLo x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeBounds"),
-        Core.projectionFieldName = (Core.Name "lo")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the hi field of hydra.scala.syntax.TypeBounds
-typeBoundsWithHi :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.TypeBounds
-typeBoundsWithHi original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeBounds"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lo"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeBounds"),
-              Core.projectionFieldName = (Core.Name "lo")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "hi"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the lo field of hydra.scala.syntax.TypeBounds
-typeBoundsWithLo :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.TypeBounds
-typeBoundsWithLo original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeBounds"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lo"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "hi"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeBounds"),
-              Core.projectionFieldName = (Core.Name "hi")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the byName variant of hydra.scala.syntax.Type
-typeByName :: Typed.TypedTerm Syntax.ByNameType -> Typed.TypedTerm Syntax.Type
-typeByName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "byName"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.TypeCase
-typeCase :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeCase
-typeCase pat body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeCase"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Typed.unTypedTerm pat)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.scala.syntax.TypeCase
-typeCaseBody :: Typed.TypedTerm Syntax.TypeCase -> Typed.TypedTerm Syntax.Type
-typeCaseBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeCase"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the pat field of hydra.scala.syntax.TypeCase
-typeCasePat :: Typed.TypedTerm Syntax.TypeCase -> Typed.TypedTerm Syntax.Type
-typeCasePat x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeCase"),
-        Core.projectionFieldName = (Core.Name "pat")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.scala.syntax.TypeCase
-typeCaseWithBody :: Typed.TypedTerm Syntax.TypeCase -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeCase
-typeCaseWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeCase"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeCase"),
-              Core.projectionFieldName = (Core.Name "pat")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the pat field of hydra.scala.syntax.TypeCase
-typeCaseWithPat :: Typed.TypedTerm Syntax.TypeCase -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeCase
-typeCaseWithPat original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeCase"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeCase"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the contextFunction variant of hydra.scala.syntax.Type
-typeContextFunction :: Typed.TypedTerm Syntax.ContextFunctionType -> Typed.TypedTerm Syntax.Type
-typeContextFunction x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "contextFunction"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.TypeDecl
-typeDecl :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm Syntax.TypeDecl
-typeDecl mods name tparams bounds =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "bounds"),
-          Core.fieldTerm = (Typed.unTypedTerm bounds)}]}))
-
--- | DSL accessor for the bounds field of hydra.scala.syntax.TypeDecl
-typeDeclBounds :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm Syntax.TypeBounds
-typeDeclBounds x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-        Core.projectionFieldName = (Core.Name "bounds")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.TypeDecl
-typeDeclMods :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm [Syntax.Mod]
-typeDeclMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.TypeDecl
-typeDeclName :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm Syntax.NameType
-typeDeclName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.TypeDecl
-typeDeclTparams :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm [Syntax.ParamType]
-typeDeclTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the bounds field of hydra.scala.syntax.TypeDecl
-typeDeclWithBounds :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm Syntax.TypeDecl
-typeDeclWithBounds original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "bounds"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.TypeDecl
-typeDeclWithMods :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.TypeDecl
-typeDeclWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "bounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "bounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.TypeDecl
-typeDeclWithName :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.TypeDecl
-typeDeclWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "bounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "bounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.TypeDecl
-typeDeclWithTparams :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.TypeDecl
-typeDeclWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "bounds"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDecl"),
-              Core.projectionFieldName = (Core.Name "bounds")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.TypeDefn
-typeDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeDefn
-typeDefn mods name tparams body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm tparams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.scala.syntax.TypeDefn
-typeDefnBody :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm Syntax.Type
-typeDefnBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.TypeDefn
-typeDefnMods :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm [Syntax.Mod]
-typeDefnMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.TypeDefn
-typeDefnName :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm Syntax.NameType
-typeDefnName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the tparams field of hydra.scala.syntax.TypeDefn
-typeDefnTparams :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm [Syntax.ParamType]
-typeDefnTparams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-        Core.projectionFieldName = (Core.Name "tparams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.scala.syntax.TypeDefn
-typeDefnWithBody :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeDefn
-typeDefnWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.TypeDefn
-typeDefnWithMods :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.TypeDefn
-typeDefnWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.scala.syntax.TypeDefn
-typeDefnWithName :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.TypeDefn
-typeDefnWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "tparams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tparams field of hydra.scala.syntax.TypeDefn
-typeDefnWithTparams :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.TypeDefn
-typeDefnWithTparams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tparams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeDefn"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the existential variant of hydra.scala.syntax.Type
-typeExistential :: Typed.TypedTerm Syntax.ExistentialType -> Typed.TypedTerm Syntax.Type
-typeExistential x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "existential"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the function variant of hydra.scala.syntax.Type
-typeFunction :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type
-typeFunction x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "function"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the implicitFunction variant of hydra.scala.syntax.Type
-typeImplicitFunction :: Typed.TypedTerm Syntax.ImplicitFunctionType -> Typed.TypedTerm Syntax.Type
-typeImplicitFunction x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "implicitFunction"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the lambda variant of hydra.scala.syntax.Type
-typeLambda :: Typed.TypedTerm Syntax.LambdaType -> Typed.TypedTerm Syntax.Type
-typeLambda x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "lambda"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the match variant of hydra.scala.syntax.Type
-typeMatch :: Typed.TypedTerm Syntax.MatchType -> Typed.TypedTerm Syntax.Type
-typeMatch x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "match"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.TypeMember
-typeMember :: Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.TypeMember
-typeMember name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeMember"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.TypeMember
-typeMemberName :: Typed.TypedTerm Syntax.TypeMember -> Typed.TypedTerm Syntax.NameType
-typeMemberName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypeMember"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.TypeMember
-typeMemberWithName :: Typed.TypedTerm Syntax.TypeMember -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.TypeMember
-typeMemberWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypeMember"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the method variant of hydra.scala.syntax.Type
-typeMethod :: Typed.TypedTerm Syntax.MethodType -> Typed.TypedTerm Syntax.Type
-typeMethod x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "method"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the or variant of hydra.scala.syntax.Type
-typeOr :: Typed.TypedTerm Syntax.OrType -> Typed.TypedTerm Syntax.Type
-typeOr x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "or"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the placeholder variant of hydra.scala.syntax.Type
-typePlaceholder :: Typed.TypedTerm Syntax.PlaceholderType -> Typed.TypedTerm Syntax.Type
-typePlaceholder x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "placeholder"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the polyFunction variant of hydra.scala.syntax.Type
-typePolyFunction :: Typed.TypedTerm Syntax.PolyFunctionType -> Typed.TypedTerm Syntax.Type
-typePolyFunction x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "polyFunction"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the ref variant of hydra.scala.syntax.Type
-typeRef :: Typed.TypedTerm Syntax.RefType -> Typed.TypedTerm Syntax.Type
-typeRef x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "ref"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the refine variant of hydra.scala.syntax.Type
-typeRefine :: Typed.TypedTerm Syntax.RefineType -> Typed.TypedTerm Syntax.Type
-typeRefine x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "refine"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the repeated variant of hydra.scala.syntax.Type
-typeRepeated :: Typed.TypedTerm Syntax.RepeatedType -> Typed.TypedTerm Syntax.Type
-typeRepeated x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "repeated"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the tuple variant of hydra.scala.syntax.Type
-typeTuple :: Typed.TypedTerm Syntax.TupleType -> Typed.TypedTerm Syntax.Type
-typeTuple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "tuple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the typedParam variant of hydra.scala.syntax.Type
-typeTypedParam :: Typed.TypedTerm Syntax.TypedParamType -> Typed.TypedTerm Syntax.Type
-typeTypedParam x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "typedParam"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the var variant of hydra.scala.syntax.Type
-typeVar :: Typed.TypedTerm Syntax.VarType -> Typed.TypedTerm Syntax.Type
-typeVar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "var"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the with variant of hydra.scala.syntax.Type
-typeWith :: Typed.TypedTerm Syntax.WithType -> Typed.TypedTerm Syntax.Type
-typeWith x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.scala.syntax.Type"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "with"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.scala.syntax.TypedParamType
-typedParamType :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedParamType
-typedParamType name typ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypedParamType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typ"),
-          Core.fieldTerm = (Typed.unTypedTerm typ)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.TypedParamType
-typedParamTypeName :: Typed.TypedTerm Syntax.TypedParamType -> Typed.TypedTerm Syntax.Name
-typedParamTypeName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypedParamType"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the typ field of hydra.scala.syntax.TypedParamType
-typedParamTypeTyp :: Typed.TypedTerm Syntax.TypedParamType -> Typed.TypedTerm Syntax.Type
-typedParamTypeTyp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypedParamType"),
-        Core.projectionFieldName = (Core.Name "typ")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.TypedParamType
-typedParamTypeWithName :: Typed.TypedTerm Syntax.TypedParamType -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TypedParamType
-typedParamTypeWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypedParamType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typ"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypedParamType"),
-              Core.projectionFieldName = (Core.Name "typ")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the typ field of hydra.scala.syntax.TypedParamType
-typedParamTypeWithTyp :: Typed.TypedTerm Syntax.TypedParamType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedParamType
-typedParamTypeWithTyp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypedParamType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypedParamType"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typ"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.TypedPat
-typedPat :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedPat
-typedPat lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypedPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the lhs field of hydra.scala.syntax.TypedPat
-typedPatLhs :: Typed.TypedTerm Syntax.TypedPat -> Typed.TypedTerm Syntax.Pat
-typedPatLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypedPat"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.TypedPat
-typedPatRhs :: Typed.TypedTerm Syntax.TypedPat -> Typed.TypedTerm Syntax.Type
-typedPatRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypedPat"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.scala.syntax.TypedPat
-typedPatWithLhs :: Typed.TypedTerm Syntax.TypedPat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.TypedPat
-typedPatWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypedPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypedPat"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.TypedPat
-typedPatWithRhs :: Typed.TypedTerm Syntax.TypedPat -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedPat
-typedPatWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.TypedPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.TypedPat"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL accessor for the body of hydra.scala.syntax.AnonymousData
-unAnonymousData :: Typed.TypedTerm Syntax.AnonymousData -> Typed.TypedTerm ()
-unAnonymousData x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.scala.syntax.AnonymousData")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.scala.syntax.AnonymousNameType
-unAnonymousNameType :: Typed.TypedTerm Syntax.AnonymousNameType -> Typed.TypedTerm ()
-unAnonymousNameType x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.scala.syntax.AnonymousNameType")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.scala.syntax.PredefString
-unPredefString :: Typed.TypedTerm Syntax.PredefString -> Typed.TypedTerm String
-unPredefString x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.scala.syntax.PredefString")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.scala.syntax.Self
-unSelf :: Typed.TypedTerm Syntax.Self -> Typed.TypedTerm ()
-unSelf x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.scala.syntax.Self")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.scala.syntax.ThisData
-unThisData :: Typed.TypedTerm Syntax.ThisData -> Typed.TypedTerm ()
-unThisData x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.scala.syntax.ThisData")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.scala.syntax.UnimportImportee
-unimportImportee :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.UnimportImportee
-unimportImportee name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.UnimportImportee"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.UnimportImportee
-unimportImporteeName :: Typed.TypedTerm Syntax.UnimportImportee -> Typed.TypedTerm Syntax.Name
-unimportImporteeName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.UnimportImportee"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.UnimportImportee
-unimportImporteeWithName :: Typed.TypedTerm Syntax.UnimportImportee -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.UnimportImportee
-unimportImporteeWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.UnimportImportee"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ValDecl
-valDecl :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ValDecl
-valDecl mods pats decltpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Typed.unTypedTerm pats)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm decltpe)}]}))
-
--- | DSL accessor for the decltpe field of hydra.scala.syntax.ValDecl
-valDeclDecltpe :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm Syntax.Type
-valDeclDecltpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-        Core.projectionFieldName = (Core.Name "decltpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.ValDecl
-valDeclMods :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm [Syntax.Mod]
-valDeclMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the pats field of hydra.scala.syntax.ValDecl
-valDeclPats :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm [Syntax.Pat]
-valDeclPats x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-        Core.projectionFieldName = (Core.Name "pats")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the decltpe field of hydra.scala.syntax.ValDecl
-valDeclWithDecltpe :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ValDecl
-valDeclWithDecltpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-              Core.projectionFieldName = (Core.Name "pats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.ValDecl
-valDeclWithMods :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ValDecl
-valDeclWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-              Core.projectionFieldName = (Core.Name "pats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the pats field of hydra.scala.syntax.ValDecl
-valDeclWithPats :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.ValDecl
-valDeclWithPats original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.ValDefn
-valDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ValDefn
-valDefn mods pats decltpe rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Typed.unTypedTerm pats)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm decltpe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the decltpe field of hydra.scala.syntax.ValDefn
-valDefnDecltpe :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm (Maybe Syntax.Type)
-valDefnDecltpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-        Core.projectionFieldName = (Core.Name "decltpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.ValDefn
-valDefnMods :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm [Syntax.Mod]
-valDefnMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the pats field of hydra.scala.syntax.ValDefn
-valDefnPats :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm [Syntax.Pat]
-valDefnPats x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-        Core.projectionFieldName = (Core.Name "pats")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.ValDefn
-valDefnRhs :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm Syntax.Data
-valDefnRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the decltpe field of hydra.scala.syntax.ValDefn
-valDefnWithDecltpe :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.ValDefn
-valDefnWithDecltpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "pats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.ValDefn
-valDefnWithMods :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ValDefn
-valDefnWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "pats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the pats field of hydra.scala.syntax.ValDefn
-valDefnWithPats :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.ValDefn
-valDefnWithPats original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.ValDefn
-valDefnWithRhs :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ValDefn
-valDefnWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "pats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.ValEnumerator
-valEnumerator :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ValEnumerator
-valEnumerator pat rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValEnumerator"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Typed.unTypedTerm pat)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the pat field of hydra.scala.syntax.ValEnumerator
-valEnumeratorPat :: Typed.TypedTerm Syntax.ValEnumerator -> Typed.TypedTerm Syntax.Pat
-valEnumeratorPat x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValEnumerator"),
-        Core.projectionFieldName = (Core.Name "pat")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.ValEnumerator
-valEnumeratorRhs :: Typed.TypedTerm Syntax.ValEnumerator -> Typed.TypedTerm Syntax.Data
-valEnumeratorRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValEnumerator"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the pat field of hydra.scala.syntax.ValEnumerator
-valEnumeratorWithPat :: Typed.TypedTerm Syntax.ValEnumerator -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.ValEnumerator
-valEnumeratorWithPat original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValEnumerator"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValEnumerator"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.ValEnumerator
-valEnumeratorWithRhs :: Typed.TypedTerm Syntax.ValEnumerator -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ValEnumerator
-valEnumeratorWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.ValEnumerator"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pat"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.ValEnumerator"),
-              Core.projectionFieldName = (Core.Name "pat")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.VarDecl
-varDecl :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.VarDecl
-varDecl mods pats decltpe =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Typed.unTypedTerm pats)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm decltpe)}]}))
-
--- | DSL accessor for the decltpe field of hydra.scala.syntax.VarDecl
-varDeclDecltpe :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm Syntax.Type
-varDeclDecltpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-        Core.projectionFieldName = (Core.Name "decltpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.VarDecl
-varDeclMods :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm [Syntax.Mod]
-varDeclMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the pats field of hydra.scala.syntax.VarDecl
-varDeclPats :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm [Syntax.Pat]
-varDeclPats x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-        Core.projectionFieldName = (Core.Name "pats")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the decltpe field of hydra.scala.syntax.VarDecl
-varDeclWithDecltpe :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.VarDecl
-varDeclWithDecltpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-              Core.projectionFieldName = (Core.Name "pats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.VarDecl
-varDeclWithMods :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.VarDecl
-varDeclWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-              Core.projectionFieldName = (Core.Name "pats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the pats field of hydra.scala.syntax.VarDecl
-varDeclWithPats :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.VarDecl
-varDeclWithPats original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDecl"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.VarDefn
-varDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.VarDefn
-varDefn mods pats decltpe rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm mods)},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Typed.unTypedTerm pats)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm decltpe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the decltpe field of hydra.scala.syntax.VarDefn
-varDefnDecltpe :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm Syntax.Type
-varDefnDecltpe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-        Core.projectionFieldName = (Core.Name "decltpe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the mods field of hydra.scala.syntax.VarDefn
-varDefnMods :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm [Syntax.Mod]
-varDefnMods x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-        Core.projectionFieldName = (Core.Name "mods")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the pats field of hydra.scala.syntax.VarDefn
-varDefnPats :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm [Syntax.Pat]
-varDefnPats x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-        Core.projectionFieldName = (Core.Name "pats")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.VarDefn
-varDefnRhs :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm (Maybe Syntax.Data)
-varDefnRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the decltpe field of hydra.scala.syntax.VarDefn
-varDefnWithDecltpe :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.VarDefn
-varDefnWithDecltpe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "pats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the mods field of hydra.scala.syntax.VarDefn
-varDefnWithMods :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.VarDefn
-varDefnWithMods original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "pats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the pats field of hydra.scala.syntax.VarDefn
-varDefnWithPats :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.VarDefn
-varDefnWithPats original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.VarDefn
-varDefnWithRhs :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.VarDefn
-varDefnWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "mods"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "mods")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "pats"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "pats")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "decltpe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarDefn"),
-              Core.projectionFieldName = (Core.Name "decltpe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.VarPat
-varPat :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.VarPat
-varPat name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.VarPat
-varPatName :: Typed.TypedTerm Syntax.VarPat -> Typed.TypedTerm Syntax.NameData
-varPatName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarPat"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.VarPat
-varPatWithName :: Typed.TypedTerm Syntax.VarPat -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.VarPat
-varPatWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarPat"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.VarType
-varType :: Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.VarType
-varType name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.scala.syntax.VarType
-varTypeName :: Typed.TypedTerm Syntax.VarType -> Typed.TypedTerm Syntax.NameType
-varTypeName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.VarType"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.scala.syntax.VarType
-varTypeWithName :: Typed.TypedTerm Syntax.VarType -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.VarType
-varTypeWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.VarType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.scala.syntax.WhileData
-whileData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.WhileData
-whileData expr body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.WhileData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm expr)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.scala.syntax.WhileData
-whileDataBody :: Typed.TypedTerm Syntax.WhileData -> Typed.TypedTerm Syntax.Data
-whileDataBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.WhileData"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the expr field of hydra.scala.syntax.WhileData
-whileDataExpr :: Typed.TypedTerm Syntax.WhileData -> Typed.TypedTerm Syntax.Data
-whileDataExpr x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.WhileData"),
-        Core.projectionFieldName = (Core.Name "expr")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.scala.syntax.WhileData
-whileDataWithBody :: Typed.TypedTerm Syntax.WhileData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.WhileData
-whileDataWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.WhileData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.WhileData"),
-              Core.projectionFieldName = (Core.Name "expr")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the expr field of hydra.scala.syntax.WhileData
-whileDataWithExpr :: Typed.TypedTerm Syntax.WhileData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.WhileData
-whileDataWithExpr original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.WhileData"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expr"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.WhileData"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.scala.syntax.WithType
-withType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.WithType
-withType lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.WithType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the lhs field of hydra.scala.syntax.WithType
-withTypeLhs :: Typed.TypedTerm Syntax.WithType -> Typed.TypedTerm Syntax.Type
-withTypeLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.WithType"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.scala.syntax.WithType
-withTypeRhs :: Typed.TypedTerm Syntax.WithType -> Typed.TypedTerm Syntax.Type
-withTypeRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.scala.syntax.WithType"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.scala.syntax.WithType
-withTypeWithLhs :: Typed.TypedTerm Syntax.WithType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.WithType
-withTypeWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.WithType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.WithType"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.scala.syntax.WithType
-withTypeWithRhs :: Typed.TypedTerm Syntax.WithType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.WithType
-withTypeWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.scala.syntax.WithType"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.scala.syntax.WithType"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
diff --git a/src/main/haskell/Hydra/Scala/Coder.hs b/src/main/haskell/Hydra/Scala/Coder.hs
--- a/src/main/haskell/Hydra/Scala/Coder.hs
+++ b/src/main/haskell/Hydra/Scala/Coder.hs
@@ -4,68 +4,68 @@
 
 module Hydra.Scala.Coder where
 
-import qualified Hydra.Analysis as Analysis
-import qualified Hydra.Annotations as Annotations
-import qualified Hydra.Arity as Arity
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Constants as Constants
-import qualified Hydra.Core as Core
-import qualified Hydra.Docs as Docs
-import qualified Hydra.Environment as Environment
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.File as ErrorFile
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Error.System as ErrorSystem
-import qualified Hydra.Errors as Errors
-import qualified Hydra.File as File
-import qualified Hydra.Formatting as Formatting
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Inference as Inference
-import qualified Hydra.Json.Model as Model
-import qualified Hydra.Lexical as Lexical
-import qualified Hydra.Overlay.Haskell.Lib.Eithers as Eithers
-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality
-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists
-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals
-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic
-import qualified Hydra.Overlay.Haskell.Lib.Maps as Maps
-import qualified Hydra.Overlay.Haskell.Lib.Math as Math
-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals
-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering
-import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs
-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets
-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings
-import qualified Hydra.Names as Names
-import qualified Hydra.Packaging as Packaging
-import qualified Hydra.Parsing as Parsing
-import qualified Hydra.Paths as Paths
-import qualified Hydra.Predicates as Predicates
-import qualified Hydra.Print.Core as PrintCore
-import qualified Hydra.Query as Query
-import qualified Hydra.Reduction as Reduction
-import qualified Hydra.Relational as Relational
-import qualified Hydra.Resolution as Resolution
+import qualified Hydra.Core.Analysis as Analysis
+import qualified Hydra.Core.Annotations as Annotations
+import qualified Hydra.Core.Arity as Arity
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Constants as Constants
+import qualified Hydra.Core.Docs as Docs
+import qualified Hydra.Core.Environment as Environment
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.File as ErrorFile
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Error.System as ErrorSystem
+import qualified Hydra.Core.Errors as Errors
+import qualified Hydra.Core.File as File
+import qualified Hydra.Core.Formatting as Formatting
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Inference as Inference
+import qualified Hydra.Core.Json.Model as JsonModel
+import qualified Hydra.Core.Lexical as Lexical
+import qualified Hydra.Core.Overlay.Haskell.Lib.Eithers as Eithers
+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality
+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists
+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic
+import qualified Hydra.Core.Overlay.Haskell.Lib.Maps as Maps
+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math
+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering
+import qualified Hydra.Core.Overlay.Haskell.Lib.Pairs as Pairs
+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets
+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Names as Names
+import qualified Hydra.Core.Packaging as Packaging
+import qualified Hydra.Core.Parsing as Parsing
+import qualified Hydra.Core.Paths as Paths
+import qualified Hydra.Core.Predicates as Predicates
+import qualified Hydra.Core.Print.Model as PrintModel
+import qualified Hydra.Core.Query as Query
+import qualified Hydra.Core.Reduction as Reduction
+import qualified Hydra.Core.Relational as Relational
+import qualified Hydra.Core.Resolution as Resolution
+import qualified Hydra.Core.Scoping as Scoping
+import qualified Hydra.Core.Serialization as Serialization
+import qualified Hydra.Core.Sorting as Sorting
+import qualified Hydra.Core.Strip as Strip
+import qualified Hydra.Core.System as System
+import qualified Hydra.Core.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+import qualified Hydra.Core.Time as Time
+import qualified Hydra.Core.Topology as Topology
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Core.Typing as Typing
+import qualified Hydra.Core.Util as Util
+import qualified Hydra.Core.Validation as Validation
+import qualified Hydra.Core.Variables as Variables
+import qualified Hydra.Core.Variants as Variants
 import qualified Hydra.Scala.Language as Language
 import qualified Hydra.Scala.Serde as Serde
 import qualified Hydra.Scala.Syntax as Syntax
 import qualified Hydra.Scala.Utils as Utils
-import qualified Hydra.Scoping as Scoping
-import qualified Hydra.Serialization as Serialization
-import qualified Hydra.Sorting as Sorting
-import qualified Hydra.Strip as Strip
-import qualified Hydra.System as System
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-import qualified Hydra.Time as Time
-import qualified Hydra.Topology as Topology
-import qualified Hydra.Typed as Typed
-import qualified Hydra.Typing as Typing
-import qualified Hydra.Util as Util
-import qualified Hydra.Validation as Validation
-import qualified Hydra.Variables as Variables
-import qualified Hydra.Variants as Variants
 import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
 import qualified Data.Scientific as Sci
 import Data.Void
@@ -73,38 +73,38 @@
 import qualified Data.Set as S
 
 -- | Apply a variable to a term, performing substitution for lambdas
-applyVar :: Core.Term -> Core.Name -> Core.Term
+applyVar :: Model.Term -> Model.Name -> Model.Term
 applyVar fterm avar =
 
-      let v = Core.unName avar
+      let v = Model.unName avar
       in case (Strip.deannotateAndDetypeTerm fterm) of
-        Core.TermLambda v0 ->
-          let lamParam = Core.lambdaParameter v0
-              lamBody = Core.lambdaBody v0
+        Model.TermLambda v0 ->
+          let lamParam = Model.lambdaParameter v0
+              lamBody = Model.lambdaBody v0
           in (Logic.ifElse (Variables.isFreeVariableInTerm lamParam lamBody) lamBody (Variables.substituteVariable lamParam avar lamBody))
-        _ -> Core.TermApplication (Core.Application {
-          Core.applicationFunction = fterm,
-          Core.applicationArgument = (Core.TermVariable avar)})
+        _ -> Model.TermApplication (Model.Application {
+          Model.applicationFunction = fterm,
+          Model.applicationArgument = (Model.TermVariable avar)})
 
 -- | Collect the set of free type variables occurring in a type (#589)
-collectTypeVars :: Core.Type -> S.Set Core.Name
+collectTypeVars :: Model.Type -> S.Set Model.Name
 collectTypeVars typ = collectTypeVarsGo (Strip.deannotateType typ)
 
 -- | Recursively collect free type variables from a type (#589)
-collectTypeVarsGo :: Core.Type -> S.Set Core.Name
+collectTypeVarsGo :: Model.Type -> S.Set Model.Name
 collectTypeVarsGo t =
     case (Strip.deannotateType t) of
-      Core.TypeVariable v0 -> Sets.singleton v0
-      Core.TypeFunction v0 -> Sets.union (collectTypeVarsGo (Strip.deannotateType (Core.functionTypeDomain v0))) (collectTypeVarsGo (Strip.deannotateType (Core.functionTypeCodomain v0)))
-      Core.TypeApplication v0 -> Sets.union (collectTypeVarsGo (Strip.deannotateType (Core.applicationTypeFunction v0))) (collectTypeVarsGo (Strip.deannotateType (Core.applicationTypeArgument v0)))
-      Core.TypeList v0 -> collectTypeVarsGo (Strip.deannotateType v0)
-      Core.TypeSet v0 -> collectTypeVarsGo (Strip.deannotateType v0)
-      Core.TypeOptional v0 -> collectTypeVarsGo (Strip.deannotateType v0)
-      Core.TypeEffect v0 -> collectTypeVarsGo (Strip.deannotateType v0)
-      Core.TypeMap v0 -> Sets.union (collectTypeVarsGo (Strip.deannotateType (Core.mapTypeKeys v0))) (collectTypeVarsGo (Strip.deannotateType (Core.mapTypeValues v0)))
-      Core.TypePair v0 -> Sets.union (collectTypeVarsGo (Strip.deannotateType (Core.pairTypeFirst v0))) (collectTypeVarsGo (Strip.deannotateType (Core.pairTypeSecond v0)))
-      Core.TypeEither v0 -> Sets.union (collectTypeVarsGo (Strip.deannotateType (Core.eitherTypeLeft v0))) (collectTypeVarsGo (Strip.deannotateType (Core.eitherTypeRight v0)))
-      Core.TypeForall v0 -> collectTypeVarsGo (Strip.deannotateType (Core.forallTypeBody v0))
+      Model.TypeVariable v0 -> Sets.singleton v0
+      Model.TypeFunction v0 -> Sets.union (collectTypeVarsGo (Strip.deannotateType (Model.functionTypeDomain v0))) (collectTypeVarsGo (Strip.deannotateType (Model.functionTypeCodomain v0)))
+      Model.TypeApplication v0 -> Sets.union (collectTypeVarsGo (Strip.deannotateType (Model.applicationTypeFunction v0))) (collectTypeVarsGo (Strip.deannotateType (Model.applicationTypeArgument v0)))
+      Model.TypeList v0 -> collectTypeVarsGo (Strip.deannotateType v0)
+      Model.TypeSet v0 -> collectTypeVarsGo (Strip.deannotateType v0)
+      Model.TypeOptional v0 -> collectTypeVarsGo (Strip.deannotateType v0)
+      Model.TypeEffect v0 -> collectTypeVarsGo (Strip.deannotateType v0)
+      Model.TypeMap v0 -> Sets.union (collectTypeVarsGo (Strip.deannotateType (Model.mapTypeKeys v0))) (collectTypeVarsGo (Strip.deannotateType (Model.mapTypeValues v0)))
+      Model.TypePair v0 -> Sets.union (collectTypeVarsGo (Strip.deannotateType (Model.pairTypeFirst v0))) (collectTypeVarsGo (Strip.deannotateType (Model.pairTypeSecond v0)))
+      Model.TypeEither v0 -> Sets.union (collectTypeVarsGo (Strip.deannotateType (Model.eitherTypeLeft v0))) (collectTypeVarsGo (Strip.deannotateType (Model.eitherTypeRight v0)))
+      Model.TypeForall v0 -> collectTypeVarsGo (Strip.deannotateType (Model.forallTypeBody v0))
       _ -> Sets.empty
 
 -- | Construct a Scala package from a Hydra module and its definitions
@@ -127,11 +127,11 @@
           termDeclStats])})))))
 
 -- | Filter/rewrite a raw type-application list against callee-scheme over-generalization (#589)
-correctTypeApps :: Core.Name -> [Core.Type] -> Graph.Graph -> Either t0 [Core.Type]
+correctTypeApps :: Model.Name -> [Model.Type] -> Graph.Graph -> Either t0 [Model.Type]
 correctTypeApps name fallbackTypeApps g =
-    Optionals.match (Lexical.lookupBinding g name) (Right fallbackTypeApps) (\el -> Optionals.match (Core.bindingTypeScheme el) (Right fallbackTypeApps) (\ts ->
-      let schemeType = Core.typeSchemeBody ts
-          allSchemeVars = Lists.filter (\vv -> isSimpleName vv) (Core.typeSchemeVariables ts)
+    Optionals.match (Lexical.lookupBinding g name) (Right fallbackTypeApps) (\el -> Optionals.match (Model.bindingTypeScheme el) (Right fallbackTypeApps) (\ts ->
+      let schemeType = Model.typeSchemeBody ts
+          allSchemeVars = Lists.filter (\vv -> isSimpleName vv) (Model.typeSchemeVariables ts)
           schemeTypeVars = collectTypeVars schemeType
           usedFlags = Lists.map (\vv -> Sets.member vv schemeTypeVars) allSchemeVars
           usedSchemeVars = filterByFlags allSchemeVars usedFlags
@@ -150,14 +150,14 @@
       in (Right filteredFallback)))
 
 -- | Count the curried function parameters of a type (#589)
-countFunctionParams :: Core.Type -> Int
+countFunctionParams :: Model.Type -> Int
 countFunctionParams t =
     case (Strip.deannotateType t) of
-      Core.TypeFunction v0 -> Math.add 1 (countFunctionParams (Core.functionTypeCodomain v0))
+      Model.TypeFunction v0 -> Math.add 1 (countFunctionParams (Model.functionTypeCodomain v0))
       _ -> 0
 
 -- | Detect callee-scheme type vars forced together/to-concrete by the callee's own domain shape (#589)
-detectAccumulatorUnification :: [Core.Type] -> Core.Type -> [Core.Name] -> M.Map Core.Name Core.Type
+detectAccumulatorUnification :: [Model.Type] -> Model.Type -> [Model.Name] -> M.Map Model.Name Model.Type
 detectAccumulatorUnification doms cod tparams =
 
       let tparamSet = Sets.fromList tparams
@@ -169,14 +169,14 @@
           directInputVars = Sets.fromList (Lists.map (\p -> Pairs.first p) directPairs)
           codVar =
                   case (Strip.deannotateType cod) of
-                    Core.TypeVariable v0 -> Just v0
+                    Model.TypeVariable v0 -> Just v0
                     _ -> Nothing
           directRefSubst = directRefSubstitution directInputVars codVar groupedDirect
           codSubst =
                   Optionals.match (findPairFirst cod) Maps.empty (\cv -> Logic.ifElse (Maps.member cv selfRefSubst) Maps.empty (Optionals.match (findSelfRefVar groupedByInput) Maps.empty (\refVar -> Logic.ifElse (Equality.equal cv refVar) Maps.empty (Maps.singleton cv refVar))))
           domVars = Sets.fromList (Lists.bind doms (\d -> Sets.toList (collectTypeVars d)))
           danglingSubst =
-                  Optionals.match (findPairFirst cod) Maps.empty (\cv -> Logic.ifElse (Sets.member cv domVars) Maps.empty (Optionals.match (findSelfRefVar groupedByInput) Maps.empty (\refVar -> Maps.singleton cv (Core.TypeVariable refVar))))
+                  Optionals.match (findPairFirst cod) Maps.empty (\cv -> Logic.ifElse (Sets.member cv domVars) Maps.empty (Optionals.match (findSelfRefVar groupedByInput) Maps.empty (\refVar -> Maps.singleton cv (Model.TypeVariable refVar))))
       in (Maps.union (Maps.union (Maps.union (nameMapToTypeMap selfRefSubst) (nameMapToTypeMap codSubst)) danglingSubst) (nameMapToTypeMap directRefSubst))
 
 -- | Compute the direct-return substitution over grouped accumulator pairs (#589)
@@ -195,59 +195,61 @@
       in (Logic.ifElse (Logic.and (Ordering.gte selfRefCount 2) (Logic.not (Lists.isEmpty safeNonSelfVars))) (Lists.foldl (\s -> \vv -> Maps.insert vv inVar s) subst safeNonSelfVars) subst)
 
 -- | Drop N domain types from a function type, returning the remaining type
-dropDomains :: Int -> Core.Type -> Core.Type
+dropDomains :: Int -> Model.Type -> Model.Type
 dropDomains n t =
     Logic.ifElse (Ordering.lte n 0) t (case (Strip.deannotateType t) of
-      Core.TypeFunction v0 -> dropDomains (Math.sub n 1) (Core.functionTypeCodomain v0)
-      Core.TypeForall v0 -> dropDomains n (Core.forallTypeBody v0)
+      Model.TypeFunction v0 -> dropDomains (Math.sub n 1) (Model.functionTypeCodomain v0)
+      Model.TypeForall v0 -> dropDomains n (Model.forallTypeBody v0)
       _ -> t)
 
 -- | Encode a case branch
-encodeCase :: S.Set String -> t0 -> Graph.Graph -> M.Map Core.Name Core.Type -> Maybe Core.Name -> Core.CaseAlternative -> Either Errors.Error Syntax.Case
-encodeCase overlaySubs cx g ftypes sn f =
+encodeCase :: S.Set String -> t0 -> Graph.Graph -> M.Map Model.Name Model.Type -> Maybe Model.Name -> Bool -> Model.CaseAlternative -> Either Errors.Error Syntax.Case
+encodeCase overlaySubs cx g ftypes sn isPolymorphic f =
 
-      let fname = Core.caseAlternativeName f
-          fterm = Core.caseAlternativeHandler f
+      let fname = Model.caseAlternativeName f
+          fterm = Model.caseAlternativeHandler f
           isUnit =
                   Optionals.match (Maps.lookup fname ftypes) (case (Strip.deannotateAndDetypeTerm fterm) of
-                    Core.TermLambda v0 ->
-                      let lamParam = Core.lambdaParameter v0
-                          lamBody = Core.lambdaBody v0
-                          domIsUnit = Optionals.match (Core.lambdaDomain v0) False (\dom -> Equality.equal dom Core.TypeUnit)
+                    Model.TermLambda v0 ->
+                      let lamParam = Model.lambdaParameter v0
+                          lamBody = Model.lambdaBody v0
+                          domIsUnit = Optionals.match (Model.lambdaDomain v0) False (\dom -> Equality.equal dom Model.TypeUnit)
                           bodyIgnoresParam = Variables.isFreeVariableInTerm lamParam lamBody
                       in (Logic.or domIsUnit bodyIgnoresParam)
-                    Core.TermRecord v0 -> Equality.equal (Lists.length (Core.recordFields v0)) 0
-                    Core.TermUnit -> True
+                    Model.TermRecord v0 -> Equality.equal (Lists.length (Model.recordFields v0)) 0
+                    Model.TermUnit -> True
                     _ -> False) (\dom -> case (Strip.deannotateType dom) of
-                    Core.TypeUnit -> True
-                    Core.TypeRecord v0 -> Equality.equal (Lists.length v0) 0
+                    Model.TypeUnit -> True
+                    Model.TypeRecord v0 -> Equality.equal (Lists.length v0) 0
                     _ -> False)
-          shortTypeName = Optionals.withDefault "x" (Lists.last (Strings.splitOn "." (Optionals.match sn "x" (\n -> Core.unName n))))
+          shortTypeName = Optionals.withDefault "x" (Lists.last (Strings.splitOn "." (Optionals.match sn "x" (\n -> Model.unName n))))
           lamParamSuffix =
                   case (Strip.deannotateAndDetypeTerm fterm) of
-                    Core.TermLambda v0 ->
-                      let rawName = Core.unName (Core.lambdaParameter v0)
+                    Model.TermLambda v0 ->
+                      let rawName = Model.unName (Model.lambdaParameter v0)
                           safeName = Strings.fromList (Lists.map (\c -> Logic.ifElse (Equality.equal c 39) 95 c) (Strings.toList rawName))
                       in (Strings.concat2 "_" safeName)
                     _ -> ""
           v =
-                  Core.Name (Strings.concat [
+                  Model.Name (Strings.concat [
                     "v_",
                     shortTypeName,
                     "_",
-                    (Core.unName fname),
+                    (Model.unName fname),
                     lamParamSuffix])
           domainIsUnit =
                   case (Strip.deannotateAndDetypeTerm fterm) of
-                    Core.TermLambda v0 -> Optionals.match (Core.lambdaDomain v0) True (\dom -> Equality.equal dom Core.TypeUnit)
+                    Model.TermLambda v0 -> Optionals.match (Model.lambdaDomain v0) True (\dom -> Equality.equal dom Model.TypeUnit)
                     _ -> True
           patArgs = Logic.ifElse isUnit (Logic.ifElse domainIsUnit [] [
                 Syntax.PatWildcard]) [
                 Utils.svar v]
+          isCall = Logic.or (Logic.not isUnit) isPolymorphic
           pat =
                   Syntax.PatExtract (Syntax.ExtractPat {
                     Syntax.extractPatFun = (Utils.sname (Utils.qualifyUnionFieldName "MATCHED." sn fname)),
-                    Syntax.extractPatArgs = patArgs})
+                    Syntax.extractPatArgs = patArgs,
+                    Syntax.extractPatIsCall = isCall})
           applied = applyVar fterm v
       in (Eithers.bind (encodeTerm overlaySubs cx g applied) (\body -> Right (Syntax.Case {
         Syntax.casePat = pat,
@@ -255,7 +257,7 @@
         Syntax.caseBody = body})))
 
 -- | Encode a complex term definition with proper parameter types from the type signature
-encodeComplexTermDef :: S.Set String -> t0 -> Graph.Graph -> String -> Core.Term -> Core.Type -> Either Errors.Error Syntax.Stat
+encodeComplexTermDef :: S.Set String -> t0 -> Graph.Graph -> String -> Model.Term -> Model.Type -> Either Errors.Error Syntax.Stat
 encodeComplexTermDef overlaySubs cx g lname term typ =
 
       let doms = extractDomains typ
@@ -264,7 +266,7 @@
           cod = dropDomains paramCount typ
           zippedParams = Lists.zip (Lists.take paramCount paramNames) (Lists.take paramCount doms)
           freeTypeVars =
-                  Lists.distinct (Lists.filter (\v -> Logic.not (Lists.member 46 (Strings.toList (Core.unName v)))) (Variables.freeVariablesInTypeOrdered typ))
+                  Lists.distinct (Lists.filter (\v -> Logic.not (Lists.member 46 (Strings.toList (Model.unName v)))) (Variables.freeVariablesInTypeOrdered typ))
           tparams = Lists.map (\tv -> Utils.stparam tv) freeTypeVars
           letBindings = extractLetBindings term
           gWithTypeVars =
@@ -279,9 +281,9 @@
                     Graph.graphTypeVariables = (Sets.union (Sets.fromList freeTypeVars) (Graph.graphTypeVariables g))}
       in (Eithers.bind (Eithers.mapList (encodeTypedParam cx gWithTypeVars) zippedParams) (\sparams -> Eithers.bind (encodeTerm overlaySubs cx gWithTypeVars (extractBody term)) (\sbody -> Eithers.bind (encodeType cx g cod) (\scod ->
         let gForLets =
-                Logic.ifElse (Lists.isEmpty letBindings) gWithTypeVars (Scoping.extendGraphForLet (\g2 -> \b -> Logic.ifElse (Predicates.isComplexBinding g2 b) (Just (Core.TermLiteral (Core.LiteralBoolean True))) Nothing) gWithTypeVars (Core.Let {
-                  Core.letBindings = letBindings,
-                  Core.letBody = (Core.TermVariable (Core.Name "dummy"))}))
+                Logic.ifElse (Lists.isEmpty letBindings) gWithTypeVars (Scoping.extendGraphForLet (\g2 -> \b -> Logic.ifElse (Predicates.isComplexBinding g2 b) (Just (Model.TermLiteral (Model.LiteralBoolean True))) Nothing) gWithTypeVars (Model.Let {
+                  Model.letBindings = letBindings,
+                  Model.letBody = (Model.TermVariable (Model.Name "dummy"))}))
         in (Eithers.bind (Eithers.mapList (encodeLetBinding overlaySubs cx gForLets (Sets.fromList freeTypeVars)) letBindings) (\sbindings ->
           let defBody =
                   Logic.ifElse (Lists.isEmpty sbindings) sbody (Syntax.DataBlock (Syntax.BlockData {
@@ -298,26 +300,26 @@
             Syntax.defDefnBody = defBody}))))))))))
 
 -- | Encode a Hydra function-valued term (lambda, project, cases, or unwrap) as a Scala expression
-encodeFunction :: S.Set String -> t0 -> Graph.Graph -> M.Map Core.Name Core.Term -> Core.Term -> Maybe Core.Term -> Either Errors.Error Syntax.Data
+encodeFunction :: S.Set String -> t0 -> Graph.Graph -> M.Map Model.Name Model.Term -> Model.Term -> Maybe Model.Term -> Either Errors.Error Syntax.Data
 encodeFunction overlaySubs cx g meta funTerm arg =
     case (Strip.deannotateAndDetypeTerm funTerm) of
-      Core.TermLambda v0 ->
-        let param = Core.lambdaParameter v0
-            v = Utils.scalaEscapeName (Core.unName param)
-            body = Core.lambdaBody v0
-            rawMdom = Core.lambdaDomain v0
+      Model.TermLambda v0 ->
+        let param = Model.lambdaParameter v0
+            v = Utils.scalaEscapeName (Model.unName param)
+            body = Model.lambdaBody v0
+            rawMdom = Model.lambdaDomain v0
             mdom =
                     Optionals.bind rawMdom (\dom ->
                       let freeVars = Variables.freeVariablesInType dom
                           unqualifiedFreeVars =
-                                  Sets.fromList (Lists.filter (\n -> Logic.not (Lists.member 46 (Strings.toList (Core.unName n)))) (Sets.toList freeVars))
+                                  Sets.fromList (Lists.filter (\n -> Logic.not (Lists.member 46 (Strings.toList (Model.unName n)))) (Sets.toList freeVars))
                           unresolvedVars = Sets.difference unqualifiedFreeVars (Graph.graphTypeVariables g)
                       in (Logic.ifElse (Sets.isEmpty unresolvedVars) (Just dom) Nothing))
         in (Eithers.bind (encodeTerm overlaySubs cx g body) (\sbody -> Eithers.bind (Optionals.match mdom (findSdom cx g meta) (\dom -> Eithers.bind (encodeType cx g dom) (\sdom -> Right (Just sdom)))) (\sdom -> Right (Utils.slambda v sbody sdom))))
-      Core.TermUnwrap _ -> Optionals.match arg (Eithers.bind (findSdom cx g meta) (\sdom -> Right (Utils.slambda "x" (Utils.sname "x") sdom))) (\a -> encodeTerm overlaySubs cx g a)
-      Core.TermProject v0 ->
-        let fname = Utils.scalaEscapeName (Core.unName (Core.projectionFieldName v0))
-            typeName = Core.projectionTypeName v0
+      Model.TermUnwrap _ -> Optionals.match arg (Eithers.bind (findSdom cx g meta) (\sdom -> Right (Utils.slambda "x" (Utils.sname "x") sdom))) (\a -> encodeTerm overlaySubs cx g a)
+      Model.TermProject v0 ->
+        let fname = Utils.scalaEscapeName (Model.unName (Model.projectionFieldName v0))
+            typeName = Model.projectionTypeName v0
             pv = "x"
         in (Optionals.match arg (Eithers.bind (Eithers.either (\_ -> Right Nothing) (\msdom -> Right msdom) (findSdom cx g meta)) (\msdom -> Right (Utils.slambda pv (Syntax.DataRef (Syntax.RefDataSelect (Syntax.SelectData {
           Syntax.selectDataQual = (Utils.sname pv),
@@ -326,15 +328,16 @@
           Syntax.selectDataQual = sa,
           Syntax.selectDataName = Syntax.NameData {
             Syntax.nameDataValue = (Syntax.PredefString fname)}}))))))
-      Core.TermCases v0 ->
+      Model.TermCases v0 ->
         let v = "v"
-            tname = Core.caseStatementTypeName v0
-            dom = Core.TypeVariable tname
+            tname = Model.caseStatementTypeName v0
+            dom = Model.TypeVariable tname
             sn = Utils.nameOfType g dom
-            cases = Core.caseStatementCases v0
-            dflt = Core.caseStatementDefault v0
+            cases = Model.caseStatementCases v0
+            dflt = Model.caseStatementDefault v0
+            isPolymorphic = Optionals.match (Resolution.resolveType g dom) False (\typ -> Resolution.fTypeIsPolymorphic typ)
             ftypes = Eithers.either (\_ -> Maps.empty) (\x_ -> x_) (Resolution.fieldTypes cx g dom)
-        in (Eithers.bind (Eithers.mapList (\f -> encodeCase overlaySubs cx g ftypes sn f) cases) (\fieldCases -> Eithers.bind (Optionals.match dflt (Right fieldCases) (\dfltTerm -> Eithers.bind (encodeTerm overlaySubs cx g dfltTerm) (\sdflt -> Right (Lists.concat2 fieldCases [
+        in (Eithers.bind (Eithers.mapList (\f -> encodeCase overlaySubs cx g ftypes sn isPolymorphic f) cases) (\fieldCases -> Eithers.bind (Optionals.match dflt (Right fieldCases) (\dfltTerm -> Eithers.bind (encodeTerm overlaySubs cx g dfltTerm) (\sdflt -> Right (Lists.concat2 fieldCases [
           Syntax.Case {
             Syntax.casePat = Syntax.PatWildcard,
             Syntax.caseCond = Nothing,
@@ -346,17 +349,17 @@
       _ -> Left (Errors.ErrorOther (Errors.OtherError "unsupported function"))
 
 -- | Encode a let binding as a val or def declaration. outerTypeVars are type params from the enclosing scope.
-encodeLetBinding :: S.Set String -> t0 -> Graph.Graph -> S.Set Core.Name -> Core.Binding -> Either Errors.Error Syntax.Stat
+encodeLetBinding :: S.Set String -> t0 -> Graph.Graph -> S.Set Model.Name -> Model.Binding -> Either Errors.Error Syntax.Stat
 encodeLetBinding overlaySubs cx g outerTypeVars b =
 
-      let bname = Utils.scalaEscapeName (Core.unName (Core.bindingName b))
-          bterm = Core.bindingTerm b
-          mts = Optionals.match (Core.bindingTypeScheme b) (Maps.lookup (Core.bindingName b) (Graph.graphBoundTypes g)) (\ts -> Just ts)
+      let bname = Utils.scalaEscapeName (Model.unName (Model.bindingName b))
+          bterm = Model.bindingTerm b
+          mts = Optionals.match (Model.bindingTypeScheme b) (Maps.lookup (Model.bindingName b) (Graph.graphBoundTypes g)) (\ts -> Just ts)
           isFn =
-                  Optionals.match mts False (\ts -> case (Strip.deannotateType (Core.typeSchemeBody ts)) of
-                    Core.TypeFunction _ -> True
-                    Core.TypeForall v0 -> case (Strip.deannotateType (Core.forallTypeBody v0)) of
-                      Core.TypeFunction _ -> True
+                  Optionals.match mts False (\ts -> case (Strip.deannotateType (Model.typeSchemeBody ts)) of
+                    Model.TypeFunction _ -> True
+                    Model.TypeForall v0 -> case (Strip.deannotateType (Model.forallTypeBody v0)) of
+                      Model.TypeFunction _ -> True
                       _ -> False
                     _ -> False)
       in (Optionals.match mts (Eithers.bind (encodeTerm overlaySubs cx g bterm) (\srhs -> Right (Syntax.StatDefn (Syntax.DefnVal (Syntax.ValDefn {
@@ -368,9 +371,9 @@
               Syntax.nameDataValue = (Syntax.PredefString bname)}})],
         Syntax.valDefnDecltpe = Nothing,
         Syntax.valDefnRhs = srhs}))))) (\ts ->
-        let newVars = Lists.filter (\v -> Logic.not (Sets.member v outerTypeVars)) (Core.typeSchemeVariables ts)
+        let newVars = Lists.filter (\v -> Logic.not (Sets.member v outerTypeVars)) (Model.typeSchemeVariables ts)
             useDef = Logic.or isFn (Logic.not (Lists.isEmpty newVars))
-        in (Logic.ifElse useDef (encodeLocalDef overlaySubs cx g outerTypeVars bname bterm (Core.typeSchemeBody ts)) (Eithers.bind (encodeTerm overlaySubs cx g bterm) (\srhs -> Eithers.bind (encodeType cx g (Core.typeSchemeBody ts)) (\styp -> Right (Syntax.StatDefn (Syntax.DefnVal (Syntax.ValDefn {
+        in (Logic.ifElse useDef (encodeLocalDef overlaySubs cx g outerTypeVars bname bterm (Model.typeSchemeBody ts)) (Eithers.bind (encodeTerm overlaySubs cx g bterm) (\srhs -> Eithers.bind (encodeType cx g (Model.typeSchemeBody ts)) (\styp -> Right (Syntax.StatDefn (Syntax.DefnVal (Syntax.ValDefn {
           Syntax.valDefnMods = [
             Syntax.ModLazy],
           Syntax.valDefnPats = [
@@ -381,36 +384,36 @@
           Syntax.valDefnRhs = srhs})))))))))
 
 -- | Encode a literal value as a Scala literal
-encodeLiteral :: t0 -> t1 -> Core.Literal -> Either Errors.Error Syntax.Lit
+encodeLiteral :: t0 -> t1 -> Model.Literal -> Either Errors.Error Syntax.Lit
 encodeLiteral cx g av =
     case av of
-      Core.LiteralBinary v0 -> Right (Syntax.LitBytes (Literals.binaryToBytes v0))
-      Core.LiteralBoolean v0 -> Right (Syntax.LitBoolean v0)
-      Core.LiteralDecimal v0 -> Right (Syntax.LitString (Literals.printDecimal v0))
-      Core.LiteralFloat v0 -> case v0 of
-        Core.FloatValueFloat32 v1 -> Right (Syntax.LitFloat v1)
-        Core.FloatValueFloat64 v1 -> Right (Syntax.LitDouble v1)
+      Model.LiteralBinary v0 -> Right (Syntax.LitBytes (Literals.binaryToBytes v0))
+      Model.LiteralBoolean v0 -> Right (Syntax.LitBoolean v0)
+      Model.LiteralDecimal v0 -> Right (Syntax.LitString (Literals.printDecimal v0))
+      Model.LiteralFloat v0 -> case v0 of
+        Model.FloatValueFloat32 v1 -> Right (Syntax.LitFloat v1)
+        Model.FloatValueFloat64 v1 -> Right (Syntax.LitDouble v1)
         _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected float value"))
-      Core.LiteralInteger v0 -> case v0 of
-        Core.IntegerValueBigint v1 -> Right (Syntax.LitLong (Literals.bigintToInt64 v1))
-        Core.IntegerValueInt8 v1 -> Right (Syntax.LitByte v1)
-        Core.IntegerValueInt16 v1 -> Right (Syntax.LitShort v1)
-        Core.IntegerValueInt32 v1 -> Right (Syntax.LitInt v1)
-        Core.IntegerValueInt64 v1 -> Right (Syntax.LitLong v1)
-        Core.IntegerValueUint8 v1 -> Right (Syntax.LitByte (Literals.bigintToInt8 (Literals.uint8ToBigint v1)))
-        Core.IntegerValueUint16 v1 -> Right (Syntax.LitInt (Literals.bigintToInt32 (Literals.uint16ToBigint v1)))
-        Core.IntegerValueUint32 v1 -> Right (Syntax.LitLong (Literals.bigintToInt64 (Literals.uint32ToBigint v1)))
-        Core.IntegerValueUint64 v1 -> Right (Syntax.LitLong (Literals.bigintToInt64 (Literals.uint64ToBigint v1)))
+      Model.LiteralInteger v0 -> case v0 of
+        Model.IntegerValueBigint v1 -> Right (Syntax.LitLong (Literals.bigintToInt64 v1))
+        Model.IntegerValueInt8 v1 -> Right (Syntax.LitByte v1)
+        Model.IntegerValueInt16 v1 -> Right (Syntax.LitShort v1)
+        Model.IntegerValueInt32 v1 -> Right (Syntax.LitInt v1)
+        Model.IntegerValueInt64 v1 -> Right (Syntax.LitLong v1)
+        Model.IntegerValueUint8 v1 -> Right (Syntax.LitByte (Literals.bigintToInt8 (Literals.uint8ToBigint v1)))
+        Model.IntegerValueUint16 v1 -> Right (Syntax.LitInt (Literals.bigintToInt32 (Literals.uint16ToBigint v1)))
+        Model.IntegerValueUint32 v1 -> Right (Syntax.LitLong (Literals.bigintToInt64 (Literals.uint32ToBigint v1)))
+        Model.IntegerValueUint64 v1 -> Right (Syntax.LitLong (Literals.bigintToInt64 (Literals.uint64ToBigint v1)))
         _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected integer value"))
-      Core.LiteralString v0 -> Right (Syntax.LitString v0)
+      Model.LiteralString v0 -> Right (Syntax.LitString v0)
       _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected literal"))
 
 -- | Encode a local def. outerTypeVars are type params already in scope (don't redeclare them).
-encodeLocalDef :: S.Set String -> t0 -> Graph.Graph -> S.Set Core.Name -> String -> Core.Term -> Core.Type -> Either Errors.Error Syntax.Stat
+encodeLocalDef :: S.Set String -> t0 -> Graph.Graph -> S.Set Model.Name -> String -> Model.Term -> Model.Type -> Either Errors.Error Syntax.Stat
 encodeLocalDef overlaySubs cx g outerTypeVars lname term typ =
 
       let freeTypeVars =
-              Lists.filter (\v -> Logic.and (Logic.not (Lists.member 46 (Strings.toList (Core.unName v)))) (Logic.not (Sets.member v outerTypeVars))) (Sets.toList (Variables.freeVariablesInType typ))
+              Lists.filter (\v -> Logic.and (Logic.not (Lists.member 46 (Strings.toList (Model.unName v)))) (Logic.not (Sets.member v outerTypeVars))) (Sets.toList (Variables.freeVariablesInType typ))
           doms = extractDomains typ
           paramNames = extractParams term
           paramCount = Ordering.min (Lists.length paramNames) (Lists.length doms)
@@ -431,9 +434,9 @@
                     Graph.graphTypeVariables = (Sets.union allTypeVars (Graph.graphTypeVariables g))}
       in (Eithers.bind (Eithers.mapList (encodeTypedParam cx gWithTypeVars) zippedParams) (\sparams -> Eithers.bind (encodeTerm overlaySubs cx gWithTypeVars (extractBody term)) (\sbody -> Eithers.bind (encodeType cx gWithTypeVars cod) (\scod ->
         let gForLets =
-                Logic.ifElse (Lists.isEmpty letBindings) gWithTypeVars (Scoping.extendGraphForLet (\g2 -> \b -> Logic.ifElse (Predicates.isComplexBinding g2 b) (Just (Core.TermLiteral (Core.LiteralBoolean True))) Nothing) gWithTypeVars (Core.Let {
-                  Core.letBindings = letBindings,
-                  Core.letBody = (Core.TermVariable (Core.Name "dummy"))}))
+                Logic.ifElse (Lists.isEmpty letBindings) gWithTypeVars (Scoping.extendGraphForLet (\g2 -> \b -> Logic.ifElse (Predicates.isComplexBinding g2 b) (Just (Model.TermLiteral (Model.LiteralBoolean True))) Nothing) gWithTypeVars (Model.Let {
+                  Model.letBindings = letBindings,
+                  Model.letBody = (Model.TermVariable (Model.Name "dummy"))}))
         in (Eithers.bind (Eithers.mapList (encodeLetBinding overlaySubs cx gForLets allTypeVars) letBindings) (\sbindings ->
           let defBody =
                   Logic.ifElse (Lists.isEmpty sbindings) sbody (Syntax.DataBlock (Syntax.BlockData {
@@ -450,102 +453,107 @@
             Syntax.defDefnBody = defBody}))))))))))
 
 -- | Encode a Hydra term as a Scala expression
-encodeTerm :: S.Set String -> t0 -> Graph.Graph -> Core.Term -> Either Errors.Error Syntax.Data
+encodeTerm :: S.Set String -> t0 -> Graph.Graph -> Model.Term -> Either Errors.Error Syntax.Data
 encodeTerm overlaySubs cx g term0 =
 
       let term = stripWrapEliminations term0
       in case (Strip.deannotateTerm term) of
-        Core.TermTypeApplication v0 ->
+        Model.TermTypeApplication v0 ->
           let collectTypeArgs =
                   \t -> \acc -> case (Strip.deannotateTerm t) of
-                    Core.TermTypeApplication v1 -> collectTypeArgs (Core.typeApplicationTermBody v1) (Lists.cons (Core.typeApplicationTermType v1) acc)
+                    Model.TermTypeApplication v1 -> collectTypeArgs (Model.typeApplicationTermBody v1) (Lists.cons (Model.typeApplicationTermType v1) acc)
                     _ -> (acc, t)
-              collected = collectTypeArgs (Core.typeApplicationTermBody v0) [
-                    Core.typeApplicationTermType v0]
+              collected = collectTypeArgs (Model.typeApplicationTermBody v0) [
+                    Model.typeApplicationTermType v0]
               typeArgs = Pairs.first collected
               innerTerm = Pairs.second collected
               collectTypeLambdas =
                       \t -> \acc -> case (Strip.deannotateTerm t) of
-                        Core.TermTypeLambda v1 -> collectTypeLambdas (Core.typeLambdaBody v1) (Lists.cons (Core.typeLambdaParameter v1) acc)
+                        Model.TermTypeLambda v1 -> collectTypeLambdas (Model.typeLambdaBody v1) (Lists.cons (Model.typeLambdaParameter v1) acc)
                         _ -> (acc, t)
               tlCollected = collectTypeLambdas innerTerm []
               typeParams = Pairs.first tlCollected
               bodyAfterTypeLambdas = Pairs.second tlCollected
               substitutedBody = bodyAfterTypeLambdas
           in case (Strip.deannotateTerm substitutedBody) of
-            Core.TermProject _ -> encodeTerm overlaySubs cx g substitutedBody
-            Core.TermCases _ -> encodeTerm overlaySubs cx g substitutedBody
-            Core.TermUnwrap _ -> encodeTerm overlaySubs cx g substitutedBody
-            Core.TermVariable v1 -> Eithers.bind (correctTypeApps v1 typeArgs g) (\correctedTypeArgs -> Eithers.bind (Eithers.mapList (\targ -> encodeType cx g targ) correctedTypeArgs) (\stypeArgs -> Optionals.match (Maps.lookup v1 (Graph.graphPrimitives g)) (Eithers.bind (encodeTerm overlaySubs cx g substitutedBody) (\svar -> Right (Utils.sapplyTypes svar stypeArgs))) (\_prim -> Right (Utils.sapplyTypes (Utils.sprim overlaySubs v1) stypeArgs))))
+            Model.TermProject _ -> encodeTerm overlaySubs cx g substitutedBody
+            Model.TermCases _ -> encodeTerm overlaySubs cx g substitutedBody
+            Model.TermUnwrap _ -> encodeTerm overlaySubs cx g substitutedBody
+            Model.TermVariable v1 -> Eithers.bind (correctTypeApps v1 typeArgs g) (\correctedTypeArgs -> Eithers.bind (Eithers.mapList (\targ -> encodeType cx g targ) correctedTypeArgs) (\stypeArgs -> Optionals.match (Maps.lookup v1 (Graph.graphPrimitives g)) (Eithers.bind (encodeTerm overlaySubs cx g substitutedBody) (\svar -> Right (Utils.sapplyTypes svar stypeArgs))) (\_prim -> Right (Utils.sapplyTypes (Utils.sprim overlaySubs v1) stypeArgs))))
             _ -> encodeTerm overlaySubs cx g substitutedBody
-        Core.TermTypeLambda v0 -> encodeTerm overlaySubs cx (Scoping.extendGraphForTypeLambda g v0) (Core.typeLambdaBody v0)
-        Core.TermApplication v0 ->
-          let fun = Core.applicationFunction v0
-              arg = Core.applicationArgument v0
+        Model.TermTypeLambda v0 -> encodeTerm overlaySubs cx (Scoping.extendGraphForTypeLambda g v0) (Model.typeLambdaBody v0)
+        Model.TermApplication v0 ->
+          let fun = Model.applicationFunction v0
+              arg = Model.applicationArgument v0
           in case (Strip.deannotateAndDetypeTerm fun) of
-            Core.TermLambda v1 ->
-              let lamBody = Core.lambdaBody v1
+            Model.TermLambda v1 ->
+              let lamBody = Model.lambdaBody v1
               in case (Strip.deannotateAndDetypeTerm lamBody) of
-                Core.TermApplication v2 ->
-                  let innerFun = Core.applicationFunction v2
+                Model.TermApplication v2 ->
+                  let innerFun = Model.applicationFunction v2
                   in case (Strip.deannotateAndDetypeTerm innerFun) of
-                    Core.TermCases _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal innerFun) innerFun (Just arg)
+                    Model.TermCases _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal innerFun) innerFun (Just arg)
                     _ -> Eithers.bind (encodeTerm overlaySubs cx g fun) (\sfun -> Eithers.bind (encodeTerm overlaySubs cx g arg) (\sarg -> Right (Utils.sapply sfun [
                       sarg])))
                 _ -> Eithers.bind (encodeTerm overlaySubs cx g fun) (\sfun -> Eithers.bind (encodeTerm overlaySubs cx g arg) (\sarg -> Right (Utils.sapply sfun [
                   sarg])))
-            Core.TermProject v1 ->
-              let fname = Utils.scalaEscapeName (Core.unName (Core.projectionFieldName v1))
+            Model.TermProject v1 ->
+              let fname = Utils.scalaEscapeName (Model.unName (Model.projectionFieldName v1))
               in (Eithers.bind (encodeTerm overlaySubs cx g arg) (\sarg -> Right (Syntax.DataRef (Syntax.RefDataSelect (Syntax.SelectData {
                 Syntax.selectDataQual = sarg,
                 Syntax.selectDataName = Syntax.NameData {
                   Syntax.nameDataValue = (Syntax.PredefString fname)}})))))
-            Core.TermCases _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal fun) fun (Just arg)
+            Model.TermCases _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal fun) fun (Just arg)
             _ -> Eithers.bind (encodeTerm overlaySubs cx g fun) (\sfun -> Eithers.bind (encodeTerm overlaySubs cx g arg) (\sarg -> Right (Utils.sapply sfun [
               sarg])))
-        Core.TermLambda _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal term) term Nothing
-        Core.TermProject _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal term) term Nothing
-        Core.TermCases _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal term) term Nothing
-        Core.TermUnwrap _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal term) term Nothing
-        Core.TermList v0 -> Eithers.bind (Eithers.mapList (\e -> encodeTerm overlaySubs cx g e) v0) (\sels -> Right (Utils.sapply (Utils.sname "Seq") sels))
-        Core.TermLiteral v0 -> Eithers.bind (encodeLiteral cx g v0) (\slit ->
+        Model.TermLambda _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal term) term Nothing
+        Model.TermProject _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal term) term Nothing
+        Model.TermCases _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal term) term Nothing
+        Model.TermUnwrap _ -> encodeFunction overlaySubs cx g (Annotations.termAnnotationInternal term) term Nothing
+        Model.TermList v0 -> Eithers.bind (Eithers.mapList (\e -> encodeTerm overlaySubs cx g e) v0) (\sels -> Right (Utils.sapply (Utils.sname "Seq") sels))
+        Model.TermLiteral v0 -> Eithers.bind (encodeLiteral cx g v0) (\slit ->
           let litData = Syntax.DataLit slit
           in case v0 of
-            Core.LiteralDecimal _ -> Right (Utils.sapply (Utils.sname "BigDecimal") [
+            Model.LiteralDecimal _ -> Right (Utils.sapply (Utils.sname "BigDecimal") [
               litData])
-            Core.LiteralInteger v1 -> case v1 of
-              Core.IntegerValueBigint v2 -> Right (Utils.sapply (Utils.sname "BigInt") [
+            Model.LiteralInteger v1 -> case v1 of
+              Model.IntegerValueBigint v2 -> Right (Utils.sapply (Utils.sname "BigInt") [
                 Syntax.DataLit (Syntax.LitString (Literals.printBigint v2))])
-              Core.IntegerValueUint64 v2 -> Right (Utils.sapply (Utils.sname "BigInt") [
+              Model.IntegerValueUint64 v2 -> Right (Utils.sapply (Utils.sname "BigInt") [
                 Syntax.DataLit (Syntax.LitString (Literals.printBigint (Literals.uint64ToBigint v2)))])
               _ -> Right litData
             _ -> Right litData)
-        Core.TermMap v0 -> Eithers.bind (Eithers.mapList (\kv -> Eithers.bind (encodeTerm overlaySubs cx g (Pairs.first kv)) (\sk -> Eithers.bind (encodeTerm overlaySubs cx g (Pairs.second kv)) (\sv -> Right (Utils.sassign sk sv)))) (Maps.toList v0)) (\spairs -> Right (Utils.sapply (Utils.sname "Map") spairs))
-        Core.TermWrap v0 -> encodeTerm overlaySubs cx g (Core.wrappedTermBody v0)
-        Core.TermOptional v0 -> Optionals.match v0 (Right (Utils.sname "None")) (\t -> Eithers.bind (encodeTerm overlaySubs cx g t) (\s -> Right (Utils.sapply (Utils.sname "Some") [
+        Model.TermMap v0 -> Eithers.bind (Eithers.mapList (\kv -> Eithers.bind (encodeTerm overlaySubs cx g (Pairs.first kv)) (\sk -> Eithers.bind (encodeTerm overlaySubs cx g (Pairs.second kv)) (\sv -> Right (Utils.sassign sk sv)))) (Maps.toList v0)) (\spairs -> Right (Utils.sapply (Utils.sname "Map") spairs))
+        Model.TermWrap v0 -> encodeTerm overlaySubs cx g (Model.wrappedTermBody v0)
+        Model.TermOptional v0 -> Optionals.match v0 (Right (Utils.sname "None")) (\t -> Eithers.bind (encodeTerm overlaySubs cx g t) (\s -> Right (Utils.sapply (Utils.sname "Some") [
           s])))
-        Core.TermRecord v0 ->
-          let rname = Core.recordTypeName v0
-              fields = Core.recordFields v0
+        Model.TermRecord v0 ->
+          let rname = Model.recordTypeName v0
+              fields = Model.recordFields v0
               n = Utils.scalaTypeName True rname
-          in (Eithers.bind (Eithers.mapList (\f -> encodeTerm overlaySubs cx g (Core.fieldTerm f)) fields) (\args -> Right (Utils.sapply (Utils.sname n) args)))
-        Core.TermSet v0 -> Eithers.bind (Eithers.mapList (\e -> encodeTerm overlaySubs cx g e) (Sets.toList v0)) (\sels -> Right (Utils.sapply (Utils.sname "scala.collection.immutable.Set") sels))
-        Core.TermInject v0 ->
-          let sn = Core.injectionTypeName v0
-              fn = Core.fieldName (Core.injectionField v0)
-              ft = Core.fieldTerm (Core.injectionField v0)
+          in (Eithers.bind (Eithers.mapList (\f -> encodeTerm overlaySubs cx g (Model.fieldTerm f)) fields) (\args -> Right (Utils.sapply (Utils.sname n) args)))
+        Model.TermSet v0 -> Eithers.bind (Eithers.mapList (\e -> encodeTerm overlaySubs cx g e) (Sets.toList v0)) (\sels -> Right (Utils.sapply (Utils.sname "scala.collection.immutable.Set") sels))
+        Model.TermInject v0 ->
+          let sn = Model.injectionTypeName v0
+              fn = Model.fieldName (Model.injectionField v0)
+              ft = Model.fieldTerm (Model.injectionField v0)
               lhs = Utils.sname (Utils.qualifyUnionFieldName "UNION." (Just sn) fn)
-              unionFtypes = Eithers.either (\_ -> Maps.empty) (\x_ -> x_) (Resolution.fieldTypes cx g (Core.TypeVariable sn))
-          in (Logic.ifElse (Optionals.match (Maps.lookup fn unionFtypes) (case (Strip.deannotateAndDetypeTerm ft) of
-            Core.TermUnit -> True
-            Core.TermRecord v1 -> Equality.equal (Lists.length (Core.recordFields v1)) 0
-            _ -> False) (\dom -> case (Strip.deannotateType dom) of
-            Core.TypeUnit -> True
-            Core.TypeRecord v1 -> Equality.equal (Lists.length v1) 0
-            _ -> False)) (Right lhs) (Eithers.bind (encodeTerm overlaySubs cx g ft) (\sarg -> Right (Utils.sapply lhs [
+              isPolymorphic =
+                      Optionals.match (Resolution.resolveType g (Model.TypeVariable sn)) False (\typ -> Resolution.fTypeIsPolymorphic typ)
+              unionFtypes = Eithers.either (\_ -> Maps.empty) (\x_ -> x_) (Resolution.fieldTypes cx g (Model.TypeVariable sn))
+              unionFtypesLookup = Maps.lookup fn unionFtypes
+              isValueUnit =
+                      Optionals.match unionFtypesLookup (case (Strip.deannotateAndDetypeTerm ft) of
+                        Model.TermUnit -> True
+                        Model.TermRecord v1 -> Equality.equal (Lists.length (Model.recordFields v1)) 0
+                        _ -> False) (\dom -> case (Strip.deannotateType dom) of
+                        Model.TypeUnit -> True
+                        Model.TypeRecord v1 -> Equality.equal (Lists.length v1) 0
+                        _ -> False)
+          in (Logic.ifElse isValueUnit (Logic.ifElse isPolymorphic (Right (Utils.sapply lhs [])) (Right lhs)) (Eithers.bind (encodeTerm overlaySubs cx g ft) (\sarg -> Right (Utils.sapply lhs [
             sarg]))))
-        Core.TermVariable v0 -> Optionals.match (Maps.lookup v0 (Graph.graphPrimitives g)) (
-          let fullName = Core.unName v0
+        Model.TermVariable v0 -> Optionals.match (Maps.lookup v0 (Graph.graphPrimitives g)) (
+          let fullName = Model.unName v0
               localName = Names.localNameOf v0
               parts = Strings.splitOn "." fullName
               numParts = Lists.length parts
@@ -553,19 +561,19 @@
                       Logic.ifElse (Ordering.lte numParts 1) (Utils.scalaEscapeName fullName) (Logic.ifElse (Equality.equal numParts 2) (Strings.concat2 (Optionals.withDefault fullName (Lists.head parts)) (Strings.concat2 "." (Utils.scalaEscapeName localName))) (Strings.join "." (Lists.concat2 (Lists.take (Math.sub numParts 1) parts) [
                         Utils.scalaEscapeName localName])))
           in (Right (Utils.sname escaped))) (\_prim -> Right (Utils.sprim overlaySubs v0))
-        Core.TermAnnotated v0 -> encodeTerm overlaySubs cx g (Core.annotatedTermBody v0)
-        Core.TermEither v0 -> Eithers.either (\l -> Eithers.bind (encodeTerm overlaySubs cx g l) (\sl -> Right (Utils.sapply (Utils.sname "Left") [
+        Model.TermAnnotated v0 -> encodeTerm overlaySubs cx g (Model.annotatedTermBody v0)
+        Model.TermEither v0 -> Eithers.either (\l -> Eithers.bind (encodeTerm overlaySubs cx g l) (\sl -> Right (Utils.sapply (Utils.sname "Left") [
           sl]))) (\r -> Eithers.bind (encodeTerm overlaySubs cx g r) (\sr -> Right (Utils.sapply (Utils.sname "Right") [
           sr]))) v0
-        Core.TermPair v0 -> Eithers.bind (encodeTerm overlaySubs cx g (Pairs.first v0)) (\sf -> Eithers.bind (encodeTerm overlaySubs cx g (Pairs.second v0)) (\ss -> Right (Utils.sapply (Utils.sname "Tuple2") [
+        Model.TermPair v0 -> Eithers.bind (encodeTerm overlaySubs cx g (Pairs.first v0)) (\sf -> Eithers.bind (encodeTerm overlaySubs cx g (Pairs.second v0)) (\ss -> Right (Utils.sapply (Utils.sname "Tuple2") [
           sf,
           ss])))
-        Core.TermUnit -> Right (Syntax.DataLit Syntax.LitUnit)
-        Core.TermLet v0 ->
-          let bindings = Core.letBindings v0
-              body = Core.letBody v0
+        Model.TermUnit -> Right (Syntax.DataLit Syntax.LitUnit)
+        Model.TermLet v0 ->
+          let bindings = Model.letBindings v0
+              body = Model.letBody v0
               gLet =
-                      Scoping.extendGraphForLet (\g2 -> \b -> Logic.ifElse (Predicates.isComplexBinding g2 b) (Just (Core.TermLiteral (Core.LiteralBoolean True))) Nothing) g v0
+                      Scoping.extendGraphForLet (\g2 -> \b -> Logic.ifElse (Predicates.isComplexBinding g2 b) (Just (Model.TermLiteral (Model.LiteralBoolean True))) Nothing) g v0
           in (Eithers.bind (Eithers.mapList (encodeLetBinding overlaySubs cx gLet (Graph.graphTypeVariables gLet)) bindings) (\sbindings -> Eithers.bind (encodeTerm overlaySubs cx gLet body) (\sbody -> Right (Syntax.DataBlock (Syntax.BlockData {
             Syntax.blockDataStats = (Lists.concat2 sbindings [
               Syntax.StatTerm sbody])})))))
@@ -579,16 +587,16 @@
           term = Packaging.termDefinitionBody td
           lname = Utils.scalaEscapeName (Names.localNameOf name)
           typ_ =
-                  Optionals.match (Optionals.map Scoping.termSignatureToTypeScheme (Packaging.termDefinitionSignature td)) (Core.TypeVariable (Core.Name "hydra.core.Unit")) Core.typeSchemeBody
+                  Optionals.match (Optionals.map Scoping.termSignatureToTypeScheme (Packaging.termDefinitionSignature td)) (Model.TypeVariable (Model.Name "hydra.core.model.Unit")) Model.typeSchemeBody
           isFunctionType =
                   case (Strip.deannotateType typ_) of
-                    Core.TypeFunction _ -> True
-                    Core.TypeForall v0 -> case (Strip.deannotateType (Core.forallTypeBody v0)) of
-                      Core.TypeFunction _ -> True
+                    Model.TypeFunction _ -> True
+                    Model.TypeForall v0 -> case (Strip.deannotateType (Model.forallTypeBody v0)) of
+                      Model.TypeFunction _ -> True
                       _ -> False
                     _ -> False
           freeTypeVarsInTyp =
-                  Lists.filter (\v -> Logic.not (Lists.member 46 (Strings.toList (Core.unName v)))) (Sets.toList (Variables.freeVariablesInType typ_))
+                  Lists.filter (\v -> Logic.not (Lists.member 46 (Strings.toList (Model.unName v)))) (Sets.toList (Variables.freeVariablesInType typ_))
       in (Logic.ifElse isFunctionType (encodeComplexTermDef overlaySubs cx g lname term typ_) (Logic.ifElse (Lists.isEmpty freeTypeVarsInTyp) (Eithers.bind (encodeType cx g typ_) (\stype -> Eithers.bind (encodeTerm overlaySubs cx g term) (\rhs -> Right (Syntax.StatDefn (Syntax.DefnVal (Syntax.ValDefn {
         Syntax.valDefnMods = [
           Syntax.ModLazy],
@@ -609,102 +617,102 @@
           Syntax.defDefnBody = rhs})))))))))
 
 -- | Encode a Hydra type as a Scala type
-encodeType :: t0 -> t1 -> Core.Type -> Either Errors.Error Syntax.Type
+encodeType :: t0 -> t1 -> Model.Type -> Either Errors.Error Syntax.Type
 encodeType cx g t =
     case (Strip.deannotateType t) of
-      Core.TypeApplication v0 ->
+      Model.TypeApplication v0 ->
         let collectTypeArgs =
                 \t2 -> \acc -> case (Strip.deannotateType t2) of
-                  Core.TypeApplication v1 ->
-                    let f2 = Core.applicationTypeFunction v1
-                        a2 = Core.applicationTypeArgument v1
+                  Model.TypeApplication v1 ->
+                    let f2 = Model.applicationTypeFunction v1
+                        a2 = Model.applicationTypeArgument v1
                     in (collectTypeArgs f2 (Lists.cons a2 acc))
                   _ -> (t2, acc)
-            collected = collectTypeArgs (Core.TypeApplication v0) []
+            collected = collectTypeArgs (Model.TypeApplication v0) []
             baseFun = Pairs.first collected
             allArgs = Pairs.second collected
         in (Eithers.bind (encodeType cx g baseFun) (\sfun -> Eithers.bind (Eithers.mapList (\a -> encodeType cx g a) allArgs) (\sargs -> Right (Utils.stapply sfun sargs))))
-      Core.TypeUnit -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+      Model.TypeUnit -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
         Syntax.nameTypeValue = "Unit"})))
-      Core.TypeEither v0 ->
-        let lt = Core.eitherTypeLeft v0
-            rt = Core.eitherTypeRight v0
+      Model.TypeEither v0 ->
+        let lt = Model.eitherTypeLeft v0
+            rt = Model.eitherTypeRight v0
         in (Eithers.bind (encodeType cx g lt) (\slt -> Eithers.bind (encodeType cx g rt) (\srt -> Right (Utils.stapply2 (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
           Syntax.nameTypeValue = "Either"}))) slt srt))))
-      Core.TypeEffect v0 -> encodeType cx g v0
-      Core.TypeFunction v0 ->
-        let dom = Core.functionTypeDomain v0
-            cod = Core.functionTypeCodomain v0
+      Model.TypeEffect v0 -> encodeType cx g v0
+      Model.TypeFunction v0 ->
+        let dom = Model.functionTypeDomain v0
+            cod = Model.functionTypeCodomain v0
         in (Eithers.bind (encodeType cx g dom) (\sdom -> Eithers.bind (encodeType cx g cod) (\scod -> Right (Syntax.TypeFunction (Syntax.FunctionType {
           Syntax.functionTypeParams = [
             sdom],
           Syntax.functionTypeRes = scod})))))
-      Core.TypeList v0 -> Eithers.bind (encodeType cx g v0) (\slt -> Right (Utils.stapply1 (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+      Model.TypeList v0 -> Eithers.bind (encodeType cx g v0) (\slt -> Right (Utils.stapply1 (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
         Syntax.nameTypeValue = "scala.collection.immutable.Seq"}))) slt))
-      Core.TypeLiteral v0 -> case v0 of
-        Core.LiteralTypeBinary -> Right (Utils.stapply (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+      Model.TypeLiteral v0 -> case v0 of
+        Model.LiteralTypeBinary -> Right (Utils.stapply (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
           Syntax.nameTypeValue = "scala.Array"}))) [
           Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.Byte"}))])
-        Core.LiteralTypeBoolean -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+        Model.LiteralTypeBoolean -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
           Syntax.nameTypeValue = "scala.Boolean"})))
-        Core.LiteralTypeDecimal -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+        Model.LiteralTypeDecimal -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
           Syntax.nameTypeValue = "scala.math.BigDecimal"})))
-        Core.LiteralTypeFloat v1 -> case v1 of
-          Core.FloatTypeFloat32 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+        Model.LiteralTypeFloat v1 -> case v1 of
+          Model.FloatTypeFloat32 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.Float"})))
-          Core.FloatTypeFloat64 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+          Model.FloatTypeFloat64 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.Double"})))
           _ -> Left (Errors.ErrorOther (Errors.OtherError "unsupported float type"))
-        Core.LiteralTypeInteger v1 -> case v1 of
-          Core.IntegerTypeBigint -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+        Model.LiteralTypeInteger v1 -> case v1 of
+          Model.IntegerTypeBigint -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.math.BigInt"})))
-          Core.IntegerTypeInt8 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+          Model.IntegerTypeInt8 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.Byte"})))
-          Core.IntegerTypeInt16 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+          Model.IntegerTypeInt16 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.Short"})))
-          Core.IntegerTypeInt32 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+          Model.IntegerTypeInt32 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.Int"})))
-          Core.IntegerTypeInt64 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+          Model.IntegerTypeInt64 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.Long"})))
-          Core.IntegerTypeUint8 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+          Model.IntegerTypeUint8 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.Byte"})))
-          Core.IntegerTypeUint16 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+          Model.IntegerTypeUint16 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.Int"})))
-          Core.IntegerTypeUint32 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+          Model.IntegerTypeUint32 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.Long"})))
-          Core.IntegerTypeUint64 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+          Model.IntegerTypeUint64 -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
             Syntax.nameTypeValue = "scala.math.BigInt"})))
           _ -> Left (Errors.ErrorOther (Errors.OtherError "unsupported integer type"))
-        Core.LiteralTypeString -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+        Model.LiteralTypeString -> Right (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
           Syntax.nameTypeValue = "scala.Predef.String"})))
         _ -> Left (Errors.ErrorOther (Errors.OtherError "unsupported literal type"))
-      Core.TypeMap v0 ->
-        let kt = Core.mapTypeKeys v0
-            vt = Core.mapTypeValues v0
+      Model.TypeMap v0 ->
+        let kt = Model.mapTypeKeys v0
+            vt = Model.mapTypeValues v0
         in (Eithers.bind (encodeType cx g kt) (\skt -> Eithers.bind (encodeType cx g vt) (\svt -> Right (Utils.stapply2 (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
           Syntax.nameTypeValue = "scala.collection.immutable.Map"}))) skt svt))))
-      Core.TypeOptional v0 -> Eithers.bind (encodeType cx g v0) (\sot -> Right (Utils.stapply1 (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+      Model.TypeOptional v0 -> Eithers.bind (encodeType cx g v0) (\sot -> Right (Utils.stapply1 (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
         Syntax.nameTypeValue = "scala.Option"}))) sot))
-      Core.TypePair v0 ->
-        let ft = Core.pairTypeFirst v0
-            st = Core.pairTypeSecond v0
+      Model.TypePair v0 ->
+        let ft = Model.pairTypeFirst v0
+            st = Model.pairTypeSecond v0
         in (Eithers.bind (encodeType cx g ft) (\sft -> Eithers.bind (encodeType cx g st) (\sst -> Right (Utils.stapply2 (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
           Syntax.nameTypeValue = "Tuple2"}))) sft sst))))
-      Core.TypeRecord _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous record type"))
-      Core.TypeSet v0 -> Eithers.bind (encodeType cx g v0) (\sst -> Right (Utils.stapply1 (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
+      Model.TypeRecord _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous record type"))
+      Model.TypeSet v0 -> Eithers.bind (encodeType cx g v0) (\sst -> Right (Utils.stapply1 (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
         Syntax.nameTypeValue = "scala.collection.immutable.Set"}))) sst))
-      Core.TypeUnion _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous union type"))
-      Core.TypeWrap _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous wrap type"))
-      Core.TypeForall v0 ->
-        let v = Core.forallTypeParameter v0
-            body = Core.forallTypeBody v0
+      Model.TypeUnion _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous union type"))
+      Model.TypeWrap _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous wrap type"))
+      Model.TypeForall v0 ->
+        let v = Model.forallTypeParameter v0
+            body = Model.forallTypeBody v0
         in (Eithers.bind (encodeType cx g body) (\sbody -> Right (Syntax.TypeLambda (Syntax.LambdaType {
           Syntax.lambdaTypeTparams = [
             Utils.stparam v],
           Syntax.lambdaTypeTpe = sbody}))))
-      Core.TypeVariable v0 ->
-        let rawName = Core.unName v0
+      Model.TypeVariable v0 ->
+        let rawName = Model.unName v0
             typeName = Logic.ifElse (Lists.member 46 (Strings.toList rawName)) rawName (Formatting.capitalize rawName)
         in (Right (Syntax.TypeVar (Syntax.VarType {
           Syntax.varTypeName = Syntax.NameType {
@@ -716,17 +724,17 @@
 encodeTypeDefinition cx g td =
 
       let name = Packaging.typeDefinitionName td
-          typ = Core.typeSchemeBody (Packaging.typeDefinitionBody td)
+          typ = Model.typeSchemeBody (Packaging.typeDefinitionBody td)
           lname = Names.localNameOf name
           tname = Syntax.NameType {
                 Syntax.nameTypeValue = lname}
           dname = Syntax.NameData {
                 Syntax.nameDataValue = (Syntax.PredefString lname)}
           freeVars =
-                  Lists.filter (\v -> Logic.not (Lists.member 46 (Strings.toList (Core.unName v)))) (Sets.toList (Variables.freeVariablesInType typ))
+                  Lists.filter (\v -> Logic.not (Lists.member 46 (Strings.toList (Model.unName v)))) (Sets.toList (Variables.freeVariablesInType typ))
           tparams =
                   Lists.map (\_v ->
-                    let vn = Formatting.capitalize (Core.unName _v)
+                    let vn = Formatting.capitalize (Model.unName _v)
                     in Syntax.ParamType {
                       Syntax.paramTypeMods = [],
                       Syntax.paramTypeName = (Syntax.NameValue vn),
@@ -735,12 +743,12 @@
                       Syntax.paramTypeVbounds = [],
                       Syntax.paramTypeCbounds = []}) freeVars
       in case (Strip.deannotateType typ) of
-        Core.TypeForall v0 ->
-          let forallBody = Core.forallTypeBody v0
-              forallParam = Core.forallTypeParameter v0
+        Model.TypeForall v0 ->
+          let forallBody = Model.forallTypeBody v0
+              forallParam = Model.forallTypeParameter v0
               collectForallParams =
                       \t -> \acc -> case (Strip.deannotateType t) of
-                        Core.TypeForall v1 -> collectForallParams (Core.forallTypeBody v1) (Lists.cons (Core.forallTypeParameter v1) acc)
+                        Model.TypeForall v1 -> collectForallParams (Model.forallTypeBody v1) (Lists.cons (Model.forallTypeParameter v1) acc)
                         _ -> (acc, t)
               collected = collectForallParams forallBody [
                     forallParam]
@@ -748,7 +756,7 @@
               innerBody = Pairs.second collected
               allTparams =
                       Lists.map (\_v ->
-                        let vn = Formatting.capitalize (Core.unName _v)
+                        let vn = Formatting.capitalize (Model.unName _v)
                         in Syntax.ParamType {
                           Syntax.paramTypeMods = [],
                           Syntax.paramTypeName = (Syntax.NameValue vn),
@@ -757,7 +765,7 @@
                           Syntax.paramTypeVbounds = [],
                           Syntax.paramTypeCbounds = []}) allForallParams
           in case (Strip.deannotateType innerBody) of
-            Core.TypeRecord v1 -> (\rt -> Eithers.bind (Eithers.mapList (\f -> fieldToParam cx g f) rt) (\params -> Right (Syntax.StatDefn (Syntax.DefnClass (Syntax.ClassDefn {
+            Model.TypeRecord v1 -> (\rt -> Eithers.bind (Eithers.mapList (\f -> fieldToParam cx g f) rt) (\params -> Right (Syntax.StatDefn (Syntax.DefnClass (Syntax.ClassDefn {
               Syntax.classDefnMods = [
                 Syntax.ModCase],
               Syntax.classDefnName = tname,
@@ -772,7 +780,7 @@
                 Syntax.templateInits = [],
                 Syntax.templateSelf = (Syntax.Self ()),
                 Syntax.templateStats = []}}))))) v1
-            Core.TypeUnion v1 -> (\g2 -> \rt -> Eithers.bind (Eithers.mapList (\f -> fieldToEnumCase cx g2 lname allTparams f) rt) (\cases -> Right (Syntax.StatDefn (Syntax.DefnEnum (Syntax.EnumDefn {
+            Model.TypeUnion v1 -> (\g2 -> \rt -> Eithers.bind (Eithers.mapList (\f -> fieldToEnumCase cx g2 lname allTparams f) rt) (\cases -> Right (Syntax.StatDefn (Syntax.DefnEnum (Syntax.EnumDefn {
               Syntax.enumDefnMods = [],
               Syntax.enumDefnName = tname,
               Syntax.enumDefnTparams = allTparams,
@@ -785,7 +793,7 @@
                 Syntax.templateInits = [],
                 Syntax.templateSelf = (Syntax.Self ()),
                 Syntax.templateStats = cases}}))))) g v1
-            Core.TypeWrap v1 -> Eithers.bind (encodeType cx g v1) (\styp -> Right (Syntax.StatDefn (Syntax.DefnType (Syntax.TypeDefn {
+            Model.TypeWrap v1 -> Eithers.bind (encodeType cx g v1) (\styp -> Right (Syntax.StatDefn (Syntax.DefnType (Syntax.TypeDefn {
               Syntax.typeDefnMods = [],
               Syntax.typeDefnName = tname,
               Syntax.typeDefnTparams = allTparams,
@@ -799,7 +807,7 @@
                         Syntax.typeDefnTparams = allTparams,
                         Syntax.typeDefnBody = styp})))
               in (Eithers.either (\_ -> mkAlias (Utils.stref "Any")) mkAlias (encodeType cx2 g2 typ2))) cx g innerBody
-        Core.TypeRecord v0 -> (\cx2 -> \g2 -> \rt2 -> Eithers.bind (Eithers.mapList (\f -> fieldToParam cx2 g2 f) rt2) (\params -> Right (Syntax.StatDefn (Syntax.DefnClass (Syntax.ClassDefn {
+        Model.TypeRecord v0 -> (\cx2 -> \g2 -> \rt2 -> Eithers.bind (Eithers.mapList (\f -> fieldToParam cx2 g2 f) rt2) (\params -> Right (Syntax.StatDefn (Syntax.DefnClass (Syntax.ClassDefn {
           Syntax.classDefnMods = [
             Syntax.ModCase],
           Syntax.classDefnName = tname,
@@ -814,7 +822,7 @@
             Syntax.templateInits = [],
             Syntax.templateSelf = (Syntax.Self ()),
             Syntax.templateStats = []}}))))) cx g v0
-        Core.TypeUnion v0 -> (\tparams2 -> \cx2 -> \g2 -> \rt2 -> Eithers.bind (Eithers.mapList (\f -> fieldToEnumCase cx2 g2 lname tparams2 f) rt2) (\cases -> Right (Syntax.StatDefn (Syntax.DefnEnum (Syntax.EnumDefn {
+        Model.TypeUnion v0 -> (\tparams2 -> \cx2 -> \g2 -> \rt2 -> Eithers.bind (Eithers.mapList (\f -> fieldToEnumCase cx2 g2 lname tparams2 f) rt2) (\cases -> Right (Syntax.StatDefn (Syntax.DefnEnum (Syntax.EnumDefn {
           Syntax.enumDefnMods = [],
           Syntax.enumDefnName = tname,
           Syntax.enumDefnTparams = tparams2,
@@ -827,7 +835,7 @@
             Syntax.templateInits = [],
             Syntax.templateSelf = (Syntax.Self ()),
             Syntax.templateStats = cases}}))))) tparams cx g v0
-        Core.TypeWrap v0 -> Eithers.bind (encodeType cx g v0) (\styp -> Right (Syntax.StatDefn (Syntax.DefnType (Syntax.TypeDefn {
+        Model.TypeWrap v0 -> Eithers.bind (encodeType cx g v0) (\styp -> Right (Syntax.StatDefn (Syntax.DefnType (Syntax.TypeDefn {
           Syntax.typeDefnMods = [],
           Syntax.typeDefnName = tname,
           Syntax.typeDefnTparams = tparams,
@@ -843,7 +851,7 @@
           in (Eithers.either (\_ -> mkAlias (Utils.stref "Any")) mkAlias (encodeType cx2 g2 typ2))) lname tparams cx g typ
 
 -- | Encode a parameter with its type annotation
-encodeTypedParam :: t0 -> t1 -> (Core.Name, Core.Type) -> Either Errors.Error Syntax.ParamData
+encodeTypedParam :: t0 -> t1 -> (Model.Name, Model.Type) -> Either Errors.Error Syntax.ParamData
 encodeTypedParam cx g pair =
 
       let pname = Utils.scalaEscapeName (Names.localNameOf (Pairs.first pair))
@@ -855,110 +863,110 @@
         Syntax.paramDataDefault = Nothing})))
 
 -- | Encode an untyped application term by first inferring types
-encodeUntypeApplicationTerm :: S.Set String -> Typing.InferenceContext -> Graph.Graph -> Core.Term -> Either Errors.Error Syntax.Data
+encodeUntypeApplicationTerm :: S.Set String -> Typing.InferenceContext -> Graph.Graph -> Model.Term -> Either Errors.Error Syntax.Data
 encodeUntypeApplicationTerm overlaySubs cx g term =
     Eithers.bind (Inference.inferInGraphContext cx g term) (\result -> encodeTerm overlaySubs cx g (Typing.inferenceResultTerm result))
 
 -- | Extract the innermost body from a term
-extractBody :: Core.Term -> Core.Term
+extractBody :: Model.Term -> Model.Term
 extractBody t =
     case (Strip.deannotateAndDetypeTerm t) of
-      Core.TermLambda v0 -> extractBody (Core.lambdaBody v0)
-      Core.TermTypeLambda v0 -> extractBody (Core.typeLambdaBody v0)
-      Core.TermTypeApplication v0 -> extractBody (Core.typeApplicationTermBody v0)
-      Core.TermLet v0 -> extractBody (Core.letBody v0)
+      Model.TermLambda v0 -> extractBody (Model.lambdaBody v0)
+      Model.TermTypeLambda v0 -> extractBody (Model.typeLambdaBody v0)
+      Model.TermTypeApplication v0 -> extractBody (Model.typeApplicationTermBody v0)
+      Model.TermLet v0 -> extractBody (Model.letBody v0)
       _ -> t
 
 -- | Extract the final return type from a function type
-extractCodomain :: Core.Type -> Core.Type
+extractCodomain :: Model.Type -> Model.Type
 extractCodomain t =
     case (Strip.deannotateType t) of
-      Core.TypeFunction v0 -> extractCodomain (Core.functionTypeCodomain v0)
-      Core.TypeForall v0 -> extractCodomain (Core.forallTypeBody v0)
+      Model.TypeFunction v0 -> extractCodomain (Model.functionTypeCodomain v0)
+      Model.TypeForall v0 -> extractCodomain (Model.forallTypeBody v0)
       _ -> t
 
 -- | Extract direct-return (input-var, output-var) pairs from a domain type (#589)
-extractDirectReturn :: S.Set Core.Name -> Core.Type -> [(Core.Name, Core.Name)]
+extractDirectReturn :: S.Set Model.Name -> Model.Type -> [(Model.Name, Model.Name)]
 extractDirectReturn tparamSet t = extractDirectReturnGo tparamSet t
 
 -- | Recursive worker for extractDirectReturn (#589)
-extractDirectReturnGo :: S.Set Core.Name -> Core.Type -> [(Core.Name, Core.Name)]
+extractDirectReturnGo :: S.Set Model.Name -> Model.Type -> [(Model.Name, Model.Name)]
 extractDirectReturnGo tparamSet t =
     case (Strip.deannotateType t) of
-      Core.TypeFunction v0 ->
-        let dom = Strip.deannotateType (Core.functionTypeDomain v0)
-            cod = Core.functionTypeCodomain v0
+      Model.TypeFunction v0 ->
+        let dom = Strip.deannotateType (Model.functionTypeDomain v0)
+            cod = Model.functionTypeCodomain v0
         in case dom of
-          Core.TypeVariable v1 -> Logic.ifElse (Sets.member v1 tparamSet) (case (Strip.deannotateType cod) of
-            Core.TypeFunction v2 ->
-              let midArg = Strip.deannotateType (Core.functionTypeDomain v2)
-                  retPart = Strip.deannotateType (Core.functionTypeCodomain v2)
+          Model.TypeVariable v1 -> Logic.ifElse (Sets.member v1 tparamSet) (case (Strip.deannotateType cod) of
+            Model.TypeFunction v2 ->
+              let midArg = Strip.deannotateType (Model.functionTypeDomain v2)
+                  retPart = Strip.deannotateType (Model.functionTypeCodomain v2)
               in case midArg of
-                Core.TypeVariable v3 -> Logic.ifElse (Sets.member v3 tparamSet) [] (case retPart of
-                  Core.TypeVariable v4 -> Logic.ifElse (Sets.member v4 tparamSet) (Lists.singleton (v1, v4)) []
+                Model.TypeVariable v3 -> Logic.ifElse (Sets.member v3 tparamSet) [] (case retPart of
+                  Model.TypeVariable v4 -> Logic.ifElse (Sets.member v4 tparamSet) (Lists.singleton (v1, v4)) []
                   _ -> [])
                 _ -> case retPart of
-                  Core.TypeVariable v3 -> Logic.ifElse (Sets.member v3 tparamSet) (Lists.singleton (v1, v3)) []
+                  Model.TypeVariable v3 -> Logic.ifElse (Sets.member v3 tparamSet) (Lists.singleton (v1, v3)) []
                   _ -> []
             _ -> []) (extractDirectReturnGo tparamSet cod)
           _ -> extractDirectReturnGo tparamSet cod
       _ -> []
 
 -- | Extract domain types from a function type
-extractDomains :: Core.Type -> [Core.Type]
+extractDomains :: Model.Type -> [Model.Type]
 extractDomains t =
     case (Strip.deannotateType t) of
-      Core.TypeFunction v0 -> Lists.cons (Core.functionTypeDomain v0) (extractDomains (Core.functionTypeCodomain v0))
-      Core.TypeForall v0 -> extractDomains (Core.forallTypeBody v0)
+      Model.TypeFunction v0 -> Lists.cons (Model.functionTypeDomain v0) (extractDomains (Model.functionTypeCodomain v0))
+      Model.TypeForall v0 -> extractDomains (Model.forallTypeBody v0)
       _ -> []
 
 -- | Extract an (input-var, output-var) accumulator pair from a domain type (#589)
-extractInOutPair :: Core.Type -> [(Core.Name, Core.Name)]
+extractInOutPair :: Model.Type -> [(Model.Name, Model.Name)]
 extractInOutPair t =
     case (Strip.deannotateType t) of
-      Core.TypeFunction v0 -> case (Strip.deannotateType (Core.functionTypeDomain v0)) of
-        Core.TypeVariable v1 ->
-          let retType = unwrapReturnType (Core.functionTypeCodomain v0)
+      Model.TypeFunction v0 -> case (Strip.deannotateType (Model.functionTypeDomain v0)) of
+        Model.TypeVariable v1 ->
+          let retType = unwrapReturnType (Model.functionTypeCodomain v0)
           in case (Strip.deannotateType retType) of
-            Core.TypePair v2 -> case (Strip.deannotateType (Core.pairTypeFirst v2)) of
-              Core.TypeVariable v3 -> Lists.singleton (v1, v3)
+            Model.TypePair v2 -> case (Strip.deannotateType (Model.pairTypeFirst v2)) of
+              Model.TypeVariable v3 -> Lists.singleton (v1, v3)
               _ -> []
             _ -> []
         _ -> []
       _ -> []
 
 -- | Extract let bindings from a term
-extractLetBindings :: Core.Term -> [Core.Binding]
+extractLetBindings :: Model.Term -> [Model.Binding]
 extractLetBindings t =
     case (Strip.deannotateAndDetypeTerm t) of
-      Core.TermLambda v0 -> extractLetBindings (Core.lambdaBody v0)
-      Core.TermTypeLambda v0 -> extractLetBindings (Core.typeLambdaBody v0)
-      Core.TermTypeApplication v0 -> extractLetBindings (Core.typeApplicationTermBody v0)
-      Core.TermLet v0 -> Lists.concat2 (Core.letBindings v0) (extractLetBindings (Core.letBody v0))
+      Model.TermLambda v0 -> extractLetBindings (Model.lambdaBody v0)
+      Model.TermTypeLambda v0 -> extractLetBindings (Model.typeLambdaBody v0)
+      Model.TermTypeApplication v0 -> extractLetBindings (Model.typeApplicationTermBody v0)
+      Model.TermLet v0 -> Lists.concat2 (Model.letBindings v0) (extractLetBindings (Model.letBody v0))
       _ -> []
 
 -- | Extract parameter names from a term
-extractParams :: Core.Term -> [Core.Name]
+extractParams :: Model.Term -> [Model.Name]
 extractParams t =
     case (Strip.deannotateAndDetypeTerm t) of
-      Core.TermLambda v0 -> Lists.cons (Core.lambdaParameter v0) (extractParams (Core.lambdaBody v0))
-      Core.TermTypeLambda v0 -> extractParams (Core.typeLambdaBody v0)
-      Core.TermTypeApplication v0 -> extractParams (Core.typeApplicationTermBody v0)
-      Core.TermLet v0 -> extractParams (Core.letBody v0)
+      Model.TermLambda v0 -> Lists.cons (Model.lambdaParameter v0) (extractParams (Model.lambdaBody v0))
+      Model.TermTypeLambda v0 -> extractParams (Model.typeLambdaBody v0)
+      Model.TermTypeApplication v0 -> extractParams (Model.typeApplicationTermBody v0)
+      Model.TermLet v0 -> extractParams (Model.letBody v0)
       _ -> []
 
 -- | Convert a field type to a Scala enum case
-fieldToEnumCase :: t0 -> t1 -> String -> [Syntax.ParamType] -> Core.FieldType -> Either Errors.Error Syntax.Stat
+fieldToEnumCase :: t0 -> t1 -> String -> [Syntax.ParamType] -> Model.FieldType -> Either Errors.Error Syntax.Stat
 fieldToEnumCase cx g parentName tparams ft =
 
-      let fname = Utils.scalaEscapeEnumCaseName (Core.unName (Core.fieldTypeName ft))
-          ftyp = Core.fieldTypeType ft
+      let fname = Utils.scalaEscapeEnumCaseName (Model.unName (Model.fieldTypeName ft))
+          ftyp = Model.fieldTypeType ft
           caseName = Syntax.NameData {
                 Syntax.nameDataValue = (Syntax.PredefString fname)}
           isUnit =
                   case (Strip.deannotateType ftyp) of
-                    Core.TypeUnit -> True
-                    Core.TypeRecord v0 -> Equality.equal (Lists.length v0) 0
+                    Model.TypeUnit -> True
+                    Model.TypeRecord v0 -> Equality.equal (Lists.length v0) 0
                     _ -> False
           parentType =
                   Logic.ifElse (Lists.isEmpty tparams) (Syntax.TypeRef (Syntax.RefTypeName (Syntax.NameType {
@@ -969,17 +977,18 @@
       in (Eithers.bind (encodeType cx g ftyp) (\sftyp -> Right (Syntax.StatDefn (Syntax.DefnEnumCase (Syntax.EnumCaseDefn {
         Syntax.enumCaseDefnMods = [],
         Syntax.enumCaseDefnName = caseName,
-        Syntax.enumCaseDefnTparams = [],
+        Syntax.enumCaseDefnTparams = (Logic.ifElse isUnit tparams []),
         Syntax.enumCaseDefnCtor = Syntax.PrimaryCtor {
           Syntax.primaryCtorMods = [],
           Syntax.primaryCtorName = (Syntax.NameValue ""),
-          Syntax.primaryCtorParamss = [
-            Logic.ifElse isUnit [] [
+          Syntax.primaryCtorParamss = (Logic.ifElse isUnit (Logic.ifElse (Lists.isEmpty tparams) [] [
+            []]) [
+            [
               Syntax.ParamData {
                 Syntax.paramDataMods = [],
                 Syntax.paramDataName = (Syntax.NameValue "value"),
                 Syntax.paramDataDecltpe = (Just sftyp),
-                Syntax.paramDataDefault = Nothing}]]},
+                Syntax.paramDataDefault = Nothing}]])},
         Syntax.enumCaseDefnInits = [
           Syntax.Init {
             Syntax.initTpe = parentType,
@@ -987,11 +996,11 @@
             Syntax.initArgss = []}]})))))
 
 -- | Convert a field type to a Scala parameter
-fieldToParam :: t0 -> t1 -> Core.FieldType -> Either Errors.Error Syntax.ParamData
+fieldToParam :: t0 -> t1 -> Model.FieldType -> Either Errors.Error Syntax.ParamData
 fieldToParam cx g ft =
 
-      let fname = Utils.scalaEscapeName (Core.unName (Core.fieldTypeName ft))
-          ftyp = Core.fieldTypeType ft
+      let fname = Utils.scalaEscapeName (Model.unName (Model.fieldTypeName ft))
+          ftyp = Model.fieldTypeType ft
       in (Eithers.bind (encodeType cx g ftyp) (\sftyp -> Right (Syntax.ParamData {
         Syntax.paramDataMods = [],
         Syntax.paramDataName = (Syntax.NameValue fname),
@@ -1003,10 +1012,10 @@
 filterByFlags xs flags = Lists.map (\p -> Pairs.first p) (Lists.filter (\p -> Pairs.second p) (Lists.zip xs flags))
 
 -- | Find the domain type from annotations
-findDomain :: t0 -> Graph.Graph -> M.Map Core.Name Core.Term -> Either Errors.Error Core.Type
+findDomain :: t0 -> Graph.Graph -> M.Map Model.Name Model.Term -> Either Errors.Error Model.Type
 findDomain cx g meta =
     Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g meta)) (\r -> Optionals.match r (Left (Errors.ErrorOther (Errors.OtherError "expected a typed term"))) (\t -> case (Strip.deannotateType t) of
-      Core.TypeFunction v0 -> Right (Core.functionTypeDomain v0)
+      Model.TypeFunction v0 -> Right (Model.functionTypeDomain v0)
       _ -> Left (Errors.ErrorOther (Errors.OtherError "expected a function type"))))
 
 -- | Find import statements for the module
@@ -1017,24 +1026,24 @@
       (Lists.map (toPrimImport overlaySubs) (Sets.toList primImps))])))
 
 -- | If t is Pair(var, _), return the first component's variable name (#589)
-findPairFirst :: Core.Type -> Maybe Core.Name
+findPairFirst :: Model.Type -> Maybe Model.Name
 findPairFirst t =
     case (Strip.deannotateType t) of
-      Core.TypePair v0 -> case (Strip.deannotateType (Core.pairTypeFirst v0)) of
-        Core.TypeVariable v1 -> Just v1
+      Model.TypePair v0 -> case (Strip.deannotateType (Model.pairTypeFirst v0)) of
+        Model.TypeVariable v1 -> Just v1
         _ -> Nothing
       _ -> Nothing
 
 -- | Find the Scala domain type for a function from annotations
-findSdom :: t0 -> Graph.Graph -> M.Map Core.Name Core.Term -> Either Errors.Error (Maybe Syntax.Type)
+findSdom :: t0 -> Graph.Graph -> M.Map Model.Name Model.Term -> Either Errors.Error (Maybe Syntax.Type)
 findSdom cx g meta =
     Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g meta)) (\mtyp -> Optionals.match mtyp (Right Nothing) (\t -> case (Strip.deannotateType t) of
-      Core.TypeFunction v0 ->
-        let dom = Core.functionTypeDomain v0
+      Model.TypeFunction v0 ->
+        let dom = Model.functionTypeDomain v0
         in (Eithers.bind (encodeType cx g dom) (\sdom -> Right (Just sdom)))
-      Core.TypeForall v0 -> case (Strip.deannotateType (Core.forallTypeBody v0)) of
-        Core.TypeFunction v1 ->
-          let dom2 = Core.functionTypeDomain v1
+      Model.TypeForall v0 -> case (Strip.deannotateType (Model.forallTypeBody v0)) of
+        Model.TypeFunction v1 ->
+          let dom2 = Model.functionTypeDomain v1
           in (Eithers.bind (encodeType cx g dom2) (\sdom2 -> Right (Just sdom2)))
         _ -> Right Nothing
       _ -> Eithers.bind (encodeType cx g t) (\st -> Right (Just st))))
@@ -1055,8 +1064,8 @@
       in (Maps.alter (\mv -> Optionals.match mv (Just (Lists.singleton vv)) (\vs -> Just (Lists.concat2 vs (Lists.singleton vv)))) k m)) Maps.empty pairs
 
 -- | True if a type-variable name has no namespace qualifier (#589)
-isSimpleName :: Core.Name -> Bool
-isSimpleName name = Equality.equal (Lists.length (Strings.splitOn "." (Core.unName name))) 1
+isSimpleName :: Model.Name -> Bool
+isSimpleName name = Equality.equal (Lists.length (Strings.splitOn "." (Model.unName name))) 1
 
 -- | Convert a Hydra module to Scala source code
 moduleToScala :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> t0 -> Graph.Graph -> Either Errors.Error (M.Map String String)
@@ -1066,16 +1075,16 @@
       in (Right (Maps.singleton (Names.moduleNameToFilePath Util.CaseConventionCamel (File.FileExtension "scala") (Packaging.moduleName mod)) s)))
 
 -- | Lift a Name->Name substitution map to a Name->Type map (#589)
-nameMapToTypeMap :: Ord t0 => (M.Map t0 Core.Name -> M.Map t0 Core.Type)
-nameMapToTypeMap m = Maps.map (\vv -> Core.TypeVariable vv) m
+nameMapToTypeMap :: Ord t0 => (M.Map t0 Model.Name -> M.Map t0 Model.Type)
+nameMapToTypeMap m = Maps.map (\vv -> Model.TypeVariable vv) m
 
 -- | Peel up to n curried domain types off a function type (#589)
-peelDomainTypes :: Int -> Core.Type -> ([Core.Type], Core.Type)
+peelDomainTypes :: Int -> Model.Type -> ([Model.Type], Model.Type)
 peelDomainTypes n t =
     Logic.ifElse (Ordering.lte n 0) ([], t) (case (Strip.deannotateType t) of
-      Core.TypeFunction v0 ->
-        let rest = peelDomainTypes (Math.sub n 1) (Core.functionTypeCodomain v0)
-        in (Lists.cons (Core.functionTypeDomain v0) (Pairs.first rest), (Pairs.second rest))
+      Model.TypeFunction v0 ->
+        let rest = peelDomainTypes (Math.sub n 1) (Model.functionTypeCodomain v0)
+        in (Lists.cons (Model.functionTypeDomain v0) (Pairs.first rest), (Pairs.second rest))
       _ -> ([], t))
 
 -- | Compute the self-reference substitution over grouped accumulator pairs (#589)
@@ -1089,56 +1098,56 @@
     Logic.ifElse (Lists.member inVar outVars) (Lists.foldl (\s -> \vv -> Logic.ifElse (Equality.equal vv inVar) s (Maps.insert vv inVar s)) subst outVars) subst
 
 -- | Strip wrap eliminations from terms (newtypes are erased in Scala)
-stripWrapEliminations :: Core.Term -> Core.Term
+stripWrapEliminations :: Model.Term -> Model.Term
 stripWrapEliminations t =
     case (Strip.deannotateAndDetypeTerm t) of
-      Core.TermApplication v0 ->
-        let appFun = Core.applicationFunction v0
-            appArg = Core.applicationArgument v0
+      Model.TermApplication v0 ->
+        let appFun = Model.applicationFunction v0
+            appArg = Model.applicationArgument v0
         in case (Strip.deannotateAndDetypeTerm appFun) of
-          Core.TermUnwrap _ -> stripWrapEliminations appArg
-          Core.TermApplication v1 ->
-            let innerFun = Core.applicationFunction v1
-                innerArg = Core.applicationArgument v1
+          Model.TermUnwrap _ -> stripWrapEliminations appArg
+          Model.TermApplication v1 ->
+            let innerFun = Model.applicationFunction v1
+                innerArg = Model.applicationArgument v1
             in case (Strip.deannotateAndDetypeTerm innerFun) of
-              Core.TermUnwrap _ -> stripWrapEliminations (Core.TermApplication (Core.Application {
-                Core.applicationFunction = innerArg,
-                Core.applicationArgument = appArg}))
+              Model.TermUnwrap _ -> stripWrapEliminations (Model.TermApplication (Model.Application {
+                Model.applicationFunction = innerArg,
+                Model.applicationArgument = appArg}))
               _ -> t
           _ -> t
       _ -> t
 
 -- | Substitute type variables in t per subst (#589)
-substituteTypeVarsWithTypes :: M.Map Core.Name Core.Type -> Core.Type -> Core.Type
+substituteTypeVarsWithTypes :: M.Map Model.Name Model.Type -> Model.Type -> Model.Type
 substituteTypeVarsWithTypes subst t = substituteTypeVarsWithTypesGo subst (Strip.deannotateType t)
 
 -- | Recursive worker for substituteTypeVarsWithTypes (#589)
-substituteTypeVarsWithTypesGo :: M.Map Core.Name Core.Type -> Core.Type -> Core.Type
+substituteTypeVarsWithTypesGo :: M.Map Model.Name Model.Type -> Model.Type -> Model.Type
 substituteTypeVarsWithTypesGo subst t =
     case (Strip.deannotateType t) of
-      Core.TypeVariable v0 -> Optionals.match (Maps.lookup v0 subst) t (\rep -> rep)
-      Core.TypeFunction v0 -> Core.TypeFunction (Core.FunctionType {
-        Core.functionTypeDomain = (substituteTypeVarsWithTypesGo subst (Core.functionTypeDomain v0)),
-        Core.functionTypeCodomain = (substituteTypeVarsWithTypesGo subst (Core.functionTypeCodomain v0))})
-      Core.TypeApplication v0 -> Core.TypeApplication (Core.ApplicationType {
-        Core.applicationTypeFunction = (substituteTypeVarsWithTypesGo subst (Core.applicationTypeFunction v0)),
-        Core.applicationTypeArgument = (substituteTypeVarsWithTypesGo subst (Core.applicationTypeArgument v0))})
-      Core.TypeList v0 -> Core.TypeList (substituteTypeVarsWithTypesGo subst v0)
-      Core.TypeSet v0 -> Core.TypeSet (substituteTypeVarsWithTypesGo subst v0)
-      Core.TypeOptional v0 -> Core.TypeOptional (substituteTypeVarsWithTypesGo subst v0)
-      Core.TypeEffect v0 -> Core.TypeEffect (substituteTypeVarsWithTypesGo subst v0)
-      Core.TypeMap v0 -> Core.TypeMap (Core.MapType {
-        Core.mapTypeKeys = (substituteTypeVarsWithTypesGo subst (Core.mapTypeKeys v0)),
-        Core.mapTypeValues = (substituteTypeVarsWithTypesGo subst (Core.mapTypeValues v0))})
-      Core.TypePair v0 -> Core.TypePair (Core.PairType {
-        Core.pairTypeFirst = (substituteTypeVarsWithTypesGo subst (Core.pairTypeFirst v0)),
-        Core.pairTypeSecond = (substituteTypeVarsWithTypesGo subst (Core.pairTypeSecond v0))})
-      Core.TypeEither v0 -> Core.TypeEither (Core.EitherType {
-        Core.eitherTypeLeft = (substituteTypeVarsWithTypesGo subst (Core.eitherTypeLeft v0)),
-        Core.eitherTypeRight = (substituteTypeVarsWithTypesGo subst (Core.eitherTypeRight v0))})
-      Core.TypeForall v0 -> Core.TypeForall (Core.ForallType {
-        Core.forallTypeParameter = (Core.forallTypeParameter v0),
-        Core.forallTypeBody = (substituteTypeVarsWithTypesGo subst (Core.forallTypeBody v0))})
+      Model.TypeVariable v0 -> Optionals.match (Maps.lookup v0 subst) t (\rep -> rep)
+      Model.TypeFunction v0 -> Model.TypeFunction (Model.FunctionType {
+        Model.functionTypeDomain = (substituteTypeVarsWithTypesGo subst (Model.functionTypeDomain v0)),
+        Model.functionTypeCodomain = (substituteTypeVarsWithTypesGo subst (Model.functionTypeCodomain v0))})
+      Model.TypeApplication v0 -> Model.TypeApplication (Model.ApplicationType {
+        Model.applicationTypeFunction = (substituteTypeVarsWithTypesGo subst (Model.applicationTypeFunction v0)),
+        Model.applicationTypeArgument = (substituteTypeVarsWithTypesGo subst (Model.applicationTypeArgument v0))})
+      Model.TypeList v0 -> Model.TypeList (substituteTypeVarsWithTypesGo subst v0)
+      Model.TypeSet v0 -> Model.TypeSet (substituteTypeVarsWithTypesGo subst v0)
+      Model.TypeOptional v0 -> Model.TypeOptional (substituteTypeVarsWithTypesGo subst v0)
+      Model.TypeEffect v0 -> Model.TypeEffect (substituteTypeVarsWithTypesGo subst v0)
+      Model.TypeMap v0 -> Model.TypeMap (Model.MapType {
+        Model.mapTypeKeys = (substituteTypeVarsWithTypesGo subst (Model.mapTypeKeys v0)),
+        Model.mapTypeValues = (substituteTypeVarsWithTypesGo subst (Model.mapTypeValues v0))})
+      Model.TypePair v0 -> Model.TypePair (Model.PairType {
+        Model.pairTypeFirst = (substituteTypeVarsWithTypesGo subst (Model.pairTypeFirst v0)),
+        Model.pairTypeSecond = (substituteTypeVarsWithTypesGo subst (Model.pairTypeSecond v0))})
+      Model.TypeEither v0 -> Model.TypeEither (Model.EitherType {
+        Model.eitherTypeLeft = (substituteTypeVarsWithTypesGo subst (Model.eitherTypeLeft v0)),
+        Model.eitherTypeRight = (substituteTypeVarsWithTypesGo subst (Model.eitherTypeRight v0))})
+      Model.TypeForall v0 -> Model.TypeForall (Model.ForallType {
+        Model.forallTypeParameter = (Model.forallTypeParameter v0),
+        Model.forallTypeBody = (substituteTypeVarsWithTypesGo subst (Model.forallTypeBody v0))})
       _ -> t
 
 -- | Create an element import statement
@@ -1158,11 +1167,12 @@
 
       let raw = Packaging.unModuleName ns
           parts = Strings.splitOn "." raw
-          sub = Strings.join "." (Lists.drop 2 parts)
+          sub = Strings.join "." (Lists.drop 3 parts)
           redirected =
-                  Logic.ifElse (Logic.and (Logic.and (Equality.equal (Lists.length parts) 3) (Equality.equal (Lists.take 2 parts) [
+                  Logic.ifElse (Logic.and (Logic.and (Equality.equal (Lists.length parts) 4) (Equality.equal (Lists.take 3 parts) [
                     "hydra",
-                    "lib"])) (Sets.member sub overlaySubs)) (Strings.concat2 "hydra.overlay.scala.lib." sub) raw
+                    "core",
+                    "lib"])) (Sets.member sub overlaySubs)) (Strings.concat2 "hydra.core.overlay.scala.lib." sub) raw
           redirectedName =
                   Syntax.NameData {
                     Syntax.nameDataValue = (Syntax.PredefString (Strings.join "." (Strings.splitOn "." redirected)))}
@@ -1189,9 +1199,9 @@
           Syntax.nameTypeValue = s}}))
 
 -- | Unwrap a (possibly curried/applied) type down to its ultimate return type (#589)
-unwrapReturnType :: Core.Type -> Core.Type
+unwrapReturnType :: Model.Type -> Model.Type
 unwrapReturnType t =
     case (Strip.deannotateType t) of
-      Core.TypeFunction v0 -> unwrapReturnType (Core.functionTypeCodomain v0)
-      Core.TypeApplication v0 -> unwrapReturnType (Core.applicationTypeArgument v0)
+      Model.TypeFunction v0 -> unwrapReturnType (Model.functionTypeCodomain v0)
+      Model.TypeApplication v0 -> unwrapReturnType (Model.applicationTypeArgument v0)
       _ -> t
diff --git a/src/main/haskell/Hydra/Scala/Dsl/Syntax.hs b/src/main/haskell/Hydra/Scala/Dsl/Syntax.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Scala/Dsl/Syntax.hs
@@ -0,0 +1,11762 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | DSL functions for hydra.scala.syntax
+
+module Hydra.Scala.Dsl.Syntax where
+
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Scala.Syntax as Syntax
+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
+import qualified Data.Scientific as Sci
+import Data.Void
+import qualified Data.Int as I
+
+-- | DSL constructor for hydra.scala.syntax.AlternativePat
+alternativePat :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.AlternativePat
+alternativePat lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AlternativePat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the lhs field of hydra.scala.syntax.AlternativePat
+alternativePatLhs :: Typed.TypedTerm Syntax.AlternativePat -> Typed.TypedTerm Syntax.Pat
+alternativePatLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AlternativePat"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.AlternativePat
+alternativePatRhs :: Typed.TypedTerm Syntax.AlternativePat -> Typed.TypedTerm Syntax.Pat
+alternativePatRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AlternativePat"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.scala.syntax.AlternativePat
+alternativePatWithLhs :: Typed.TypedTerm Syntax.AlternativePat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.AlternativePat
+alternativePatWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AlternativePat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AlternativePat"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.AlternativePat
+alternativePatWithRhs :: Typed.TypedTerm Syntax.AlternativePat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.AlternativePat
+alternativePatWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AlternativePat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AlternativePat"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.AndType
+andType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AndType
+andType lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AndType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the lhs field of hydra.scala.syntax.AndType
+andTypeLhs :: Typed.TypedTerm Syntax.AndType -> Typed.TypedTerm Syntax.Type
+andTypeLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AndType"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.AndType
+andTypeRhs :: Typed.TypedTerm Syntax.AndType -> Typed.TypedTerm Syntax.Type
+andTypeRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AndType"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.scala.syntax.AndType
+andTypeWithLhs :: Typed.TypedTerm Syntax.AndType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AndType
+andTypeWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AndType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AndType"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.AndType
+andTypeWithRhs :: Typed.TypedTerm Syntax.AndType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AndType
+andTypeWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AndType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AndType"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.AnnotMod
+annotMod :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.AnnotMod
+annotMod init =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AnnotMod"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "init"),
+          Model.fieldTerm = (Typed.unTypedTerm init)}]}))
+
+-- | DSL accessor for the init field of hydra.scala.syntax.AnnotMod
+annotModInit :: Typed.TypedTerm Syntax.AnnotMod -> Typed.TypedTerm Syntax.Init
+annotModInit x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AnnotMod"),
+        Model.projectionFieldName = (Model.Name "init")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the init field of hydra.scala.syntax.AnnotMod
+annotModWithInit :: Typed.TypedTerm Syntax.AnnotMod -> Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.AnnotMod
+annotModWithInit original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AnnotMod"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "init"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.AnnotateData
+annotateData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.AnnotMod] -> Typed.TypedTerm Syntax.AnnotateData
+annotateData expr annots =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AnnotateData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm expr)},
+        Model.Field {
+          Model.fieldName = (Model.Name "annots"),
+          Model.fieldTerm = (Typed.unTypedTerm annots)}]}))
+
+-- | DSL accessor for the annots field of hydra.scala.syntax.AnnotateData
+annotateDataAnnots :: Typed.TypedTerm Syntax.AnnotateData -> Typed.TypedTerm [Syntax.AnnotMod]
+annotateDataAnnots x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AnnotateData"),
+        Model.projectionFieldName = (Model.Name "annots")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the expr field of hydra.scala.syntax.AnnotateData
+annotateDataExpr :: Typed.TypedTerm Syntax.AnnotateData -> Typed.TypedTerm Syntax.Data
+annotateDataExpr x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AnnotateData"),
+        Model.projectionFieldName = (Model.Name "expr")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the annots field of hydra.scala.syntax.AnnotateData
+annotateDataWithAnnots :: Typed.TypedTerm Syntax.AnnotateData -> Typed.TypedTerm [Syntax.AnnotMod] -> Typed.TypedTerm Syntax.AnnotateData
+annotateDataWithAnnots original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AnnotateData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AnnotateData"),
+              Model.projectionFieldName = (Model.Name "expr")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "annots"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the expr field of hydra.scala.syntax.AnnotateData
+annotateDataWithExpr :: Typed.TypedTerm Syntax.AnnotateData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.AnnotateData
+annotateDataWithExpr original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AnnotateData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "annots"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AnnotateData"),
+              Model.projectionFieldName = (Model.Name "annots")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.AnnotateType
+annotateType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm [Syntax.AnnotMod] -> Typed.TypedTerm Syntax.AnnotateType
+annotateType tpe annots =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AnnotateType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "annots"),
+          Model.fieldTerm = (Typed.unTypedTerm annots)}]}))
+
+-- | DSL accessor for the annots field of hydra.scala.syntax.AnnotateType
+annotateTypeAnnots :: Typed.TypedTerm Syntax.AnnotateType -> Typed.TypedTerm [Syntax.AnnotMod]
+annotateTypeAnnots x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AnnotateType"),
+        Model.projectionFieldName = (Model.Name "annots")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.AnnotateType
+annotateTypeTpe :: Typed.TypedTerm Syntax.AnnotateType -> Typed.TypedTerm Syntax.Type
+annotateTypeTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AnnotateType"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the annots field of hydra.scala.syntax.AnnotateType
+annotateTypeWithAnnots :: Typed.TypedTerm Syntax.AnnotateType -> Typed.TypedTerm [Syntax.AnnotMod] -> Typed.TypedTerm Syntax.AnnotateType
+annotateTypeWithAnnots original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AnnotateType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AnnotateType"),
+              Model.projectionFieldName = (Model.Name "tpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "annots"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.AnnotateType
+annotateTypeWithTpe :: Typed.TypedTerm Syntax.AnnotateType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AnnotateType
+annotateTypeWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AnnotateType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "annots"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AnnotateType"),
+              Model.projectionFieldName = (Model.Name "annots")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.scala.syntax.AnonymousData wrapper
+anonymousData :: Typed.TypedTerm () -> Typed.TypedTerm Syntax.AnonymousData
+anonymousData x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.scala.syntax.AnonymousData"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for the hydra.scala.syntax.AnonymousNameType wrapper
+anonymousNameType :: Typed.TypedTerm () -> Typed.TypedTerm Syntax.AnonymousNameType
+anonymousNameType x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.scala.syntax.AnonymousNameType"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.scala.syntax.ApplyData
+applyData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyData
+applyData fun args =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "fun"),
+          Model.fieldTerm = (Typed.unTypedTerm fun)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm args)}]}))
+
+-- | DSL accessor for the args field of hydra.scala.syntax.ApplyData
+applyDataArgs :: Typed.TypedTerm Syntax.ApplyData -> Typed.TypedTerm [Syntax.Data]
+applyDataArgs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyData"),
+        Model.projectionFieldName = (Model.Name "args")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the fun field of hydra.scala.syntax.ApplyData
+applyDataFun :: Typed.TypedTerm Syntax.ApplyData -> Typed.TypedTerm Syntax.Data
+applyDataFun x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyData"),
+        Model.projectionFieldName = (Model.Name "fun")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the args field of hydra.scala.syntax.ApplyData
+applyDataWithArgs :: Typed.TypedTerm Syntax.ApplyData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyData
+applyDataWithArgs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "fun"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyData"),
+              Model.projectionFieldName = (Model.Name "fun")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the fun field of hydra.scala.syntax.ApplyData
+applyDataWithFun :: Typed.TypedTerm Syntax.ApplyData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyData
+applyDataWithFun original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "fun"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyData"),
+              Model.projectionFieldName = (Model.Name "args")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ApplyInfixData
+applyInfixData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyInfixData
+applyInfixData lhs op targs args =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Typed.unTypedTerm op)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Typed.unTypedTerm targs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm args)}]}))
+
+-- | DSL accessor for the args field of hydra.scala.syntax.ApplyInfixData
+applyInfixDataArgs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm [Syntax.Data]
+applyInfixDataArgs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+        Model.projectionFieldName = (Model.Name "args")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the lhs field of hydra.scala.syntax.ApplyInfixData
+applyInfixDataLhs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm Syntax.Data
+applyInfixDataLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the op field of hydra.scala.syntax.ApplyInfixData
+applyInfixDataOp :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm Syntax.NameData
+applyInfixDataOp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+        Model.projectionFieldName = (Model.Name "op")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the targs field of hydra.scala.syntax.ApplyInfixData
+applyInfixDataTargs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm [Syntax.Type]
+applyInfixDataTargs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+        Model.projectionFieldName = (Model.Name "targs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the args field of hydra.scala.syntax.ApplyInfixData
+applyInfixDataWithArgs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyInfixData
+applyInfixDataWithArgs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "op")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "targs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the lhs field of hydra.scala.syntax.ApplyInfixData
+applyInfixDataWithLhs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyInfixData
+applyInfixDataWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "op")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "targs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "args")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the op field of hydra.scala.syntax.ApplyInfixData
+applyInfixDataWithOp :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ApplyInfixData
+applyInfixDataWithOp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "targs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "args")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the targs field of hydra.scala.syntax.ApplyInfixData
+applyInfixDataWithTargs :: Typed.TypedTerm Syntax.ApplyInfixData -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ApplyInfixData
+applyInfixDataWithTargs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "op")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixData"),
+              Model.projectionFieldName = (Model.Name "args")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ApplyInfixType
+applyInfixType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplyInfixType
+applyInfixType lhs op rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Typed.unTypedTerm op)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the lhs field of hydra.scala.syntax.ApplyInfixType
+applyInfixTypeLhs :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.Type
+applyInfixTypeLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the op field of hydra.scala.syntax.ApplyInfixType
+applyInfixTypeOp :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.NameType
+applyInfixTypeOp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+        Model.projectionFieldName = (Model.Name "op")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.ApplyInfixType
+applyInfixTypeRhs :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.Type
+applyInfixTypeRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.scala.syntax.ApplyInfixType
+applyInfixTypeWithLhs :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplyInfixType
+applyInfixTypeWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+              Model.projectionFieldName = (Model.Name "op")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the op field of hydra.scala.syntax.ApplyInfixType
+applyInfixTypeWithOp :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.ApplyInfixType
+applyInfixTypeWithOp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.ApplyInfixType
+applyInfixTypeWithRhs :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplyInfixType
+applyInfixTypeWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyInfixType"),
+              Model.projectionFieldName = (Model.Name "op")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ApplyType
+applyType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ApplyType
+applyType tpe args =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm args)}]}))
+
+-- | DSL accessor for the args field of hydra.scala.syntax.ApplyType
+applyTypeArgs :: Typed.TypedTerm Syntax.ApplyType -> Typed.TypedTerm [Syntax.Type]
+applyTypeArgs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyType"),
+        Model.projectionFieldName = (Model.Name "args")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.scala.syntax.ApplyTypeData
+applyTypeData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyTypeData
+applyTypeData lhs op targs args =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Typed.unTypedTerm op)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Typed.unTypedTerm targs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm args)}]}))
+
+-- | DSL accessor for the args field of hydra.scala.syntax.ApplyTypeData
+applyTypeDataArgs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm [Syntax.Data]
+applyTypeDataArgs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+        Model.projectionFieldName = (Model.Name "args")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the lhs field of hydra.scala.syntax.ApplyTypeData
+applyTypeDataLhs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm Syntax.Data
+applyTypeDataLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the op field of hydra.scala.syntax.ApplyTypeData
+applyTypeDataOp :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm Syntax.NameData
+applyTypeDataOp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+        Model.projectionFieldName = (Model.Name "op")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the targs field of hydra.scala.syntax.ApplyTypeData
+applyTypeDataTargs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm [Syntax.Type]
+applyTypeDataTargs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+        Model.projectionFieldName = (Model.Name "targs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the args field of hydra.scala.syntax.ApplyTypeData
+applyTypeDataWithArgs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyTypeData
+applyTypeDataWithArgs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "op")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "targs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the lhs field of hydra.scala.syntax.ApplyTypeData
+applyTypeDataWithLhs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyTypeData
+applyTypeDataWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "op")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "targs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "args")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the op field of hydra.scala.syntax.ApplyTypeData
+applyTypeDataWithOp :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ApplyTypeData
+applyTypeDataWithOp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "targs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "args")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the targs field of hydra.scala.syntax.ApplyTypeData
+applyTypeDataWithTargs :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ApplyTypeData
+applyTypeDataWithTargs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "op")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyTypeData"),
+              Model.projectionFieldName = (Model.Name "args")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.ApplyType
+applyTypeTpe :: Typed.TypedTerm Syntax.ApplyType -> Typed.TypedTerm Syntax.Type
+applyTypeTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyType"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the args field of hydra.scala.syntax.ApplyType
+applyTypeWithArgs :: Typed.TypedTerm Syntax.ApplyType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ApplyType
+applyTypeWithArgs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyType"),
+              Model.projectionFieldName = (Model.Name "tpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.ApplyType
+applyTypeWithTpe :: Typed.TypedTerm Syntax.ApplyType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ApplyType
+applyTypeWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyType"),
+              Model.projectionFieldName = (Model.Name "args")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ApplyUnaryData
+applyUnaryData :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyUnaryData
+applyUnaryData op arg =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyUnaryData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Typed.unTypedTerm op)},
+        Model.Field {
+          Model.fieldName = (Model.Name "arg"),
+          Model.fieldTerm = (Typed.unTypedTerm arg)}]}))
+
+-- | DSL accessor for the arg field of hydra.scala.syntax.ApplyUnaryData
+applyUnaryDataArg :: Typed.TypedTerm Syntax.ApplyUnaryData -> Typed.TypedTerm Syntax.Data
+applyUnaryDataArg x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyUnaryData"),
+        Model.projectionFieldName = (Model.Name "arg")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the op field of hydra.scala.syntax.ApplyUnaryData
+applyUnaryDataOp :: Typed.TypedTerm Syntax.ApplyUnaryData -> Typed.TypedTerm Syntax.NameData
+applyUnaryDataOp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyUnaryData"),
+        Model.projectionFieldName = (Model.Name "op")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the arg field of hydra.scala.syntax.ApplyUnaryData
+applyUnaryDataWithArg :: Typed.TypedTerm Syntax.ApplyUnaryData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyUnaryData
+applyUnaryDataWithArg original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyUnaryData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyUnaryData"),
+              Model.projectionFieldName = (Model.Name "op")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "arg"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the op field of hydra.scala.syntax.ApplyUnaryData
+applyUnaryDataWithOp :: Typed.TypedTerm Syntax.ApplyUnaryData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ApplyUnaryData
+applyUnaryDataWithOp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyUnaryData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "arg"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyUnaryData"),
+              Model.projectionFieldName = (Model.Name "arg")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ApplyUsingData
+applyUsingData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyUsingData
+applyUsingData fun targs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyUsingData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "fun"),
+          Model.fieldTerm = (Typed.unTypedTerm fun)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Typed.unTypedTerm targs)}]}))
+
+-- | DSL accessor for the fun field of hydra.scala.syntax.ApplyUsingData
+applyUsingDataFun :: Typed.TypedTerm Syntax.ApplyUsingData -> Typed.TypedTerm Syntax.Data
+applyUsingDataFun x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyUsingData"),
+        Model.projectionFieldName = (Model.Name "fun")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the targs field of hydra.scala.syntax.ApplyUsingData
+applyUsingDataTargs :: Typed.TypedTerm Syntax.ApplyUsingData -> Typed.TypedTerm [Syntax.Data]
+applyUsingDataTargs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyUsingData"),
+        Model.projectionFieldName = (Model.Name "targs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the fun field of hydra.scala.syntax.ApplyUsingData
+applyUsingDataWithFun :: Typed.TypedTerm Syntax.ApplyUsingData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ApplyUsingData
+applyUsingDataWithFun original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyUsingData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "fun"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyUsingData"),
+              Model.projectionFieldName = (Model.Name "targs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the targs field of hydra.scala.syntax.ApplyUsingData
+applyUsingDataWithTargs :: Typed.TypedTerm Syntax.ApplyUsingData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.ApplyUsingData
+applyUsingDataWithTargs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ApplyUsingData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "fun"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ApplyUsingData"),
+              Model.projectionFieldName = (Model.Name "fun")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.AscribeData
+ascribeData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AscribeData
+ascribeData expr tpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AscribeData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm expr)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)}]}))
+
+-- | DSL accessor for the expr field of hydra.scala.syntax.AscribeData
+ascribeDataExpr :: Typed.TypedTerm Syntax.AscribeData -> Typed.TypedTerm Syntax.Data
+ascribeDataExpr x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AscribeData"),
+        Model.projectionFieldName = (Model.Name "expr")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.AscribeData
+ascribeDataTpe :: Typed.TypedTerm Syntax.AscribeData -> Typed.TypedTerm Syntax.Type
+ascribeDataTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AscribeData"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the expr field of hydra.scala.syntax.AscribeData
+ascribeDataWithExpr :: Typed.TypedTerm Syntax.AscribeData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.AscribeData
+ascribeDataWithExpr original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AscribeData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AscribeData"),
+              Model.projectionFieldName = (Model.Name "tpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.AscribeData
+ascribeDataWithTpe :: Typed.TypedTerm Syntax.AscribeData -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.AscribeData
+ascribeDataWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AscribeData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AscribeData"),
+              Model.projectionFieldName = (Model.Name "expr")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.AssignData
+assignData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.AssignData
+assignData lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AssignData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the lhs field of hydra.scala.syntax.AssignData
+assignDataLhs :: Typed.TypedTerm Syntax.AssignData -> Typed.TypedTerm Syntax.Data
+assignDataLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AssignData"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.AssignData
+assignDataRhs :: Typed.TypedTerm Syntax.AssignData -> Typed.TypedTerm Syntax.Data
+assignDataRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AssignData"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.scala.syntax.AssignData
+assignDataWithLhs :: Typed.TypedTerm Syntax.AssignData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.AssignData
+assignDataWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AssignData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AssignData"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.AssignData
+assignDataWithRhs :: Typed.TypedTerm Syntax.AssignData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.AssignData
+assignDataWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.AssignData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.AssignData"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.BindPat
+bindPat :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.BindPat
+bindPat lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.BindPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the lhs field of hydra.scala.syntax.BindPat
+bindPatLhs :: Typed.TypedTerm Syntax.BindPat -> Typed.TypedTerm Syntax.Pat
+bindPatLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.BindPat"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.BindPat
+bindPatRhs :: Typed.TypedTerm Syntax.BindPat -> Typed.TypedTerm Syntax.Pat
+bindPatRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.BindPat"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.scala.syntax.BindPat
+bindPatWithLhs :: Typed.TypedTerm Syntax.BindPat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.BindPat
+bindPatWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.BindPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.BindPat"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.BindPat
+bindPatWithRhs :: Typed.TypedTerm Syntax.BindPat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.BindPat
+bindPatWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.BindPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.BindPat"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.BlockData
+blockData :: Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.BlockData
+blockData stats =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.BlockData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm stats)}]}))
+
+-- | DSL accessor for the stats field of hydra.scala.syntax.BlockData
+blockDataStats :: Typed.TypedTerm Syntax.BlockData -> Typed.TypedTerm [Syntax.Stat]
+blockDataStats x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.BlockData"),
+        Model.projectionFieldName = (Model.Name "stats")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the stats field of hydra.scala.syntax.BlockData
+blockDataWithStats :: Typed.TypedTerm Syntax.BlockData -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.BlockData
+blockDataWithStats original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.BlockData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ByNameType
+byNameType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ByNameType
+byNameType tpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ByNameType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)}]}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.ByNameType
+byNameTypeTpe :: Typed.TypedTerm Syntax.ByNameType -> Typed.TypedTerm Syntax.Type
+byNameTypeTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ByNameType"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.ByNameType
+byNameTypeWithTpe :: Typed.TypedTerm Syntax.ByNameType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ByNameType
+byNameTypeWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ByNameType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.Case
+case_ :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Case
+case_ pat cond body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Case"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Typed.unTypedTerm pat)},
+        Model.Field {
+          Model.fieldName = (Model.Name "cond"),
+          Model.fieldTerm = (Typed.unTypedTerm cond)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.scala.syntax.Case
+caseBody :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm Syntax.Data
+caseBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Case"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the cond field of hydra.scala.syntax.Case
+caseCond :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm (Maybe Syntax.Data)
+caseCond x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Case"),
+        Model.projectionFieldName = (Model.Name "cond")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.scala.syntax.CaseGeneratorEnumerator
+caseGeneratorEnumerator :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.CaseGeneratorEnumerator
+caseGeneratorEnumerator pat rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Typed.unTypedTerm pat)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the pat field of hydra.scala.syntax.CaseGeneratorEnumerator
+caseGeneratorEnumeratorPat :: Typed.TypedTerm Syntax.CaseGeneratorEnumerator -> Typed.TypedTerm Syntax.Pat
+caseGeneratorEnumeratorPat x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
+        Model.projectionFieldName = (Model.Name "pat")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.CaseGeneratorEnumerator
+caseGeneratorEnumeratorRhs :: Typed.TypedTerm Syntax.CaseGeneratorEnumerator -> Typed.TypedTerm Syntax.Data
+caseGeneratorEnumeratorRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the pat field of hydra.scala.syntax.CaseGeneratorEnumerator
+caseGeneratorEnumeratorWithPat :: Typed.TypedTerm Syntax.CaseGeneratorEnumerator -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.CaseGeneratorEnumerator
+caseGeneratorEnumeratorWithPat original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.CaseGeneratorEnumerator
+caseGeneratorEnumeratorWithRhs :: Typed.TypedTerm Syntax.CaseGeneratorEnumerator -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.CaseGeneratorEnumerator
+caseGeneratorEnumeratorWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.CaseGeneratorEnumerator"),
+              Model.projectionFieldName = (Model.Name "pat")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL accessor for the pat field of hydra.scala.syntax.Case
+casePat :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm Syntax.Pat
+casePat x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Case"),
+        Model.projectionFieldName = (Model.Name "pat")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL injection for the case variant of hydra.scala.syntax.CaseTree
+caseTreeCase :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm Syntax.CaseTree
+caseTreeCase x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.CaseTree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "case"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the typeCase variant of hydra.scala.syntax.CaseTree
+caseTreeTypeCase :: Typed.TypedTerm Syntax.TypeCase -> Typed.TypedTerm Syntax.CaseTree
+caseTreeTypeCase x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.CaseTree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "typeCase"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL updater for the body field of hydra.scala.syntax.Case
+caseWithBody :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Case
+caseWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Case"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Case"),
+              Model.projectionFieldName = (Model.Name "pat")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "cond"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Case"),
+              Model.projectionFieldName = (Model.Name "cond")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the cond field of hydra.scala.syntax.Case
+caseWithCond :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.Case
+caseWithCond original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Case"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Case"),
+              Model.projectionFieldName = (Model.Name "pat")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "cond"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Case"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the pat field of hydra.scala.syntax.Case
+caseWithPat :: Typed.TypedTerm Syntax.Case -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Case
+caseWithPat original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Case"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "cond"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Case"),
+              Model.projectionFieldName = (Model.Name "cond")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Case"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ClassDefn
+classDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.ClassDefn
+classDefn mods name tparams ctor template =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Typed.unTypedTerm ctor)},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Typed.unTypedTerm template)}]}))
+
+-- | DSL accessor for the ctor field of hydra.scala.syntax.ClassDefn
+classDefnCtor :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.PrimaryCtor
+classDefnCtor x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+        Model.projectionFieldName = (Model.Name "ctor")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.ClassDefn
+classDefnMods :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm [Syntax.Mod]
+classDefnMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.ClassDefn
+classDefnName :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.NameType
+classDefnName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the template field of hydra.scala.syntax.ClassDefn
+classDefnTemplate :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.Template
+classDefnTemplate x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+        Model.projectionFieldName = (Model.Name "template")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.ClassDefn
+classDefnTparams :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm [Syntax.ParamType]
+classDefnTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the ctor field of hydra.scala.syntax.ClassDefn
+classDefnWithCtor :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.ClassDefn
+classDefnWithCtor original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.ClassDefn
+classDefnWithMods :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ClassDefn
+classDefnWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.ClassDefn
+classDefnWithName :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.ClassDefn
+classDefnWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the template field of hydra.scala.syntax.ClassDefn
+classDefnWithTemplate :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.ClassDefn
+classDefnWithTemplate original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.ClassDefn
+classDefnWithTparams :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.ClassDefn
+classDefnWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ClassDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ContextFunctionData
+contextFunctionData :: Typed.TypedTerm [Syntax.ParamData] -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ContextFunctionData
+contextFunctionData params body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm params)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.scala.syntax.ContextFunctionData
+contextFunctionDataBody :: Typed.TypedTerm Syntax.ContextFunctionData -> Typed.TypedTerm Syntax.Data
+contextFunctionDataBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionData"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the params field of hydra.scala.syntax.ContextFunctionData
+contextFunctionDataParams :: Typed.TypedTerm Syntax.ContextFunctionData -> Typed.TypedTerm [Syntax.ParamData]
+contextFunctionDataParams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionData"),
+        Model.projectionFieldName = (Model.Name "params")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.scala.syntax.ContextFunctionData
+contextFunctionDataWithBody :: Typed.TypedTerm Syntax.ContextFunctionData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ContextFunctionData
+contextFunctionDataWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionData"),
+              Model.projectionFieldName = (Model.Name "params")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the params field of hydra.scala.syntax.ContextFunctionData
+contextFunctionDataWithParams :: Typed.TypedTerm Syntax.ContextFunctionData -> Typed.TypedTerm [Syntax.ParamData] -> Typed.TypedTerm Syntax.ContextFunctionData
+contextFunctionDataWithParams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionData"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ContextFunctionType
+contextFunctionType :: Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ContextFunctionType
+contextFunctionType params res =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm params)},
+        Model.Field {
+          Model.fieldName = (Model.Name "res"),
+          Model.fieldTerm = (Typed.unTypedTerm res)}]}))
+
+-- | DSL accessor for the params field of hydra.scala.syntax.ContextFunctionType
+contextFunctionTypeParams :: Typed.TypedTerm Syntax.ContextFunctionType -> Typed.TypedTerm [Syntax.Type]
+contextFunctionTypeParams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionType"),
+        Model.projectionFieldName = (Model.Name "params")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the res field of hydra.scala.syntax.ContextFunctionType
+contextFunctionTypeRes :: Typed.TypedTerm Syntax.ContextFunctionType -> Typed.TypedTerm Syntax.Type
+contextFunctionTypeRes x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionType"),
+        Model.projectionFieldName = (Model.Name "res")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the params field of hydra.scala.syntax.ContextFunctionType
+contextFunctionTypeWithParams :: Typed.TypedTerm Syntax.ContextFunctionType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ContextFunctionType
+contextFunctionTypeWithParams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "res"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionType"),
+              Model.projectionFieldName = (Model.Name "res")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the res field of hydra.scala.syntax.ContextFunctionType
+contextFunctionTypeWithRes :: Typed.TypedTerm Syntax.ContextFunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ContextFunctionType
+contextFunctionTypeWithRes original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ContextFunctionType"),
+              Model.projectionFieldName = (Model.Name "params")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "res"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the primary variant of hydra.scala.syntax.Ctor
+ctorPrimary :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Ctor
+ctorPrimary x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Ctor"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "primary"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the secondary variant of hydra.scala.syntax.Ctor
+ctorSecondary :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm Syntax.Ctor
+ctorSecondary x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Ctor"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "secondary"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the annotate variant of hydra.scala.syntax.Data
+dataAnnotate :: Typed.TypedTerm Syntax.AnnotateData -> Typed.TypedTerm Syntax.Data
+dataAnnotate x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "annotate"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the apply variant of hydra.scala.syntax.Data
+dataApply :: Typed.TypedTerm Syntax.ApplyData -> Typed.TypedTerm Syntax.Data
+dataApply x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "apply"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the applyType variant of hydra.scala.syntax.Data
+dataApplyType :: Typed.TypedTerm Syntax.ApplyTypeData -> Typed.TypedTerm Syntax.Data
+dataApplyType x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "applyType"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the applyUsing variant of hydra.scala.syntax.Data
+dataApplyUsing :: Typed.TypedTerm Syntax.ApplyUsingData -> Typed.TypedTerm Syntax.Data
+dataApplyUsing x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "applyUsing"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the ascribe variant of hydra.scala.syntax.Data
+dataAscribe :: Typed.TypedTerm Syntax.AscribeData -> Typed.TypedTerm Syntax.Data
+dataAscribe x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "ascribe"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the assign variant of hydra.scala.syntax.Data
+dataAssign :: Typed.TypedTerm Syntax.AssignData -> Typed.TypedTerm Syntax.Data
+dataAssign x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "assign"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the block variant of hydra.scala.syntax.Data
+dataBlock :: Typed.TypedTerm Syntax.BlockData -> Typed.TypedTerm Syntax.Data
+dataBlock x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "block"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the contextFunction variant of hydra.scala.syntax.Data
+dataContextFunction :: Typed.TypedTerm Syntax.ContextFunctionData -> Typed.TypedTerm Syntax.Data
+dataContextFunction x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "contextFunction"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the do variant of hydra.scala.syntax.Data
+dataDo :: Typed.TypedTerm Syntax.DoData -> Typed.TypedTerm Syntax.Data
+dataDo x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "do"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the endMarker variant of hydra.scala.syntax.Data
+dataEndMarker :: Typed.TypedTerm Syntax.EndMarkerData -> Typed.TypedTerm Syntax.Data
+dataEndMarker x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "endMarker"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the eta variant of hydra.scala.syntax.Data
+dataEta :: Typed.TypedTerm Syntax.EtaData -> Typed.TypedTerm Syntax.Data
+dataEta x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "eta"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the for variant of hydra.scala.syntax.Data
+dataFor :: Typed.TypedTerm Syntax.ForData -> Typed.TypedTerm Syntax.Data
+dataFor x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "for"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the forYield variant of hydra.scala.syntax.Data
+dataForYield :: Typed.TypedTerm Syntax.ForYieldData -> Typed.TypedTerm Syntax.Data
+dataForYield x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "forYield"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the function variant of hydra.scala.syntax.Data
+dataFunction :: Typed.TypedTerm Syntax.FunctionData -> Typed.TypedTerm Syntax.Data
+dataFunction x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "function"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the if variant of hydra.scala.syntax.Data
+dataIf :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data
+dataIf x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "if"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the interpolate variant of hydra.scala.syntax.Data
+dataInterpolate :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm Syntax.Data
+dataInterpolate x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "interpolate"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the lit variant of hydra.scala.syntax.Data
+dataLit :: Typed.TypedTerm Syntax.Lit -> Typed.TypedTerm Syntax.Data
+dataLit x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "lit"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the match variant of hydra.scala.syntax.Data
+dataMatch :: Typed.TypedTerm Syntax.MatchData -> Typed.TypedTerm Syntax.Data
+dataMatch x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "match"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the object variant of hydra.scala.syntax.DataMember
+dataMemberObject :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm Syntax.DataMember
+dataMemberObject x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.DataMember"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "object"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the pkg variant of hydra.scala.syntax.DataMember
+dataMemberPkg :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm Syntax.DataMember
+dataMemberPkg x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.DataMember"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "pkg"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the new variant of hydra.scala.syntax.Data
+dataNew :: Typed.TypedTerm Syntax.NewData -> Typed.TypedTerm Syntax.Data
+dataNew x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "new"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the newAnonymous variant of hydra.scala.syntax.Data
+dataNewAnonymous :: Typed.TypedTerm Syntax.NewAnonymousData -> Typed.TypedTerm Syntax.Data
+dataNewAnonymous x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "newAnonymous"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the param variant of hydra.scala.syntax.Data
+dataParam :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm Syntax.Data
+dataParam x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "param"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the partialFunction variant of hydra.scala.syntax.Data
+dataPartialFunction :: Typed.TypedTerm Syntax.PartialFunctionData -> Typed.TypedTerm Syntax.Data
+dataPartialFunction x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "partialFunction"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the placeholder variant of hydra.scala.syntax.Data
+dataPlaceholder :: Typed.TypedTerm Syntax.Data
+dataPlaceholder =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "placeholder"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the polyFunction variant of hydra.scala.syntax.Data
+dataPolyFunction :: Typed.TypedTerm Syntax.PolyFunctionData -> Typed.TypedTerm Syntax.Data
+dataPolyFunction x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "polyFunction"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the ref variant of hydra.scala.syntax.Data
+dataRef :: Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.Data
+dataRef x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "ref"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the repeated variant of hydra.scala.syntax.Data
+dataRepeated :: Typed.TypedTerm Syntax.RepeatedData -> Typed.TypedTerm Syntax.Data
+dataRepeated x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "repeated"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the return variant of hydra.scala.syntax.Data
+dataReturn :: Typed.TypedTerm Syntax.ReturnData -> Typed.TypedTerm Syntax.Data
+dataReturn x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "return"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the throw variant of hydra.scala.syntax.Data
+dataThrow :: Typed.TypedTerm Syntax.ThrowData -> Typed.TypedTerm Syntax.Data
+dataThrow x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "throw"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the try variant of hydra.scala.syntax.Data
+dataTry :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm Syntax.Data
+dataTry x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "try"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the tryWithHandler variant of hydra.scala.syntax.Data
+dataTryWithHandler :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm Syntax.Data
+dataTryWithHandler x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "tryWithHandler"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the tuple variant of hydra.scala.syntax.Data
+dataTuple :: Typed.TypedTerm Syntax.TupleData -> Typed.TypedTerm Syntax.Data
+dataTuple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "tuple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the while variant of hydra.scala.syntax.Data
+dataWhile :: Typed.TypedTerm Syntax.WhileData -> Typed.TypedTerm Syntax.Data
+dataWhile x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Data"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "while"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the def variant of hydra.scala.syntax.Decl
+declDef :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm Syntax.Decl
+declDef x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Decl"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "def"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the given variant of hydra.scala.syntax.Decl
+declGiven :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm Syntax.Decl
+declGiven x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Decl"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "given"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the type variant of hydra.scala.syntax.Decl
+declType :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm Syntax.Decl
+declType x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Decl"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "type"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the val variant of hydra.scala.syntax.Decl
+declVal :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm Syntax.Decl
+declVal x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Decl"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "val"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the var variant of hydra.scala.syntax.Decl
+declVar :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm Syntax.Decl
+declVar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Decl"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "var"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.DefDecl
+defDecl :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.DefDecl
+defDecl mods name tparams paramss decltpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Typed.unTypedTerm paramss)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm decltpe)}]}))
+
+-- | DSL accessor for the decltpe field of hydra.scala.syntax.DefDecl
+defDeclDecltpe :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm Syntax.Type
+defDeclDecltpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+        Model.projectionFieldName = (Model.Name "decltpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.DefDecl
+defDeclMods :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [Syntax.Mod]
+defDeclMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.DefDecl
+defDeclName :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm Syntax.NameData
+defDeclName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramss field of hydra.scala.syntax.DefDecl
+defDeclParamss :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [[Syntax.ParamData]]
+defDeclParamss x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+        Model.projectionFieldName = (Model.Name "paramss")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.DefDecl
+defDeclTparams :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [Syntax.ParamType]
+defDeclTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the decltpe field of hydra.scala.syntax.DefDecl
+defDeclWithDecltpe :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.DefDecl
+defDeclWithDecltpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.DefDecl
+defDeclWithMods :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.DefDecl
+defDeclWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.DefDecl
+defDeclWithName :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.DefDecl
+defDeclWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramss field of hydra.scala.syntax.DefDecl
+defDeclWithParamss :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.DefDecl
+defDeclWithParamss original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.DefDecl
+defDeclWithTparams :: Typed.TypedTerm Syntax.DefDecl -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.DefDecl
+defDeclWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.DefDefn
+defDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.DefDefn
+defDefn mods name tparams paramss decltpe body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Typed.unTypedTerm paramss)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm decltpe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.scala.syntax.DefDefn
+defDefnBody :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm Syntax.Data
+defDefnBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the decltpe field of hydra.scala.syntax.DefDefn
+defDefnDecltpe :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm (Maybe Syntax.Type)
+defDefnDecltpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+        Model.projectionFieldName = (Model.Name "decltpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.DefDefn
+defDefnMods :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [Syntax.Mod]
+defDefnMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.DefDefn
+defDefnName :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm Syntax.NameData
+defDefnName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramss field of hydra.scala.syntax.DefDefn
+defDefnParamss :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [[Syntax.ParamData]]
+defDefnParamss x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+        Model.projectionFieldName = (Model.Name "paramss")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.DefDefn
+defDefnTparams :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [Syntax.ParamType]
+defDefnTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.scala.syntax.DefDefn
+defDefnWithBody :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.DefDefn
+defDefnWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the decltpe field of hydra.scala.syntax.DefDefn
+defDefnWithDecltpe :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.DefDefn
+defDefnWithDecltpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.DefDefn
+defDefnWithMods :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.DefDefn
+defDefnWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.DefDefn
+defDefnWithName :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.DefDefn
+defDefnWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramss field of hydra.scala.syntax.DefDefn
+defDefnWithParamss :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.DefDefn
+defDefnWithParamss original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.DefDefn
+defDefnWithTparams :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.DefDefn
+defDefnWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DefDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the class variant of hydra.scala.syntax.Defn
+defnClass :: Typed.TypedTerm Syntax.ClassDefn -> Typed.TypedTerm Syntax.Defn
+defnClass x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "class"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the def variant of hydra.scala.syntax.Defn
+defnDef :: Typed.TypedTerm Syntax.DefDefn -> Typed.TypedTerm Syntax.Defn
+defnDef x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "def"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the enum variant of hydra.scala.syntax.Defn
+defnEnum :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.Defn
+defnEnum x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "enum"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the enumCase variant of hydra.scala.syntax.Defn
+defnEnumCase :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm Syntax.Defn
+defnEnumCase x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "enumCase"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the extensionGroup variant of hydra.scala.syntax.Defn
+defnExtensionGroup :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm Syntax.Defn
+defnExtensionGroup x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "extensionGroup"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the given variant of hydra.scala.syntax.Defn
+defnGiven :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm Syntax.Defn
+defnGiven x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "given"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the givenAlias variant of hydra.scala.syntax.Defn
+defnGivenAlias :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Defn
+defnGivenAlias x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "givenAlias"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the object variant of hydra.scala.syntax.Defn
+defnObject :: Typed.TypedTerm Syntax.ObjectDefn -> Typed.TypedTerm Syntax.Defn
+defnObject x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "object"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the repeatedEnumCase variant of hydra.scala.syntax.Defn
+defnRepeatedEnumCase :: Typed.TypedTerm Syntax.RepeatedEnumCaseDefn -> Typed.TypedTerm Syntax.Defn
+defnRepeatedEnumCase x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "repeatedEnumCase"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the trait variant of hydra.scala.syntax.Defn
+defnTrait :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.Defn
+defnTrait x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "trait"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the type variant of hydra.scala.syntax.Defn
+defnType :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm Syntax.Defn
+defnType x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "type"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the val variant of hydra.scala.syntax.Defn
+defnVal :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm Syntax.Defn
+defnVal x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "val"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the var variant of hydra.scala.syntax.Defn
+defnVar :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm Syntax.Defn
+defnVar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Defn"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "var"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.DoData
+doData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.DoData
+doData body expr =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DoData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)},
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm expr)}]}))
+
+-- | DSL accessor for the body field of hydra.scala.syntax.DoData
+doDataBody :: Typed.TypedTerm Syntax.DoData -> Typed.TypedTerm Syntax.Data
+doDataBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DoData"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the expr field of hydra.scala.syntax.DoData
+doDataExpr :: Typed.TypedTerm Syntax.DoData -> Typed.TypedTerm Syntax.Data
+doDataExpr x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DoData"),
+        Model.projectionFieldName = (Model.Name "expr")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.scala.syntax.DoData
+doDataWithBody :: Typed.TypedTerm Syntax.DoData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.DoData
+doDataWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DoData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DoData"),
+              Model.projectionFieldName = (Model.Name "expr")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the expr field of hydra.scala.syntax.DoData
+doDataWithExpr :: Typed.TypedTerm Syntax.DoData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.DoData
+doDataWithExpr original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.DoData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.DoData"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.EndMarkerData
+endMarkerData :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.EndMarkerData
+endMarkerData name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EndMarkerData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.EndMarkerData
+endMarkerDataName :: Typed.TypedTerm Syntax.EndMarkerData -> Typed.TypedTerm Syntax.NameData
+endMarkerDataName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EndMarkerData"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.EndMarkerData
+endMarkerDataWithName :: Typed.TypedTerm Syntax.EndMarkerData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.EndMarkerData
+endMarkerDataWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EndMarkerData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.EnumCaseDefn
+enumCaseDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm [Syntax.Init] -> Typed.TypedTerm Syntax.EnumCaseDefn
+enumCaseDefn mods name tparams ctor inits =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Typed.unTypedTerm ctor)},
+        Model.Field {
+          Model.fieldName = (Model.Name "inits"),
+          Model.fieldTerm = (Typed.unTypedTerm inits)}]}))
+
+-- | DSL accessor for the ctor field of hydra.scala.syntax.EnumCaseDefn
+enumCaseDefnCtor :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm Syntax.PrimaryCtor
+enumCaseDefnCtor x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+        Model.projectionFieldName = (Model.Name "ctor")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the inits field of hydra.scala.syntax.EnumCaseDefn
+enumCaseDefnInits :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.Init]
+enumCaseDefnInits x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+        Model.projectionFieldName = (Model.Name "inits")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.EnumCaseDefn
+enumCaseDefnMods :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.Mod]
+enumCaseDefnMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.EnumCaseDefn
+enumCaseDefnName :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm Syntax.NameData
+enumCaseDefnName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.EnumCaseDefn
+enumCaseDefnTparams :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.ParamType]
+enumCaseDefnTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the ctor field of hydra.scala.syntax.EnumCaseDefn
+enumCaseDefnWithCtor :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.EnumCaseDefn
+enumCaseDefnWithCtor original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "inits"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "inits")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the inits field of hydra.scala.syntax.EnumCaseDefn
+enumCaseDefnWithInits :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.Init] -> Typed.TypedTerm Syntax.EnumCaseDefn
+enumCaseDefnWithInits original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inits"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.EnumCaseDefn
+enumCaseDefnWithMods :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.EnumCaseDefn
+enumCaseDefnWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inits"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "inits")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.EnumCaseDefn
+enumCaseDefnWithName :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.EnumCaseDefn
+enumCaseDefnWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inits"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "inits")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.EnumCaseDefn
+enumCaseDefnWithTparams :: Typed.TypedTerm Syntax.EnumCaseDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.EnumCaseDefn
+enumCaseDefnWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inits"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "inits")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.EnumDefn
+enumDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.EnumDefn
+enumDefn mods name tparams ctor template =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Typed.unTypedTerm ctor)},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Typed.unTypedTerm template)}]}))
+
+-- | DSL accessor for the ctor field of hydra.scala.syntax.EnumDefn
+enumDefnCtor :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.PrimaryCtor
+enumDefnCtor x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+        Model.projectionFieldName = (Model.Name "ctor")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.EnumDefn
+enumDefnMods :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm [Syntax.Mod]
+enumDefnMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.EnumDefn
+enumDefnName :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.NameType
+enumDefnName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the template field of hydra.scala.syntax.EnumDefn
+enumDefnTemplate :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.Template
+enumDefnTemplate x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+        Model.projectionFieldName = (Model.Name "template")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.EnumDefn
+enumDefnTparams :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm [Syntax.ParamType]
+enumDefnTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the ctor field of hydra.scala.syntax.EnumDefn
+enumDefnWithCtor :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.EnumDefn
+enumDefnWithCtor original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.EnumDefn
+enumDefnWithMods :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.EnumDefn
+enumDefnWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.EnumDefn
+enumDefnWithName :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.EnumDefn
+enumDefnWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the template field of hydra.scala.syntax.EnumDefn
+enumDefnWithTemplate :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.EnumDefn
+enumDefnWithTemplate original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.EnumDefn
+enumDefnWithTparams :: Typed.TypedTerm Syntax.EnumDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.EnumDefn
+enumDefnWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EnumDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the caseGenerator variant of hydra.scala.syntax.Enumerator
+enumeratorCaseGenerator :: Typed.TypedTerm Syntax.CaseGeneratorEnumerator -> Typed.TypedTerm Syntax.Enumerator
+enumeratorCaseGenerator x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Enumerator"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "caseGenerator"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the generator variant of hydra.scala.syntax.Enumerator
+enumeratorGenerator :: Typed.TypedTerm Syntax.GeneratorEnumerator -> Typed.TypedTerm Syntax.Enumerator
+enumeratorGenerator x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Enumerator"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "generator"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the guard variant of hydra.scala.syntax.Enumerator
+enumeratorGuard :: Typed.TypedTerm Syntax.GuardEnumerator -> Typed.TypedTerm Syntax.Enumerator
+enumeratorGuard x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Enumerator"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "guard"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the val variant of hydra.scala.syntax.Enumerator
+enumeratorVal :: Typed.TypedTerm Syntax.ValEnumerator -> Typed.TypedTerm Syntax.Enumerator
+enumeratorVal x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Enumerator"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "val"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.EtaData
+etaData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.EtaData
+etaData expr =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EtaData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm expr)}]}))
+
+-- | DSL accessor for the expr field of hydra.scala.syntax.EtaData
+etaDataExpr :: Typed.TypedTerm Syntax.EtaData -> Typed.TypedTerm Syntax.Data
+etaDataExpr x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.EtaData"),
+        Model.projectionFieldName = (Model.Name "expr")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the expr field of hydra.scala.syntax.EtaData
+etaDataWithExpr :: Typed.TypedTerm Syntax.EtaData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.EtaData
+etaDataWithExpr original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.EtaData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ExistentialType
+existentialType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.ExistentialType
+existentialType tpe stats =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExistentialType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm stats)}]}))
+
+-- | DSL accessor for the stats field of hydra.scala.syntax.ExistentialType
+existentialTypeStats :: Typed.TypedTerm Syntax.ExistentialType -> Typed.TypedTerm [Syntax.Stat]
+existentialTypeStats x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExistentialType"),
+        Model.projectionFieldName = (Model.Name "stats")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.ExistentialType
+existentialTypeTpe :: Typed.TypedTerm Syntax.ExistentialType -> Typed.TypedTerm Syntax.Type
+existentialTypeTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExistentialType"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the stats field of hydra.scala.syntax.ExistentialType
+existentialTypeWithStats :: Typed.TypedTerm Syntax.ExistentialType -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.ExistentialType
+existentialTypeWithStats original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExistentialType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExistentialType"),
+              Model.projectionFieldName = (Model.Name "tpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.ExistentialType
+existentialTypeWithTpe :: Typed.TypedTerm Syntax.ExistentialType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ExistentialType
+existentialTypeWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExistentialType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExistentialType"),
+              Model.projectionFieldName = (Model.Name "stats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.Export
+export :: Typed.TypedTerm [Syntax.Importer] -> Typed.TypedTerm Syntax.Export
+export importers =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Export"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "importers"),
+          Model.fieldTerm = (Typed.unTypedTerm importers)}]}))
+
+-- | DSL accessor for the importers field of hydra.scala.syntax.Export
+exportImporters :: Typed.TypedTerm Syntax.Export -> Typed.TypedTerm [Syntax.Importer]
+exportImporters x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Export"),
+        Model.projectionFieldName = (Model.Name "importers")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the importers field of hydra.scala.syntax.Export
+exportWithImporters :: Typed.TypedTerm Syntax.Export -> Typed.TypedTerm [Syntax.Importer] -> Typed.TypedTerm Syntax.Export
+exportWithImporters original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Export"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "importers"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ExtensionGroupDefn
+extensionGroupDefn :: Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Stat -> Typed.TypedTerm Syntax.ExtensionGroupDefn
+extensionGroupDefn tparams parmss body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "parmss"),
+          Model.fieldTerm = (Typed.unTypedTerm parmss)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.scala.syntax.ExtensionGroupDefn
+extensionGroupDefnBody :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm Syntax.Stat
+extensionGroupDefnBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the parmss field of hydra.scala.syntax.ExtensionGroupDefn
+extensionGroupDefnParmss :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm [[Syntax.ParamData]]
+extensionGroupDefnParmss x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+        Model.projectionFieldName = (Model.Name "parmss")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.ExtensionGroupDefn
+extensionGroupDefnTparams :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm [Syntax.ParamType]
+extensionGroupDefnTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.scala.syntax.ExtensionGroupDefn
+extensionGroupDefnWithBody :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm Syntax.Stat -> Typed.TypedTerm Syntax.ExtensionGroupDefn
+extensionGroupDefnWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "parmss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+              Model.projectionFieldName = (Model.Name "parmss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the parmss field of hydra.scala.syntax.ExtensionGroupDefn
+extensionGroupDefnWithParmss :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.ExtensionGroupDefn
+extensionGroupDefnWithParmss original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "parmss"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.ExtensionGroupDefn
+extensionGroupDefnWithTparams :: Typed.TypedTerm Syntax.ExtensionGroupDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.ExtensionGroupDefn
+extensionGroupDefnWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "parmss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+              Model.projectionFieldName = (Model.Name "parmss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtensionGroupDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ExtractInfixPat
+extractInfixPat :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.ExtractInfixPat
+extractInfixPat lhs op rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Typed.unTypedTerm op)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the lhs field of hydra.scala.syntax.ExtractInfixPat
+extractInfixPatLhs :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm Syntax.Pat
+extractInfixPatLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the op field of hydra.scala.syntax.ExtractInfixPat
+extractInfixPatOp :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm Syntax.NameData
+extractInfixPatOp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+        Model.projectionFieldName = (Model.Name "op")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.ExtractInfixPat
+extractInfixPatRhs :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm [Syntax.Pat]
+extractInfixPatRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.scala.syntax.ExtractInfixPat
+extractInfixPatWithLhs :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.ExtractInfixPat
+extractInfixPatWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+              Model.projectionFieldName = (Model.Name "op")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the op field of hydra.scala.syntax.ExtractInfixPat
+extractInfixPatWithOp :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ExtractInfixPat
+extractInfixPatWithOp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.ExtractInfixPat
+extractInfixPatWithRhs :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.ExtractInfixPat
+extractInfixPatWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "op"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractInfixPat"),
+              Model.projectionFieldName = (Model.Name "op")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ExtractPat
+extractPat :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ExtractPat
+extractPat fun args isCall =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExtractPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "fun"),
+          Model.fieldTerm = (Typed.unTypedTerm fun)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm args)},
+        Model.Field {
+          Model.fieldName = (Model.Name "isCall"),
+          Model.fieldTerm = (Typed.unTypedTerm isCall)}]}))
+
+-- | DSL accessor for the args field of hydra.scala.syntax.ExtractPat
+extractPatArgs :: Typed.TypedTerm Syntax.ExtractPat -> Typed.TypedTerm [Syntax.Pat]
+extractPatArgs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractPat"),
+        Model.projectionFieldName = (Model.Name "args")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the fun field of hydra.scala.syntax.ExtractPat
+extractPatFun :: Typed.TypedTerm Syntax.ExtractPat -> Typed.TypedTerm Syntax.Data
+extractPatFun x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractPat"),
+        Model.projectionFieldName = (Model.Name "fun")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | Accessor for the isCall field of hydra.scala.syntax.ExtractPat
+extractPatIsCall :: Typed.TypedTerm Syntax.ExtractPat -> Typed.TypedTerm Bool
+extractPatIsCall x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractPat"),
+        Model.projectionFieldName = (Model.Name "isCall")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the args field of hydra.scala.syntax.ExtractPat
+extractPatWithArgs :: Typed.TypedTerm Syntax.ExtractPat -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.ExtractPat
+extractPatWithArgs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExtractPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "fun"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractPat"),
+              Model.projectionFieldName = (Model.Name "fun")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "isCall"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractPat"),
+              Model.projectionFieldName = (Model.Name "isCall")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the fun field of hydra.scala.syntax.ExtractPat
+extractPatWithFun :: Typed.TypedTerm Syntax.ExtractPat -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ExtractPat
+extractPatWithFun original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ExtractPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "fun"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractPat"),
+              Model.projectionFieldName = (Model.Name "args")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "isCall"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ExtractPat"),
+              Model.projectionFieldName = (Model.Name "isCall")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ForData
+forData :: Typed.TypedTerm [Syntax.Enumerator] -> Typed.TypedTerm Syntax.ForData
+forData enums =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ForData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "enums"),
+          Model.fieldTerm = (Typed.unTypedTerm enums)}]}))
+
+-- | DSL accessor for the enums field of hydra.scala.syntax.ForData
+forDataEnums :: Typed.TypedTerm Syntax.ForData -> Typed.TypedTerm [Syntax.Enumerator]
+forDataEnums x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ForData"),
+        Model.projectionFieldName = (Model.Name "enums")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the enums field of hydra.scala.syntax.ForData
+forDataWithEnums :: Typed.TypedTerm Syntax.ForData -> Typed.TypedTerm [Syntax.Enumerator] -> Typed.TypedTerm Syntax.ForData
+forDataWithEnums original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ForData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "enums"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ForYieldData
+forYieldData :: Typed.TypedTerm [Syntax.Enumerator] -> Typed.TypedTerm Syntax.ForYieldData
+forYieldData enums =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ForYieldData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "enums"),
+          Model.fieldTerm = (Typed.unTypedTerm enums)}]}))
+
+-- | DSL accessor for the enums field of hydra.scala.syntax.ForYieldData
+forYieldDataEnums :: Typed.TypedTerm Syntax.ForYieldData -> Typed.TypedTerm [Syntax.Enumerator]
+forYieldDataEnums x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ForYieldData"),
+        Model.projectionFieldName = (Model.Name "enums")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the enums field of hydra.scala.syntax.ForYieldData
+forYieldDataWithEnums :: Typed.TypedTerm Syntax.ForYieldData -> Typed.TypedTerm [Syntax.Enumerator] -> Typed.TypedTerm Syntax.ForYieldData
+forYieldDataWithEnums original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ForYieldData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "enums"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.FunctionData
+functionData :: Typed.TypedTerm [Syntax.ParamData] -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.FunctionData
+functionData params body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.FunctionData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm params)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.scala.syntax.FunctionData
+functionDataBody :: Typed.TypedTerm Syntax.FunctionData -> Typed.TypedTerm Syntax.Data
+functionDataBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.FunctionData"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the params field of hydra.scala.syntax.FunctionData
+functionDataParams :: Typed.TypedTerm Syntax.FunctionData -> Typed.TypedTerm [Syntax.ParamData]
+functionDataParams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.FunctionData"),
+        Model.projectionFieldName = (Model.Name "params")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.scala.syntax.FunctionData
+functionDataWithBody :: Typed.TypedTerm Syntax.FunctionData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.FunctionData
+functionDataWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.FunctionData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.FunctionData"),
+              Model.projectionFieldName = (Model.Name "params")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the params field of hydra.scala.syntax.FunctionData
+functionDataWithParams :: Typed.TypedTerm Syntax.FunctionData -> Typed.TypedTerm [Syntax.ParamData] -> Typed.TypedTerm Syntax.FunctionData
+functionDataWithParams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.FunctionData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.FunctionData"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.FunctionType
+functionType :: Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.FunctionType
+functionType params res =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.FunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm params)},
+        Model.Field {
+          Model.fieldName = (Model.Name "res"),
+          Model.fieldTerm = (Typed.unTypedTerm res)}]}))
+
+-- | DSL accessor for the params field of hydra.scala.syntax.FunctionType
+functionTypeParams :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm [Syntax.Type]
+functionTypeParams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.FunctionType"),
+        Model.projectionFieldName = (Model.Name "params")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the res field of hydra.scala.syntax.FunctionType
+functionTypeRes :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type
+functionTypeRes x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.FunctionType"),
+        Model.projectionFieldName = (Model.Name "res")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the params field of hydra.scala.syntax.FunctionType
+functionTypeWithParams :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.FunctionType
+functionTypeWithParams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.FunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "res"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.FunctionType"),
+              Model.projectionFieldName = (Model.Name "res")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the res field of hydra.scala.syntax.FunctionType
+functionTypeWithRes :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.FunctionType
+functionTypeWithRes original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.FunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.FunctionType"),
+              Model.projectionFieldName = (Model.Name "params")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "res"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.GeneratorEnumerator
+generatorEnumerator :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GeneratorEnumerator
+generatorEnumerator pat rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GeneratorEnumerator"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Typed.unTypedTerm pat)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the pat field of hydra.scala.syntax.GeneratorEnumerator
+generatorEnumeratorPat :: Typed.TypedTerm Syntax.GeneratorEnumerator -> Typed.TypedTerm Syntax.Pat
+generatorEnumeratorPat x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GeneratorEnumerator"),
+        Model.projectionFieldName = (Model.Name "pat")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.GeneratorEnumerator
+generatorEnumeratorRhs :: Typed.TypedTerm Syntax.GeneratorEnumerator -> Typed.TypedTerm Syntax.Data
+generatorEnumeratorRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GeneratorEnumerator"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the pat field of hydra.scala.syntax.GeneratorEnumerator
+generatorEnumeratorWithPat :: Typed.TypedTerm Syntax.GeneratorEnumerator -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.GeneratorEnumerator
+generatorEnumeratorWithPat original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GeneratorEnumerator"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GeneratorEnumerator"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.GeneratorEnumerator
+generatorEnumeratorWithRhs :: Typed.TypedTerm Syntax.GeneratorEnumerator -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GeneratorEnumerator
+generatorEnumeratorWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GeneratorEnumerator"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GeneratorEnumerator"),
+              Model.projectionFieldName = (Model.Name "pat")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.GivenAliasDefn
+givenAliasDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [[Syntax.ParamType]] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GivenAliasDefn
+givenAliasDefn mods name tparams sparams decltpe body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Typed.unTypedTerm sparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm decltpe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnBody :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Data
+givenAliasDefnBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the decltpe field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnDecltpe :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Type
+givenAliasDefnDecltpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+        Model.projectionFieldName = (Model.Name "decltpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnMods :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [Syntax.Mod]
+givenAliasDefnMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnName :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Name
+givenAliasDefnName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the sparams field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnSparams :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [[Syntax.ParamData]]
+givenAliasDefnSparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+        Model.projectionFieldName = (Model.Name "sparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnTparams :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [[Syntax.ParamType]]
+givenAliasDefnTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnWithBody :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GivenAliasDefn
+givenAliasDefnWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the decltpe field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnWithDecltpe :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenAliasDefn
+givenAliasDefnWithDecltpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnWithMods :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.GivenAliasDefn
+givenAliasDefnWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnWithName :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.GivenAliasDefn
+givenAliasDefnWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the sparams field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnWithSparams :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.GivenAliasDefn
+givenAliasDefnWithSparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.GivenAliasDefn
+givenAliasDefnWithTparams :: Typed.TypedTerm Syntax.GivenAliasDefn -> Typed.TypedTerm [[Syntax.ParamType]] -> Typed.TypedTerm Syntax.GivenAliasDefn
+givenAliasDefnWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenAliasDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.GivenDecl
+givenDecl :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenDecl
+givenDecl mods name tparams sparams decltpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Typed.unTypedTerm sparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm decltpe)}]}))
+
+-- | DSL accessor for the decltpe field of hydra.scala.syntax.GivenDecl
+givenDeclDecltpe :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm Syntax.Type
+givenDeclDecltpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+        Model.projectionFieldName = (Model.Name "decltpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.GivenDecl
+givenDeclMods :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [Syntax.Mod]
+givenDeclMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.GivenDecl
+givenDeclName :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm Syntax.NameData
+givenDeclName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the sparams field of hydra.scala.syntax.GivenDecl
+givenDeclSparams :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [[Syntax.ParamData]]
+givenDeclSparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+        Model.projectionFieldName = (Model.Name "sparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.GivenDecl
+givenDeclTparams :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [Syntax.ParamType]
+givenDeclTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the decltpe field of hydra.scala.syntax.GivenDecl
+givenDeclWithDecltpe :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenDecl
+givenDeclWithDecltpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.GivenDecl
+givenDeclWithMods :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.GivenDecl
+givenDeclWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.GivenDecl
+givenDeclWithName :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.GivenDecl
+givenDeclWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the sparams field of hydra.scala.syntax.GivenDecl
+givenDeclWithSparams :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.GivenDecl
+givenDeclWithSparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.GivenDecl
+givenDeclWithTparams :: Typed.TypedTerm Syntax.GivenDecl -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.GivenDecl
+givenDeclWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.GivenDefn
+givenDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [[Syntax.ParamType]] -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.GivenDefn
+givenDefn mods name tparams sparams templ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Typed.unTypedTerm sparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "templ"),
+          Model.fieldTerm = (Typed.unTypedTerm templ)}]}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.GivenDefn
+givenDefnMods :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [Syntax.Mod]
+givenDefnMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.GivenDefn
+givenDefnName :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm Syntax.Name
+givenDefnName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the sparams field of hydra.scala.syntax.GivenDefn
+givenDefnSparams :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [[Syntax.ParamData]]
+givenDefnSparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+        Model.projectionFieldName = (Model.Name "sparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the templ field of hydra.scala.syntax.GivenDefn
+givenDefnTempl :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm Syntax.Template
+givenDefnTempl x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+        Model.projectionFieldName = (Model.Name "templ")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.GivenDefn
+givenDefnTparams :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [[Syntax.ParamType]]
+givenDefnTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.GivenDefn
+givenDefnWithMods :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.GivenDefn
+givenDefnWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "templ"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "templ")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.GivenDefn
+givenDefnWithName :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.GivenDefn
+givenDefnWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "templ"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "templ")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the sparams field of hydra.scala.syntax.GivenDefn
+givenDefnWithSparams :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.GivenDefn
+givenDefnWithSparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "templ"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "templ")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the templ field of hydra.scala.syntax.GivenDefn
+givenDefnWithTempl :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.GivenDefn
+givenDefnWithTempl original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "templ"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.GivenDefn
+givenDefnWithTparams :: Typed.TypedTerm Syntax.GivenDefn -> Typed.TypedTerm [[Syntax.ParamType]] -> Typed.TypedTerm Syntax.GivenDefn
+givenDefnWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "sparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "sparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "templ"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenDefn"),
+              Model.projectionFieldName = (Model.Name "templ")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.GivenImportee
+givenImportee :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenImportee
+givenImportee tpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenImportee"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)}]}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.GivenImportee
+givenImporteeTpe :: Typed.TypedTerm Syntax.GivenImportee -> Typed.TypedTerm Syntax.Type
+givenImporteeTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenImportee"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.GivenImportee
+givenImporteeWithTpe :: Typed.TypedTerm Syntax.GivenImportee -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenImportee
+givenImporteeWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenImportee"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.GivenPat
+givenPat :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenPat
+givenPat tpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)}]}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.GivenPat
+givenPatTpe :: Typed.TypedTerm Syntax.GivenPat -> Typed.TypedTerm Syntax.Type
+givenPatTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GivenPat"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.GivenPat
+givenPatWithTpe :: Typed.TypedTerm Syntax.GivenPat -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.GivenPat
+givenPatWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GivenPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.GuardEnumerator
+guardEnumerator :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GuardEnumerator
+guardEnumerator cond =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GuardEnumerator"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "cond"),
+          Model.fieldTerm = (Typed.unTypedTerm cond)}]}))
+
+-- | DSL accessor for the cond field of hydra.scala.syntax.GuardEnumerator
+guardEnumeratorCond :: Typed.TypedTerm Syntax.GuardEnumerator -> Typed.TypedTerm Syntax.Data
+guardEnumeratorCond x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.GuardEnumerator"),
+        Model.projectionFieldName = (Model.Name "cond")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the cond field of hydra.scala.syntax.GuardEnumerator
+guardEnumeratorWithCond :: Typed.TypedTerm Syntax.GuardEnumerator -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.GuardEnumerator
+guardEnumeratorWithCond original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.GuardEnumerator"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "cond"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.IfData
+ifData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.IfData
+ifData cond thenp elsep =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "cond"),
+          Model.fieldTerm = (Typed.unTypedTerm cond)},
+        Model.Field {
+          Model.fieldName = (Model.Name "thenp"),
+          Model.fieldTerm = (Typed.unTypedTerm thenp)},
+        Model.Field {
+          Model.fieldName = (Model.Name "elsep"),
+          Model.fieldTerm = (Typed.unTypedTerm elsep)}]}))
+
+-- | DSL accessor for the cond field of hydra.scala.syntax.IfData
+ifDataCond :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data
+ifDataCond x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+        Model.projectionFieldName = (Model.Name "cond")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the elsep field of hydra.scala.syntax.IfData
+ifDataElsep :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data
+ifDataElsep x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+        Model.projectionFieldName = (Model.Name "elsep")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the thenp field of hydra.scala.syntax.IfData
+ifDataThenp :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data
+ifDataThenp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+        Model.projectionFieldName = (Model.Name "thenp")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the cond field of hydra.scala.syntax.IfData
+ifDataWithCond :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.IfData
+ifDataWithCond original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "cond"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "thenp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+              Model.projectionFieldName = (Model.Name "thenp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "elsep"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+              Model.projectionFieldName = (Model.Name "elsep")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the elsep field of hydra.scala.syntax.IfData
+ifDataWithElsep :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.IfData
+ifDataWithElsep original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "cond"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+              Model.projectionFieldName = (Model.Name "cond")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "thenp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+              Model.projectionFieldName = (Model.Name "thenp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "elsep"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the thenp field of hydra.scala.syntax.IfData
+ifDataWithThenp :: Typed.TypedTerm Syntax.IfData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.IfData
+ifDataWithThenp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "cond"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+              Model.projectionFieldName = (Model.Name "cond")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "thenp"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "elsep"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.IfData"),
+              Model.projectionFieldName = (Model.Name "elsep")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ImplicitFunctionType
+implicitFunctionType :: Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ImplicitFunctionType
+implicitFunctionType params res =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ImplicitFunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm params)},
+        Model.Field {
+          Model.fieldName = (Model.Name "res"),
+          Model.fieldTerm = (Typed.unTypedTerm res)}]}))
+
+-- | DSL accessor for the params field of hydra.scala.syntax.ImplicitFunctionType
+implicitFunctionTypeParams :: Typed.TypedTerm Syntax.ImplicitFunctionType -> Typed.TypedTerm [Syntax.Type]
+implicitFunctionTypeParams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ImplicitFunctionType"),
+        Model.projectionFieldName = (Model.Name "params")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the res field of hydra.scala.syntax.ImplicitFunctionType
+implicitFunctionTypeRes :: Typed.TypedTerm Syntax.ImplicitFunctionType -> Typed.TypedTerm Syntax.Type
+implicitFunctionTypeRes x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ImplicitFunctionType"),
+        Model.projectionFieldName = (Model.Name "res")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the params field of hydra.scala.syntax.ImplicitFunctionType
+implicitFunctionTypeWithParams :: Typed.TypedTerm Syntax.ImplicitFunctionType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ImplicitFunctionType
+implicitFunctionTypeWithParams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ImplicitFunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "res"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ImplicitFunctionType"),
+              Model.projectionFieldName = (Model.Name "res")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the res field of hydra.scala.syntax.ImplicitFunctionType
+implicitFunctionTypeWithRes :: Typed.TypedTerm Syntax.ImplicitFunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ImplicitFunctionType
+implicitFunctionTypeWithRes original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ImplicitFunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ImplicitFunctionType"),
+              Model.projectionFieldName = (Model.Name "params")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "res"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.Import
+import_ :: Typed.TypedTerm [Syntax.Importer] -> Typed.TypedTerm Syntax.Import
+import_ importers =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Import"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "importers"),
+          Model.fieldTerm = (Typed.unTypedTerm importers)}]}))
+
+-- | DSL injection for the export variant of hydra.scala.syntax.ImportExportStat
+importExportStatExport :: Typed.TypedTerm Syntax.Export -> Typed.TypedTerm Syntax.ImportExportStat
+importExportStatExport x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.ImportExportStat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "export"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the import variant of hydra.scala.syntax.ImportExportStat
+importExportStatImport :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm Syntax.ImportExportStat
+importExportStatImport x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.ImportExportStat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "import"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL accessor for the importers field of hydra.scala.syntax.Import
+importImporters :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm [Syntax.Importer]
+importImporters x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Import"),
+        Model.projectionFieldName = (Model.Name "importers")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the importers field of hydra.scala.syntax.Import
+importWithImporters :: Typed.TypedTerm Syntax.Import -> Typed.TypedTerm [Syntax.Importer] -> Typed.TypedTerm Syntax.Import
+importWithImporters original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Import"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "importers"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the given variant of hydra.scala.syntax.Importee
+importeeGiven :: Typed.TypedTerm Syntax.GivenImportee -> Typed.TypedTerm Syntax.Importee
+importeeGiven x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Importee"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "given"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the givenAll variant of hydra.scala.syntax.Importee
+importeeGivenAll :: Typed.TypedTerm Syntax.Importee
+importeeGivenAll =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Importee"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "givenAll"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the name variant of hydra.scala.syntax.Importee
+importeeName :: Typed.TypedTerm Syntax.NameImportee -> Typed.TypedTerm Syntax.Importee
+importeeName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Importee"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "name"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the rename variant of hydra.scala.syntax.Importee
+importeeRename :: Typed.TypedTerm Syntax.RenameImportee -> Typed.TypedTerm Syntax.Importee
+importeeRename x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Importee"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "rename"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the unimport variant of hydra.scala.syntax.Importee
+importeeUnimport :: Typed.TypedTerm Syntax.UnimportImportee -> Typed.TypedTerm Syntax.Importee
+importeeUnimport x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Importee"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "unimport"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the wildcard variant of hydra.scala.syntax.Importee
+importeeWildcard :: Typed.TypedTerm Syntax.Importee
+importeeWildcard =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Importee"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "wildcard"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL constructor for hydra.scala.syntax.Importer
+importer :: Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm [Syntax.Importee] -> Typed.TypedTerm Syntax.Importer
+importer ref importees =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Importer"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "ref"),
+          Model.fieldTerm = (Typed.unTypedTerm ref)},
+        Model.Field {
+          Model.fieldName = (Model.Name "importees"),
+          Model.fieldTerm = (Typed.unTypedTerm importees)}]}))
+
+-- | DSL accessor for the importees field of hydra.scala.syntax.Importer
+importerImportees :: Typed.TypedTerm Syntax.Importer -> Typed.TypedTerm [Syntax.Importee]
+importerImportees x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Importer"),
+        Model.projectionFieldName = (Model.Name "importees")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the ref field of hydra.scala.syntax.Importer
+importerRef :: Typed.TypedTerm Syntax.Importer -> Typed.TypedTerm Syntax.RefData
+importerRef x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Importer"),
+        Model.projectionFieldName = (Model.Name "ref")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the importees field of hydra.scala.syntax.Importer
+importerWithImportees :: Typed.TypedTerm Syntax.Importer -> Typed.TypedTerm [Syntax.Importee] -> Typed.TypedTerm Syntax.Importer
+importerWithImportees original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Importer"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "ref"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Importer"),
+              Model.projectionFieldName = (Model.Name "ref")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "importees"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the ref field of hydra.scala.syntax.Importer
+importerWithRef :: Typed.TypedTerm Syntax.Importer -> Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.Importer
+importerWithRef original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Importer"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "ref"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "importees"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Importer"),
+              Model.projectionFieldName = (Model.Name "importees")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.Init
+init :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [[Syntax.Data]] -> Typed.TypedTerm Syntax.Init
+init tpe name argss =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Init"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "argss"),
+          Model.fieldTerm = (Typed.unTypedTerm argss)}]}))
+
+-- | DSL accessor for the argss field of hydra.scala.syntax.Init
+initArgss :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm [[Syntax.Data]]
+initArgss x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Init"),
+        Model.projectionFieldName = (Model.Name "argss")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.Init
+initName :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.Name
+initName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Init"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.Init
+initTpe :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.Type
+initTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Init"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the argss field of hydra.scala.syntax.Init
+initWithArgss :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm [[Syntax.Data]] -> Typed.TypedTerm Syntax.Init
+initWithArgss original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Init"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Init"),
+              Model.projectionFieldName = (Model.Name "tpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Init"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "argss"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.Init
+initWithName :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Init
+initWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Init"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Init"),
+              Model.projectionFieldName = (Model.Name "tpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "argss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Init"),
+              Model.projectionFieldName = (Model.Name "argss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.Init
+initWithTpe :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Init
+initWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Init"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Init"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "argss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Init"),
+              Model.projectionFieldName = (Model.Name "argss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.InterpolateData
+interpolateData :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.Lit] -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.InterpolateData
+interpolateData prefix parts args =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "prefix"),
+          Model.fieldTerm = (Typed.unTypedTerm prefix)},
+        Model.Field {
+          Model.fieldName = (Model.Name "parts"),
+          Model.fieldTerm = (Typed.unTypedTerm parts)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm args)}]}))
+
+-- | DSL accessor for the args field of hydra.scala.syntax.InterpolateData
+interpolateDataArgs :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm [Syntax.Data]
+interpolateDataArgs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+        Model.projectionFieldName = (Model.Name "args")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the parts field of hydra.scala.syntax.InterpolateData
+interpolateDataParts :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm [Syntax.Lit]
+interpolateDataParts x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+        Model.projectionFieldName = (Model.Name "parts")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the prefix field of hydra.scala.syntax.InterpolateData
+interpolateDataPrefix :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm Syntax.NameData
+interpolateDataPrefix x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+        Model.projectionFieldName = (Model.Name "prefix")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the args field of hydra.scala.syntax.InterpolateData
+interpolateDataWithArgs :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.InterpolateData
+interpolateDataWithArgs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "prefix"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+              Model.projectionFieldName = (Model.Name "prefix")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "parts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+              Model.projectionFieldName = (Model.Name "parts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the parts field of hydra.scala.syntax.InterpolateData
+interpolateDataWithParts :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm [Syntax.Lit] -> Typed.TypedTerm Syntax.InterpolateData
+interpolateDataWithParts original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "prefix"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+              Model.projectionFieldName = (Model.Name "prefix")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "parts"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+              Model.projectionFieldName = (Model.Name "args")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the prefix field of hydra.scala.syntax.InterpolateData
+interpolateDataWithPrefix :: Typed.TypedTerm Syntax.InterpolateData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.InterpolateData
+interpolateDataWithPrefix original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "prefix"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "parts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+              Model.projectionFieldName = (Model.Name "parts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolateData"),
+              Model.projectionFieldName = (Model.Name "args")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.InterpolatePat
+interpolatePat :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm [Syntax.Lit] -> Typed.TypedTerm Syntax.InterpolatePat
+interpolatePat prefix parts =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.InterpolatePat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "prefix"),
+          Model.fieldTerm = (Typed.unTypedTerm prefix)},
+        Model.Field {
+          Model.fieldName = (Model.Name "parts"),
+          Model.fieldTerm = (Typed.unTypedTerm parts)}]}))
+
+-- | DSL accessor for the parts field of hydra.scala.syntax.InterpolatePat
+interpolatePatParts :: Typed.TypedTerm Syntax.InterpolatePat -> Typed.TypedTerm [Syntax.Lit]
+interpolatePatParts x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolatePat"),
+        Model.projectionFieldName = (Model.Name "parts")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the prefix field of hydra.scala.syntax.InterpolatePat
+interpolatePatPrefix :: Typed.TypedTerm Syntax.InterpolatePat -> Typed.TypedTerm Syntax.NameData
+interpolatePatPrefix x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolatePat"),
+        Model.projectionFieldName = (Model.Name "prefix")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the parts field of hydra.scala.syntax.InterpolatePat
+interpolatePatWithParts :: Typed.TypedTerm Syntax.InterpolatePat -> Typed.TypedTerm [Syntax.Lit] -> Typed.TypedTerm Syntax.InterpolatePat
+interpolatePatWithParts original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.InterpolatePat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "prefix"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolatePat"),
+              Model.projectionFieldName = (Model.Name "prefix")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "parts"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the prefix field of hydra.scala.syntax.InterpolatePat
+interpolatePatWithPrefix :: Typed.TypedTerm Syntax.InterpolatePat -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.InterpolatePat
+interpolatePatWithPrefix original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.InterpolatePat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "prefix"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "parts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.InterpolatePat"),
+              Model.projectionFieldName = (Model.Name "parts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.LambdaType
+lambdaType :: Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.LambdaType
+lambdaType tparams tpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.LambdaType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)}]}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.LambdaType
+lambdaTypeTparams :: Typed.TypedTerm Syntax.LambdaType -> Typed.TypedTerm [Syntax.ParamType]
+lambdaTypeTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.LambdaType"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.LambdaType
+lambdaTypeTpe :: Typed.TypedTerm Syntax.LambdaType -> Typed.TypedTerm Syntax.Type
+lambdaTypeTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.LambdaType"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.LambdaType
+lambdaTypeWithTparams :: Typed.TypedTerm Syntax.LambdaType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.LambdaType
+lambdaTypeWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.LambdaType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.LambdaType"),
+              Model.projectionFieldName = (Model.Name "tpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.LambdaType
+lambdaTypeWithTpe :: Typed.TypedTerm Syntax.LambdaType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.LambdaType
+lambdaTypeWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.LambdaType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.LambdaType"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the boolean variant of hydra.scala.syntax.Lit
+litBoolean :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Lit
+litBoolean x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "boolean"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the byte variant of hydra.scala.syntax.Lit
+litByte :: Typed.TypedTerm I.Int8 -> Typed.TypedTerm Syntax.Lit
+litByte x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "byte"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the bytes variant of hydra.scala.syntax.Lit
+litBytes :: Typed.TypedTerm [Int] -> Typed.TypedTerm Syntax.Lit
+litBytes x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "bytes"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the char variant of hydra.scala.syntax.Lit
+litChar :: Typed.TypedTerm Int -> Typed.TypedTerm Syntax.Lit
+litChar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "char"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the double variant of hydra.scala.syntax.Lit
+litDouble :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.Lit
+litDouble x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "double"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the float variant of hydra.scala.syntax.Lit
+litFloat :: Typed.TypedTerm Float -> Typed.TypedTerm Syntax.Lit
+litFloat x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "float"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the int variant of hydra.scala.syntax.Lit
+litInt :: Typed.TypedTerm Int -> Typed.TypedTerm Syntax.Lit
+litInt x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "int"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the long variant of hydra.scala.syntax.Lit
+litLong :: Typed.TypedTerm I.Int64 -> Typed.TypedTerm Syntax.Lit
+litLong x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "long"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the null variant of hydra.scala.syntax.Lit
+litNull :: Typed.TypedTerm Syntax.Lit
+litNull =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "null"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the short variant of hydra.scala.syntax.Lit
+litShort :: Typed.TypedTerm I.Int16 -> Typed.TypedTerm Syntax.Lit
+litShort x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "short"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the string variant of hydra.scala.syntax.Lit
+litString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Lit
+litString x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "string"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the symbol variant of hydra.scala.syntax.Lit
+litSymbol :: Typed.TypedTerm Syntax.ScalaSymbol -> Typed.TypedTerm Syntax.Lit
+litSymbol x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "symbol"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the unit variant of hydra.scala.syntax.Lit
+litUnit :: Typed.TypedTerm Syntax.Lit
+litUnit =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Lit"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "unit"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL constructor for hydra.scala.syntax.MatchData
+matchData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm Syntax.MatchData
+matchData expr cases =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.MatchData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm expr)},
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Typed.unTypedTerm cases)}]}))
+
+-- | DSL accessor for the cases field of hydra.scala.syntax.MatchData
+matchDataCases :: Typed.TypedTerm Syntax.MatchData -> Typed.TypedTerm [Syntax.Case]
+matchDataCases x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MatchData"),
+        Model.projectionFieldName = (Model.Name "cases")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the expr field of hydra.scala.syntax.MatchData
+matchDataExpr :: Typed.TypedTerm Syntax.MatchData -> Typed.TypedTerm Syntax.Data
+matchDataExpr x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MatchData"),
+        Model.projectionFieldName = (Model.Name "expr")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the cases field of hydra.scala.syntax.MatchData
+matchDataWithCases :: Typed.TypedTerm Syntax.MatchData -> Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm Syntax.MatchData
+matchDataWithCases original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.MatchData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MatchData"),
+              Model.projectionFieldName = (Model.Name "expr")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the expr field of hydra.scala.syntax.MatchData
+matchDataWithExpr :: Typed.TypedTerm Syntax.MatchData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.MatchData
+matchDataWithExpr original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.MatchData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MatchData"),
+              Model.projectionFieldName = (Model.Name "cases")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.MatchType
+matchType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm [Syntax.TypeCase] -> Typed.TypedTerm Syntax.MatchType
+matchType tpe cases =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.MatchType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Typed.unTypedTerm cases)}]}))
+
+-- | DSL accessor for the cases field of hydra.scala.syntax.MatchType
+matchTypeCases :: Typed.TypedTerm Syntax.MatchType -> Typed.TypedTerm [Syntax.TypeCase]
+matchTypeCases x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MatchType"),
+        Model.projectionFieldName = (Model.Name "cases")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.MatchType
+matchTypeTpe :: Typed.TypedTerm Syntax.MatchType -> Typed.TypedTerm Syntax.Type
+matchTypeTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MatchType"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the cases field of hydra.scala.syntax.MatchType
+matchTypeWithCases :: Typed.TypedTerm Syntax.MatchType -> Typed.TypedTerm [Syntax.TypeCase] -> Typed.TypedTerm Syntax.MatchType
+matchTypeWithCases original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.MatchType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MatchType"),
+              Model.projectionFieldName = (Model.Name "tpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.MatchType
+matchTypeWithTpe :: Typed.TypedTerm Syntax.MatchType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.MatchType
+matchTypeWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.MatchType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MatchType"),
+              Model.projectionFieldName = (Model.Name "cases")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the self variant of hydra.scala.syntax.Member
+memberSelf :: Typed.TypedTerm Syntax.Self -> Typed.TypedTerm Syntax.Member
+memberSelf x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Member"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "self"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the term variant of hydra.scala.syntax.Member
+memberTerm :: Typed.TypedTerm Syntax.DataMember -> Typed.TypedTerm Syntax.Member
+memberTerm x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Member"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "term"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the termParam variant of hydra.scala.syntax.Member
+memberTermParam :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm Syntax.Member
+memberTermParam x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Member"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "termParam"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the type variant of hydra.scala.syntax.Member
+memberType :: Typed.TypedTerm Syntax.TypeMember -> Typed.TypedTerm Syntax.Member
+memberType x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Member"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "type"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the typeParam variant of hydra.scala.syntax.Member
+memberTypeParam :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm Syntax.Member
+memberTypeParam x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Member"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "typeParam"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.MethodType
+methodType :: Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.MethodType
+methodType paramss tpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.MethodType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Typed.unTypedTerm paramss)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)}]}))
+
+-- | DSL accessor for the paramss field of hydra.scala.syntax.MethodType
+methodTypeParamss :: Typed.TypedTerm Syntax.MethodType -> Typed.TypedTerm [[Syntax.ParamData]]
+methodTypeParamss x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MethodType"),
+        Model.projectionFieldName = (Model.Name "paramss")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.MethodType
+methodTypeTpe :: Typed.TypedTerm Syntax.MethodType -> Typed.TypedTerm Syntax.Type
+methodTypeTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MethodType"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the paramss field of hydra.scala.syntax.MethodType
+methodTypeWithParamss :: Typed.TypedTerm Syntax.MethodType -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.MethodType
+methodTypeWithParamss original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.MethodType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MethodType"),
+              Model.projectionFieldName = (Model.Name "tpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.MethodType
+methodTypeWithTpe :: Typed.TypedTerm Syntax.MethodType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.MethodType
+methodTypeWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.MethodType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.MethodType"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the abstract variant of hydra.scala.syntax.Mod
+modAbstract :: Typed.TypedTerm Syntax.Mod
+modAbstract =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "abstract"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the annot variant of hydra.scala.syntax.Mod
+modAnnot :: Typed.TypedTerm Syntax.AnnotMod -> Typed.TypedTerm Syntax.Mod
+modAnnot x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "annot"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the case variant of hydra.scala.syntax.Mod
+modCase :: Typed.TypedTerm Syntax.Mod
+modCase =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "case"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the contravariant variant of hydra.scala.syntax.Mod
+modContravariant :: Typed.TypedTerm Syntax.Mod
+modContravariant =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "contravariant"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the covariant variant of hydra.scala.syntax.Mod
+modCovariant :: Typed.TypedTerm Syntax.Mod
+modCovariant =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "covariant"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the final variant of hydra.scala.syntax.Mod
+modFinal :: Typed.TypedTerm Syntax.Mod
+modFinal =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "final"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the implicit variant of hydra.scala.syntax.Mod
+modImplicit :: Typed.TypedTerm Syntax.Mod
+modImplicit =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "implicit"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the infix variant of hydra.scala.syntax.Mod
+modInfix :: Typed.TypedTerm Syntax.Mod
+modInfix =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "infix"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the inline variant of hydra.scala.syntax.Mod
+modInline :: Typed.TypedTerm Syntax.Mod
+modInline =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "inline"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the lazy variant of hydra.scala.syntax.Mod
+modLazy :: Typed.TypedTerm Syntax.Mod
+modLazy =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "lazy"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the opaque variant of hydra.scala.syntax.Mod
+modOpaque :: Typed.TypedTerm Syntax.Mod
+modOpaque =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "opaque"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the open variant of hydra.scala.syntax.Mod
+modOpen :: Typed.TypedTerm Syntax.Mod
+modOpen =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "open"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the override variant of hydra.scala.syntax.Mod
+modOverride :: Typed.TypedTerm Syntax.Mod
+modOverride =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "override"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the private variant of hydra.scala.syntax.Mod
+modPrivate :: Typed.TypedTerm Syntax.PrivateMod -> Typed.TypedTerm Syntax.Mod
+modPrivate x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "private"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the protected variant of hydra.scala.syntax.Mod
+modProtected :: Typed.TypedTerm Syntax.ProtectedMod -> Typed.TypedTerm Syntax.Mod
+modProtected x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "protected"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the sealed variant of hydra.scala.syntax.Mod
+modSealed :: Typed.TypedTerm Syntax.Mod
+modSealed =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "sealed"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the super variant of hydra.scala.syntax.Mod
+modSuper :: Typed.TypedTerm Syntax.Mod
+modSuper =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "super"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the transparent variant of hydra.scala.syntax.Mod
+modTransparent :: Typed.TypedTerm Syntax.Mod
+modTransparent =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "transparent"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the using variant of hydra.scala.syntax.Mod
+modUsing :: Typed.TypedTerm Syntax.Mod
+modUsing =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "using"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the valParam variant of hydra.scala.syntax.Mod
+modValParam :: Typed.TypedTerm Syntax.Mod
+modValParam =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "valParam"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the varParam variant of hydra.scala.syntax.Mod
+modVarParam :: Typed.TypedTerm Syntax.Mod
+modVarParam =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Mod"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "varParam"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the anonymous variant of hydra.scala.syntax.Name
+nameAnonymous :: Typed.TypedTerm Syntax.Name
+nameAnonymous =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Name"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "anonymous"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL constructor for hydra.scala.syntax.NameData
+nameData :: Typed.TypedTerm Syntax.PredefString -> Typed.TypedTerm Syntax.NameData
+nameData value =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.NameData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm value)}]}))
+
+-- | DSL accessor for the value field of hydra.scala.syntax.NameData
+nameDataValue :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.PredefString
+nameDataValue x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.NameData"),
+        Model.projectionFieldName = (Model.Name "value")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the value field of hydra.scala.syntax.NameData
+nameDataWithValue :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.PredefString -> Typed.TypedTerm Syntax.NameData
+nameDataWithValue original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.NameData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.NameImportee
+nameImportee :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.NameImportee
+nameImportee name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.NameImportee"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.NameImportee
+nameImporteeName :: Typed.TypedTerm Syntax.NameImportee -> Typed.TypedTerm Syntax.Name
+nameImporteeName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.NameImportee"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.NameImportee
+nameImporteeWithName :: Typed.TypedTerm Syntax.NameImportee -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.NameImportee
+nameImporteeWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.NameImportee"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the indeterminate variant of hydra.scala.syntax.Name
+nameIndeterminate :: Typed.TypedTerm Syntax.PredefString -> Typed.TypedTerm Syntax.Name
+nameIndeterminate x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Name"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "indeterminate"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.NameType
+nameType :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.NameType
+nameType value =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.NameType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm value)}]}))
+
+-- | DSL accessor for the value field of hydra.scala.syntax.NameType
+nameTypeValue :: Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm String
+nameTypeValue x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.NameType"),
+        Model.projectionFieldName = (Model.Name "value")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the value field of hydra.scala.syntax.NameType
+nameTypeWithValue :: Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.NameType
+nameTypeWithValue original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.NameType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the value variant of hydra.scala.syntax.Name
+nameValue :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Name
+nameValue x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Name"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "value"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.NewAnonymousData
+newAnonymousData :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.NewAnonymousData
+newAnonymousData templ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.NewAnonymousData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "templ"),
+          Model.fieldTerm = (Typed.unTypedTerm templ)}]}))
+
+-- | DSL accessor for the templ field of hydra.scala.syntax.NewAnonymousData
+newAnonymousDataTempl :: Typed.TypedTerm Syntax.NewAnonymousData -> Typed.TypedTerm Syntax.Template
+newAnonymousDataTempl x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.NewAnonymousData"),
+        Model.projectionFieldName = (Model.Name "templ")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the templ field of hydra.scala.syntax.NewAnonymousData
+newAnonymousDataWithTempl :: Typed.TypedTerm Syntax.NewAnonymousData -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.NewAnonymousData
+newAnonymousDataWithTempl original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.NewAnonymousData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "templ"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.NewData
+newData :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.NewData
+newData init =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.NewData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "init"),
+          Model.fieldTerm = (Typed.unTypedTerm init)}]}))
+
+-- | DSL accessor for the init field of hydra.scala.syntax.NewData
+newDataInit :: Typed.TypedTerm Syntax.NewData -> Typed.TypedTerm Syntax.Init
+newDataInit x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.NewData"),
+        Model.projectionFieldName = (Model.Name "init")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the init field of hydra.scala.syntax.NewData
+newDataWithInit :: Typed.TypedTerm Syntax.NewData -> Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.NewData
+newDataWithInit original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.NewData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "init"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ObjectDefn
+objectDefn :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ObjectDefn
+objectDefn name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ObjectDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.ObjectDefn
+objectDefnName :: Typed.TypedTerm Syntax.ObjectDefn -> Typed.TypedTerm Syntax.NameData
+objectDefnName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ObjectDefn"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.ObjectDefn
+objectDefnWithName :: Typed.TypedTerm Syntax.ObjectDefn -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ObjectDefn
+objectDefnWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ObjectDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ObjectPkg
+objectPkg :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.ObjectPkg
+objectPkg mods name template =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Typed.unTypedTerm template)}]}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.ObjectPkg
+objectPkgMods :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm [Syntax.Mod]
+objectPkgMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.ObjectPkg
+objectPkgName :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm Syntax.NameData
+objectPkgName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the template field of hydra.scala.syntax.ObjectPkg
+objectPkgTemplate :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm Syntax.Template
+objectPkgTemplate x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+        Model.projectionFieldName = (Model.Name "template")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.ObjectPkg
+objectPkgWithMods :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ObjectPkg
+objectPkgWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.ObjectPkg
+objectPkgWithName :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.ObjectPkg
+objectPkgWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the template field of hydra.scala.syntax.ObjectPkg
+objectPkgWithTemplate :: Typed.TypedTerm Syntax.ObjectPkg -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.ObjectPkg
+objectPkgWithTemplate original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ObjectPkg"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.OrType
+orType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.OrType
+orType lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.OrType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the lhs field of hydra.scala.syntax.OrType
+orTypeLhs :: Typed.TypedTerm Syntax.OrType -> Typed.TypedTerm Syntax.Type
+orTypeLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.OrType"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.OrType
+orTypeRhs :: Typed.TypedTerm Syntax.OrType -> Typed.TypedTerm Syntax.Type
+orTypeRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.OrType"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.scala.syntax.OrType
+orTypeWithLhs :: Typed.TypedTerm Syntax.OrType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.OrType
+orTypeWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.OrType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.OrType"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.OrType
+orTypeWithRhs :: Typed.TypedTerm Syntax.OrType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.OrType
+orTypeWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.OrType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.OrType"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ParamData
+paramData :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.ParamData
+paramData mods name decltpe default_ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm decltpe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm default_)}]}))
+
+-- | DSL accessor for the decltpe field of hydra.scala.syntax.ParamData
+paramDataDecltpe :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm (Maybe Syntax.Type)
+paramDataDecltpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+        Model.projectionFieldName = (Model.Name "decltpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the default field of hydra.scala.syntax.ParamData
+paramDataDefault :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm (Maybe Syntax.Data)
+paramDataDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+        Model.projectionFieldName = (Model.Name "default")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.ParamData
+paramDataMods :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm [Syntax.Mod]
+paramDataMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.ParamData
+paramDataName :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm Syntax.Name
+paramDataName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the decltpe field of hydra.scala.syntax.ParamData
+paramDataWithDecltpe :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.ParamData
+paramDataWithDecltpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the default field of hydra.scala.syntax.ParamData
+paramDataWithDefault :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.ParamData
+paramDataWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.ParamData
+paramDataWithMods :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ParamData
+paramDataWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.ParamData
+paramDataWithName :: Typed.TypedTerm Syntax.ParamData -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ParamData
+paramDataWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamData"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ParamType
+paramType :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm [Syntax.TypeBounds] -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ParamType
+paramType mods name tparams tbounds vbounds cbounds =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tbounds"),
+          Model.fieldTerm = (Typed.unTypedTerm tbounds)},
+        Model.Field {
+          Model.fieldName = (Model.Name "vbounds"),
+          Model.fieldTerm = (Typed.unTypedTerm vbounds)},
+        Model.Field {
+          Model.fieldName = (Model.Name "cbounds"),
+          Model.fieldTerm = (Typed.unTypedTerm cbounds)}]}))
+
+-- | DSL accessor for the cbounds field of hydra.scala.syntax.ParamType
+paramTypeCbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Type]
+paramTypeCbounds x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+        Model.projectionFieldName = (Model.Name "cbounds")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.ParamType
+paramTypeMods :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Mod]
+paramTypeMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.ParamType
+paramTypeName :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm Syntax.Name
+paramTypeName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tbounds field of hydra.scala.syntax.ParamType
+paramTypeTbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.TypeBounds]
+paramTypeTbounds x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+        Model.projectionFieldName = (Model.Name "tbounds")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.ParamType
+paramTypeTparams :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.ParamType]
+paramTypeTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the vbounds field of hydra.scala.syntax.ParamType
+paramTypeVbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Type]
+paramTypeVbounds x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+        Model.projectionFieldName = (Model.Name "vbounds")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the cbounds field of hydra.scala.syntax.ParamType
+paramTypeWithCbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ParamType
+paramTypeWithCbounds original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "tbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "vbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "vbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "cbounds"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.ParamType
+paramTypeWithMods :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ParamType
+paramTypeWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "tbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "vbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "vbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "cbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "cbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.ParamType
+paramTypeWithName :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ParamType
+paramTypeWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "tbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "vbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "vbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "cbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "cbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tbounds field of hydra.scala.syntax.ParamType
+paramTypeWithTbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.TypeBounds] -> Typed.TypedTerm Syntax.ParamType
+paramTypeWithTbounds original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tbounds"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "vbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "vbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "cbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "cbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.ParamType
+paramTypeWithTparams :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.ParamType
+paramTypeWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "tbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "vbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "vbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "cbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "cbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the vbounds field of hydra.scala.syntax.ParamType
+paramTypeWithVbounds :: Typed.TypedTerm Syntax.ParamType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.ParamType
+paramTypeWithVbounds original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "tbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "vbounds"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "cbounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ParamType"),
+              Model.projectionFieldName = (Model.Name "cbounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.PartialFunctionData
+partialFunctionData :: Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm Syntax.PartialFunctionData
+partialFunctionData cases =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PartialFunctionData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Typed.unTypedTerm cases)}]}))
+
+-- | DSL accessor for the cases field of hydra.scala.syntax.PartialFunctionData
+partialFunctionDataCases :: Typed.TypedTerm Syntax.PartialFunctionData -> Typed.TypedTerm [Syntax.Case]
+partialFunctionDataCases x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PartialFunctionData"),
+        Model.projectionFieldName = (Model.Name "cases")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the cases field of hydra.scala.syntax.PartialFunctionData
+partialFunctionDataWithCases :: Typed.TypedTerm Syntax.PartialFunctionData -> Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm Syntax.PartialFunctionData
+partialFunctionDataWithCases original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PartialFunctionData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the alternative variant of hydra.scala.syntax.Pat
+patAlternative :: Typed.TypedTerm Syntax.AlternativePat -> Typed.TypedTerm Syntax.Pat
+patAlternative x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "alternative"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the bind variant of hydra.scala.syntax.Pat
+patBind :: Typed.TypedTerm Syntax.BindPat -> Typed.TypedTerm Syntax.Pat
+patBind x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "bind"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the extract variant of hydra.scala.syntax.Pat
+patExtract :: Typed.TypedTerm Syntax.ExtractPat -> Typed.TypedTerm Syntax.Pat
+patExtract x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "extract"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the extractInfix variant of hydra.scala.syntax.Pat
+patExtractInfix :: Typed.TypedTerm Syntax.ExtractInfixPat -> Typed.TypedTerm Syntax.Pat
+patExtractInfix x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "extractInfix"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the given variant of hydra.scala.syntax.Pat
+patGiven :: Typed.TypedTerm Syntax.GivenPat -> Typed.TypedTerm Syntax.Pat
+patGiven x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "given"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the interpolate variant of hydra.scala.syntax.Pat
+patInterpolate :: Typed.TypedTerm Syntax.InterpolatePat -> Typed.TypedTerm Syntax.Pat
+patInterpolate x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "interpolate"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the repeated variant of hydra.scala.syntax.Pat
+patRepeated :: Typed.TypedTerm Syntax.RepeatedPat -> Typed.TypedTerm Syntax.Pat
+patRepeated x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "repeated"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the seqWildcard variant of hydra.scala.syntax.Pat
+patSeqWildcard :: Typed.TypedTerm Syntax.Pat
+patSeqWildcard =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "seqWildcard"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the tuple variant of hydra.scala.syntax.Pat
+patTuple :: Typed.TypedTerm Syntax.TuplePat -> Typed.TypedTerm Syntax.Pat
+patTuple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "tuple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the typed variant of hydra.scala.syntax.Pat
+patTyped :: Typed.TypedTerm Syntax.TypedPat -> Typed.TypedTerm Syntax.Pat
+patTyped x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "typed"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the var variant of hydra.scala.syntax.Pat
+patVar :: Typed.TypedTerm Syntax.VarPat -> Typed.TypedTerm Syntax.Pat
+patVar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "var"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the wildcard variant of hydra.scala.syntax.Pat
+patWildcard :: Typed.TypedTerm Syntax.Pat
+patWildcard =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Pat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "wildcard"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL constructor for hydra.scala.syntax.Pkg
+pkg :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Pkg
+pkg name ref stats =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ref"),
+          Model.fieldTerm = (Typed.unTypedTerm ref)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm stats)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.Pkg
+pkgName :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm Syntax.NameData
+pkgName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the ref field of hydra.scala.syntax.Pkg
+pkgRef :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm Syntax.RefData
+pkgRef x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+        Model.projectionFieldName = (Model.Name "ref")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the stats field of hydra.scala.syntax.Pkg
+pkgStats :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm [Syntax.Stat]
+pkgStats x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+        Model.projectionFieldName = (Model.Name "stats")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.Pkg
+pkgWithName :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.Pkg
+pkgWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ref"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+              Model.projectionFieldName = (Model.Name "ref")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+              Model.projectionFieldName = (Model.Name "stats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the ref field of hydra.scala.syntax.Pkg
+pkgWithRef :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.Pkg
+pkgWithRef original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ref"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+              Model.projectionFieldName = (Model.Name "stats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the stats field of hydra.scala.syntax.Pkg
+pkgWithStats :: Typed.TypedTerm Syntax.Pkg -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Pkg
+pkgWithStats original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ref"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Pkg"),
+              Model.projectionFieldName = (Model.Name "ref")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.PlaceholderType
+placeholderType :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm Syntax.PlaceholderType
+placeholderType bounds =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PlaceholderType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "bounds"),
+          Model.fieldTerm = (Typed.unTypedTerm bounds)}]}))
+
+-- | DSL accessor for the bounds field of hydra.scala.syntax.PlaceholderType
+placeholderTypeBounds :: Typed.TypedTerm Syntax.PlaceholderType -> Typed.TypedTerm Syntax.TypeBounds
+placeholderTypeBounds x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PlaceholderType"),
+        Model.projectionFieldName = (Model.Name "bounds")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the bounds field of hydra.scala.syntax.PlaceholderType
+placeholderTypeWithBounds :: Typed.TypedTerm Syntax.PlaceholderType -> Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm Syntax.PlaceholderType
+placeholderTypeWithBounds original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PlaceholderType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "bounds"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.PolyFunctionData
+polyFunctionData :: Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.PolyFunctionData
+polyFunctionData tparams body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.scala.syntax.PolyFunctionData
+polyFunctionDataBody :: Typed.TypedTerm Syntax.PolyFunctionData -> Typed.TypedTerm Syntax.Data
+polyFunctionDataBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionData"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.PolyFunctionData
+polyFunctionDataTparams :: Typed.TypedTerm Syntax.PolyFunctionData -> Typed.TypedTerm [Syntax.ParamType]
+polyFunctionDataTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionData"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.scala.syntax.PolyFunctionData
+polyFunctionDataWithBody :: Typed.TypedTerm Syntax.PolyFunctionData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.PolyFunctionData
+polyFunctionDataWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionData"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.PolyFunctionData
+polyFunctionDataWithTparams :: Typed.TypedTerm Syntax.PolyFunctionData -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PolyFunctionData
+polyFunctionDataWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionData"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.PolyFunctionType
+polyFunctionType :: Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.PolyFunctionType
+polyFunctionType tparams tpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)}]}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.PolyFunctionType
+polyFunctionTypeTparams :: Typed.TypedTerm Syntax.PolyFunctionType -> Typed.TypedTerm [Syntax.ParamType]
+polyFunctionTypeTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionType"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.PolyFunctionType
+polyFunctionTypeTpe :: Typed.TypedTerm Syntax.PolyFunctionType -> Typed.TypedTerm Syntax.Type
+polyFunctionTypeTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionType"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.PolyFunctionType
+polyFunctionTypeWithTparams :: Typed.TypedTerm Syntax.PolyFunctionType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PolyFunctionType
+polyFunctionTypeWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionType"),
+              Model.projectionFieldName = (Model.Name "tpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.PolyFunctionType
+polyFunctionTypeWithTpe :: Typed.TypedTerm Syntax.PolyFunctionType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.PolyFunctionType
+polyFunctionTypeWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PolyFunctionType"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for the hydra.scala.syntax.PredefString wrapper
+predefString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.PredefString
+predefString x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.scala.syntax.PredefString"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.scala.syntax.PrimaryCtor
+primaryCtor :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.PrimaryCtor
+primaryCtor mods name paramss =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Typed.unTypedTerm paramss)}]}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.PrimaryCtor
+primaryCtorMods :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm [Syntax.Mod]
+primaryCtorMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.PrimaryCtor
+primaryCtorName :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Name
+primaryCtorName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramss field of hydra.scala.syntax.PrimaryCtor
+primaryCtorParamss :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm [[Syntax.ParamData]]
+primaryCtorParamss x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+        Model.projectionFieldName = (Model.Name "paramss")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.PrimaryCtor
+primaryCtorWithMods :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.PrimaryCtor
+primaryCtorWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.PrimaryCtor
+primaryCtorWithName :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.PrimaryCtor
+primaryCtorWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramss field of hydra.scala.syntax.PrimaryCtor
+primaryCtorWithParamss :: Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.PrimaryCtor
+primaryCtorWithParamss original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PrimaryCtor"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.PrivateMod
+privateMod :: Typed.TypedTerm Syntax.Ref -> Typed.TypedTerm Syntax.PrivateMod
+privateMod within =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PrivateMod"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "within"),
+          Model.fieldTerm = (Typed.unTypedTerm within)}]}))
+
+-- | DSL updater for the within field of hydra.scala.syntax.PrivateMod
+privateModWithWithin :: Typed.TypedTerm Syntax.PrivateMod -> Typed.TypedTerm Syntax.Ref -> Typed.TypedTerm Syntax.PrivateMod
+privateModWithWithin original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.PrivateMod"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "within"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL accessor for the within field of hydra.scala.syntax.PrivateMod
+privateModWithin :: Typed.TypedTerm Syntax.PrivateMod -> Typed.TypedTerm Syntax.Ref
+privateModWithin x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.PrivateMod"),
+        Model.projectionFieldName = (Model.Name "within")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.scala.syntax.ProjectType
+projectType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.ProjectType
+projectType qual name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ProjectType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qual"),
+          Model.fieldTerm = (Typed.unTypedTerm qual)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.ProjectType
+projectTypeName :: Typed.TypedTerm Syntax.ProjectType -> Typed.TypedTerm Syntax.NameType
+projectTypeName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ProjectType"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the qual field of hydra.scala.syntax.ProjectType
+projectTypeQual :: Typed.TypedTerm Syntax.ProjectType -> Typed.TypedTerm Syntax.Type
+projectTypeQual x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ProjectType"),
+        Model.projectionFieldName = (Model.Name "qual")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.ProjectType
+projectTypeWithName :: Typed.TypedTerm Syntax.ProjectType -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.ProjectType
+projectTypeWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ProjectType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qual"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ProjectType"),
+              Model.projectionFieldName = (Model.Name "qual")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the qual field of hydra.scala.syntax.ProjectType
+projectTypeWithQual :: Typed.TypedTerm Syntax.ProjectType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ProjectType
+projectTypeWithQual original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ProjectType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qual"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ProjectType"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ProtectedMod
+protectedMod :: Typed.TypedTerm Syntax.Ref -> Typed.TypedTerm Syntax.ProtectedMod
+protectedMod within =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ProtectedMod"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "within"),
+          Model.fieldTerm = (Typed.unTypedTerm within)}]}))
+
+-- | DSL updater for the within field of hydra.scala.syntax.ProtectedMod
+protectedModWithWithin :: Typed.TypedTerm Syntax.ProtectedMod -> Typed.TypedTerm Syntax.Ref -> Typed.TypedTerm Syntax.ProtectedMod
+protectedModWithWithin original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ProtectedMod"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "within"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL accessor for the within field of hydra.scala.syntax.ProtectedMod
+protectedModWithin :: Typed.TypedTerm Syntax.ProtectedMod -> Typed.TypedTerm Syntax.Ref
+protectedModWithin x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ProtectedMod"),
+        Model.projectionFieldName = (Model.Name "within")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL injection for the anonymous variant of hydra.scala.syntax.RefData
+refDataAnonymous :: Typed.TypedTerm Syntax.AnonymousData -> Typed.TypedTerm Syntax.RefData
+refDataAnonymous x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.RefData"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "anonymous"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the applyUnary variant of hydra.scala.syntax.RefData
+refDataApplyUnary :: Typed.TypedTerm Syntax.ApplyUnaryData -> Typed.TypedTerm Syntax.RefData
+refDataApplyUnary x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.RefData"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "applyUnary"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the name variant of hydra.scala.syntax.RefData
+refDataName :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.RefData
+refDataName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.RefData"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "name"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the select variant of hydra.scala.syntax.RefData
+refDataSelect :: Typed.TypedTerm Syntax.SelectData -> Typed.TypedTerm Syntax.RefData
+refDataSelect x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.RefData"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "select"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the super variant of hydra.scala.syntax.RefData
+refDataSuper :: Typed.TypedTerm Syntax.SuperData -> Typed.TypedTerm Syntax.RefData
+refDataSuper x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.RefData"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "super"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the this variant of hydra.scala.syntax.RefData
+refDataThis :: Typed.TypedTerm Syntax.ThisData -> Typed.TypedTerm Syntax.RefData
+refDataThis x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.RefData"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "this"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the init variant of hydra.scala.syntax.Ref
+refInit :: Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.Ref
+refInit x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Ref"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "init"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the name variant of hydra.scala.syntax.Ref
+refName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Ref
+refName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Ref"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "name"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the name variant of hydra.scala.syntax.RefType
+refTypeName :: Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.RefType
+refTypeName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.RefType"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "name"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the project variant of hydra.scala.syntax.RefType
+refTypeProject :: Typed.TypedTerm Syntax.ProjectType -> Typed.TypedTerm Syntax.RefType
+refTypeProject x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.RefType"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "project"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the select variant of hydra.scala.syntax.RefType
+refTypeSelect :: Typed.TypedTerm Syntax.SelectType -> Typed.TypedTerm Syntax.RefType
+refTypeSelect x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.RefType"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "select"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the singleton variant of hydra.scala.syntax.RefType
+refTypeSingleton :: Typed.TypedTerm Syntax.SingletonType -> Typed.TypedTerm Syntax.RefType
+refTypeSingleton x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.RefType"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "singleton"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.RefineType
+refineType :: Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.RefineType
+refineType tpe stats =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RefineType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm stats)}]}))
+
+-- | DSL accessor for the stats field of hydra.scala.syntax.RefineType
+refineTypeStats :: Typed.TypedTerm Syntax.RefineType -> Typed.TypedTerm [Syntax.Stat]
+refineTypeStats x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RefineType"),
+        Model.projectionFieldName = (Model.Name "stats")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.RefineType
+refineTypeTpe :: Typed.TypedTerm Syntax.RefineType -> Typed.TypedTerm (Maybe Syntax.Type)
+refineTypeTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RefineType"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the stats field of hydra.scala.syntax.RefineType
+refineTypeWithStats :: Typed.TypedTerm Syntax.RefineType -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.RefineType
+refineTypeWithStats original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RefineType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RefineType"),
+              Model.projectionFieldName = (Model.Name "tpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.RefineType
+refineTypeWithTpe :: Typed.TypedTerm Syntax.RefineType -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.RefineType
+refineTypeWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RefineType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RefineType"),
+              Model.projectionFieldName = (Model.Name "stats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.RenameImportee
+renameImportee :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RenameImportee
+renameImportee name rename =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RenameImportee"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rename"),
+          Model.fieldTerm = (Typed.unTypedTerm rename)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.RenameImportee
+renameImporteeName :: Typed.TypedTerm Syntax.RenameImportee -> Typed.TypedTerm Syntax.Name
+renameImporteeName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RenameImportee"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rename field of hydra.scala.syntax.RenameImportee
+renameImporteeRename :: Typed.TypedTerm Syntax.RenameImportee -> Typed.TypedTerm Syntax.Name
+renameImporteeRename x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RenameImportee"),
+        Model.projectionFieldName = (Model.Name "rename")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.RenameImportee
+renameImporteeWithName :: Typed.TypedTerm Syntax.RenameImportee -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RenameImportee
+renameImporteeWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RenameImportee"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rename"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RenameImportee"),
+              Model.projectionFieldName = (Model.Name "rename")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rename field of hydra.scala.syntax.RenameImportee
+renameImporteeWithRename :: Typed.TypedTerm Syntax.RenameImportee -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.RenameImportee
+renameImporteeWithRename original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RenameImportee"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RenameImportee"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rename"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.RepeatedData
+repeatedData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.RepeatedData
+repeatedData expr =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RepeatedData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm expr)}]}))
+
+-- | DSL accessor for the expr field of hydra.scala.syntax.RepeatedData
+repeatedDataExpr :: Typed.TypedTerm Syntax.RepeatedData -> Typed.TypedTerm Syntax.Data
+repeatedDataExpr x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RepeatedData"),
+        Model.projectionFieldName = (Model.Name "expr")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the expr field of hydra.scala.syntax.RepeatedData
+repeatedDataWithExpr :: Typed.TypedTerm Syntax.RepeatedData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.RepeatedData
+repeatedDataWithExpr original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RepeatedData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.RepeatedEnumCaseDefn
+repeatedEnumCaseDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm [Syntax.NameData] -> Typed.TypedTerm Syntax.RepeatedEnumCaseDefn
+repeatedEnumCaseDefn mods cases =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Typed.unTypedTerm cases)}]}))
+
+-- | DSL accessor for the cases field of hydra.scala.syntax.RepeatedEnumCaseDefn
+repeatedEnumCaseDefnCases :: Typed.TypedTerm Syntax.RepeatedEnumCaseDefn -> Typed.TypedTerm [Syntax.NameData]
+repeatedEnumCaseDefnCases x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
+        Model.projectionFieldName = (Model.Name "cases")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.RepeatedEnumCaseDefn
+repeatedEnumCaseDefnMods :: Typed.TypedTerm Syntax.RepeatedEnumCaseDefn -> Typed.TypedTerm [Syntax.Mod]
+repeatedEnumCaseDefnMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the cases field of hydra.scala.syntax.RepeatedEnumCaseDefn
+repeatedEnumCaseDefnWithCases :: Typed.TypedTerm Syntax.RepeatedEnumCaseDefn -> Typed.TypedTerm [Syntax.NameData] -> Typed.TypedTerm Syntax.RepeatedEnumCaseDefn
+repeatedEnumCaseDefnWithCases original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.RepeatedEnumCaseDefn
+repeatedEnumCaseDefnWithMods :: Typed.TypedTerm Syntax.RepeatedEnumCaseDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.RepeatedEnumCaseDefn
+repeatedEnumCaseDefnWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"),
+              Model.projectionFieldName = (Model.Name "cases")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.RepeatedPat
+repeatedPat :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.RepeatedPat
+repeatedPat name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RepeatedPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.RepeatedPat
+repeatedPatName :: Typed.TypedTerm Syntax.RepeatedPat -> Typed.TypedTerm Syntax.NameData
+repeatedPatName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RepeatedPat"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.RepeatedPat
+repeatedPatWithName :: Typed.TypedTerm Syntax.RepeatedPat -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.RepeatedPat
+repeatedPatWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RepeatedPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.RepeatedType
+repeatedType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.RepeatedType
+repeatedType tpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RepeatedType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm tpe)}]}))
+
+-- | DSL accessor for the tpe field of hydra.scala.syntax.RepeatedType
+repeatedTypeTpe :: Typed.TypedTerm Syntax.RepeatedType -> Typed.TypedTerm Syntax.Type
+repeatedTypeTpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.RepeatedType"),
+        Model.projectionFieldName = (Model.Name "tpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the tpe field of hydra.scala.syntax.RepeatedType
+repeatedTypeWithTpe :: Typed.TypedTerm Syntax.RepeatedType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.RepeatedType
+repeatedTypeWithTpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.RepeatedType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "tpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ReturnData
+returnData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ReturnData
+returnData expr =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ReturnData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm expr)}]}))
+
+-- | DSL accessor for the expr field of hydra.scala.syntax.ReturnData
+returnDataExpr :: Typed.TypedTerm Syntax.ReturnData -> Typed.TypedTerm Syntax.Data
+returnDataExpr x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ReturnData"),
+        Model.projectionFieldName = (Model.Name "expr")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the expr field of hydra.scala.syntax.ReturnData
+returnDataWithExpr :: Typed.TypedTerm Syntax.ReturnData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ReturnData
+returnDataWithExpr original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ReturnData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ScalaSymbol
+scalaSymbol :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.ScalaSymbol
+scalaSymbol name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ScalaSymbol"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.ScalaSymbol
+scalaSymbolName :: Typed.TypedTerm Syntax.ScalaSymbol -> Typed.TypedTerm String
+scalaSymbolName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ScalaSymbol"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.ScalaSymbol
+scalaSymbolWithName :: Typed.TypedTerm Syntax.ScalaSymbol -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.ScalaSymbol
+scalaSymbolWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ScalaSymbol"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.SecondaryCtor
+secondaryCtor :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.Init -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.SecondaryCtor
+secondaryCtor mods name paramss init stats =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Typed.unTypedTerm paramss)},
+        Model.Field {
+          Model.fieldName = (Model.Name "init"),
+          Model.fieldTerm = (Typed.unTypedTerm init)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm stats)}]}))
+
+-- | DSL accessor for the init field of hydra.scala.syntax.SecondaryCtor
+secondaryCtorInit :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm Syntax.Init
+secondaryCtorInit x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+        Model.projectionFieldName = (Model.Name "init")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.SecondaryCtor
+secondaryCtorMods :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [Syntax.Mod]
+secondaryCtorMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.SecondaryCtor
+secondaryCtorName :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm Syntax.Name
+secondaryCtorName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramss field of hydra.scala.syntax.SecondaryCtor
+secondaryCtorParamss :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [[Syntax.ParamData]]
+secondaryCtorParamss x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+        Model.projectionFieldName = (Model.Name "paramss")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the stats field of hydra.scala.syntax.SecondaryCtor
+secondaryCtorStats :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [Syntax.Stat]
+secondaryCtorStats x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+        Model.projectionFieldName = (Model.Name "stats")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the init field of hydra.scala.syntax.SecondaryCtor
+secondaryCtorWithInit :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm Syntax.Init -> Typed.TypedTerm Syntax.SecondaryCtor
+secondaryCtorWithInit original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "init"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "stats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.SecondaryCtor
+secondaryCtorWithMods :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.SecondaryCtor
+secondaryCtorWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "init"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "init")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "stats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.SecondaryCtor
+secondaryCtorWithName :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SecondaryCtor
+secondaryCtorWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "init"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "init")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "stats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramss field of hydra.scala.syntax.SecondaryCtor
+secondaryCtorWithParamss :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [[Syntax.ParamData]] -> Typed.TypedTerm Syntax.SecondaryCtor
+secondaryCtorWithParamss original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "init"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "init")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "stats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the stats field of hydra.scala.syntax.SecondaryCtor
+secondaryCtorWithStats :: Typed.TypedTerm Syntax.SecondaryCtor -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.SecondaryCtor
+secondaryCtorWithStats original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramss"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "paramss")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "init"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SecondaryCtor"),
+              Model.projectionFieldName = (Model.Name "init")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.SelectData
+selectData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.SelectData
+selectData qual name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SelectData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qual"),
+          Model.fieldTerm = (Typed.unTypedTerm qual)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.SelectData
+selectDataName :: Typed.TypedTerm Syntax.SelectData -> Typed.TypedTerm Syntax.NameData
+selectDataName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SelectData"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the qual field of hydra.scala.syntax.SelectData
+selectDataQual :: Typed.TypedTerm Syntax.SelectData -> Typed.TypedTerm Syntax.Data
+selectDataQual x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SelectData"),
+        Model.projectionFieldName = (Model.Name "qual")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.SelectData
+selectDataWithName :: Typed.TypedTerm Syntax.SelectData -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.SelectData
+selectDataWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SelectData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qual"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SelectData"),
+              Model.projectionFieldName = (Model.Name "qual")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the qual field of hydra.scala.syntax.SelectData
+selectDataWithQual :: Typed.TypedTerm Syntax.SelectData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.SelectData
+selectDataWithQual original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SelectData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qual"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SelectData"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.SelectType
+selectType :: Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.SelectType
+selectType qual name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SelectType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qual"),
+          Model.fieldTerm = (Typed.unTypedTerm qual)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.SelectType
+selectTypeName :: Typed.TypedTerm Syntax.SelectType -> Typed.TypedTerm Syntax.NameType
+selectTypeName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SelectType"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the qual field of hydra.scala.syntax.SelectType
+selectTypeQual :: Typed.TypedTerm Syntax.SelectType -> Typed.TypedTerm Syntax.RefData
+selectTypeQual x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SelectType"),
+        Model.projectionFieldName = (Model.Name "qual")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.SelectType
+selectTypeWithName :: Typed.TypedTerm Syntax.SelectType -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.SelectType
+selectTypeWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SelectType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qual"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SelectType"),
+              Model.projectionFieldName = (Model.Name "qual")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the qual field of hydra.scala.syntax.SelectType
+selectTypeWithQual :: Typed.TypedTerm Syntax.SelectType -> Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.SelectType
+selectTypeWithQual original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SelectType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qual"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SelectType"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.scala.syntax.Self wrapper
+self :: Typed.TypedTerm () -> Typed.TypedTerm Syntax.Self
+self x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.scala.syntax.Self"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.scala.syntax.SingletonType
+singletonType :: Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.SingletonType
+singletonType ref =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SingletonType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "ref"),
+          Model.fieldTerm = (Typed.unTypedTerm ref)}]}))
+
+-- | DSL accessor for the ref field of hydra.scala.syntax.SingletonType
+singletonTypeRef :: Typed.TypedTerm Syntax.SingletonType -> Typed.TypedTerm Syntax.RefData
+singletonTypeRef x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SingletonType"),
+        Model.projectionFieldName = (Model.Name "ref")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the ref field of hydra.scala.syntax.SingletonType
+singletonTypeWithRef :: Typed.TypedTerm Syntax.SingletonType -> Typed.TypedTerm Syntax.RefData -> Typed.TypedTerm Syntax.SingletonType
+singletonTypeWithRef original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SingletonType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "ref"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.Source
+source :: Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Source
+source stats =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Source"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm stats)}]}))
+
+-- | DSL accessor for the stats field of hydra.scala.syntax.Source
+sourceStats :: Typed.TypedTerm Syntax.Source -> Typed.TypedTerm [Syntax.Stat]
+sourceStats x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Source"),
+        Model.projectionFieldName = (Model.Name "stats")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the stats field of hydra.scala.syntax.Source
+sourceWithStats :: Typed.TypedTerm Syntax.Source -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Source
+sourceWithStats original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Source"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the decl variant of hydra.scala.syntax.Stat
+statDecl :: Typed.TypedTerm Syntax.Decl -> Typed.TypedTerm Syntax.Stat
+statDecl x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Stat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "decl"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the defn variant of hydra.scala.syntax.Stat
+statDefn :: Typed.TypedTerm Syntax.Defn -> Typed.TypedTerm Syntax.Stat
+statDefn x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Stat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "defn"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the importExport variant of hydra.scala.syntax.Stat
+statImportExport :: Typed.TypedTerm Syntax.ImportExportStat -> Typed.TypedTerm Syntax.Stat
+statImportExport x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Stat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "importExport"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the term variant of hydra.scala.syntax.Stat
+statTerm :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Stat
+statTerm x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Stat"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "term"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.SuperData
+superData :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SuperData
+superData thisp superp =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SuperData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "thisp"),
+          Model.fieldTerm = (Typed.unTypedTerm thisp)},
+        Model.Field {
+          Model.fieldName = (Model.Name "superp"),
+          Model.fieldTerm = (Typed.unTypedTerm superp)}]}))
+
+-- | DSL accessor for the superp field of hydra.scala.syntax.SuperData
+superDataSuperp :: Typed.TypedTerm Syntax.SuperData -> Typed.TypedTerm Syntax.Name
+superDataSuperp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SuperData"),
+        Model.projectionFieldName = (Model.Name "superp")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the thisp field of hydra.scala.syntax.SuperData
+superDataThisp :: Typed.TypedTerm Syntax.SuperData -> Typed.TypedTerm Syntax.Name
+superDataThisp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SuperData"),
+        Model.projectionFieldName = (Model.Name "thisp")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the superp field of hydra.scala.syntax.SuperData
+superDataWithSuperp :: Typed.TypedTerm Syntax.SuperData -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SuperData
+superDataWithSuperp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SuperData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "thisp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SuperData"),
+              Model.projectionFieldName = (Model.Name "thisp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "superp"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the thisp field of hydra.scala.syntax.SuperData
+superDataWithThisp :: Typed.TypedTerm Syntax.SuperData -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SuperData
+superDataWithThisp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.SuperData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "thisp"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "superp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.SuperData"),
+              Model.projectionFieldName = (Model.Name "superp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.Template
+template :: Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm [Syntax.Init] -> Typed.TypedTerm Syntax.Self -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Template
+template early inits self stats =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Template"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "early"),
+          Model.fieldTerm = (Typed.unTypedTerm early)},
+        Model.Field {
+          Model.fieldName = (Model.Name "inits"),
+          Model.fieldTerm = (Typed.unTypedTerm inits)},
+        Model.Field {
+          Model.fieldName = (Model.Name "self"),
+          Model.fieldTerm = (Typed.unTypedTerm self)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm stats)}]}))
+
+-- | DSL accessor for the early field of hydra.scala.syntax.Template
+templateEarly :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Stat]
+templateEarly x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+        Model.projectionFieldName = (Model.Name "early")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the inits field of hydra.scala.syntax.Template
+templateInits :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Init]
+templateInits x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+        Model.projectionFieldName = (Model.Name "inits")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the self field of hydra.scala.syntax.Template
+templateSelf :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.Self
+templateSelf x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+        Model.projectionFieldName = (Model.Name "self")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the stats field of hydra.scala.syntax.Template
+templateStats :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Stat]
+templateStats x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+        Model.projectionFieldName = (Model.Name "stats")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the early field of hydra.scala.syntax.Template
+templateWithEarly :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Template
+templateWithEarly original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Template"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "early"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "inits"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "inits")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "self"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "self")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "stats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the inits field of hydra.scala.syntax.Template
+templateWithInits :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Init] -> Typed.TypedTerm Syntax.Template
+templateWithInits original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Template"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "early"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "early")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inits"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "self"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "self")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "stats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the self field of hydra.scala.syntax.Template
+templateWithSelf :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.Self -> Typed.TypedTerm Syntax.Template
+templateWithSelf original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Template"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "early"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "early")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inits"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "inits")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "self"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "stats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the stats field of hydra.scala.syntax.Template
+templateWithStats :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm [Syntax.Stat] -> Typed.TypedTerm Syntax.Template
+templateWithStats original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.Template"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "early"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "early")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inits"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "inits")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "self"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.Template"),
+              Model.projectionFieldName = (Model.Name "self")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stats"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for the hydra.scala.syntax.ThisData wrapper
+thisData :: Typed.TypedTerm () -> Typed.TypedTerm Syntax.ThisData
+thisData x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.scala.syntax.ThisData"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.scala.syntax.ThrowData
+throwData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ThrowData
+throwData expr =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ThrowData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm expr)}]}))
+
+-- | DSL accessor for the expr field of hydra.scala.syntax.ThrowData
+throwDataExpr :: Typed.TypedTerm Syntax.ThrowData -> Typed.TypedTerm Syntax.Data
+throwDataExpr x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ThrowData"),
+        Model.projectionFieldName = (Model.Name "expr")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the expr field of hydra.scala.syntax.ThrowData
+throwDataWithExpr :: Typed.TypedTerm Syntax.ThrowData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ThrowData
+throwDataWithExpr original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ThrowData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.TraitDefn
+traitDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.TraitDefn
+traitDefn mods name tparams ctor template =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Typed.unTypedTerm ctor)},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Typed.unTypedTerm template)}]}))
+
+-- | DSL accessor for the ctor field of hydra.scala.syntax.TraitDefn
+traitDefnCtor :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.PrimaryCtor
+traitDefnCtor x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+        Model.projectionFieldName = (Model.Name "ctor")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.TraitDefn
+traitDefnMods :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm [Syntax.Mod]
+traitDefnMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.TraitDefn
+traitDefnName :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.NameType
+traitDefnName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the template field of hydra.scala.syntax.TraitDefn
+traitDefnTemplate :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.Template
+traitDefnTemplate x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+        Model.projectionFieldName = (Model.Name "template")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.TraitDefn
+traitDefnTparams :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm [Syntax.ParamType]
+traitDefnTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the ctor field of hydra.scala.syntax.TraitDefn
+traitDefnWithCtor :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.PrimaryCtor -> Typed.TypedTerm Syntax.TraitDefn
+traitDefnWithCtor original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.TraitDefn
+traitDefnWithMods :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.TraitDefn
+traitDefnWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.TraitDefn
+traitDefnWithName :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.TraitDefn
+traitDefnWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the template field of hydra.scala.syntax.TraitDefn
+traitDefnWithTemplate :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.TraitDefn
+traitDefnWithTemplate original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.TraitDefn
+traitDefnWithTparams :: Typed.TypedTerm Syntax.TraitDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.TraitDefn
+traitDefnWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ctor"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "ctor")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "template"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TraitDefn"),
+              Model.projectionFieldName = (Model.Name "template")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the bounds variant of hydra.scala.syntax.Tree
+treeBounds :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm Syntax.Tree
+treeBounds x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "bounds"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the caseTree variant of hydra.scala.syntax.Tree
+treeCaseTree :: Typed.TypedTerm Syntax.CaseTree -> Typed.TypedTerm Syntax.Tree
+treeCaseTree x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "caseTree"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the ctor variant of hydra.scala.syntax.Tree
+treeCtor :: Typed.TypedTerm Syntax.Ctor -> Typed.TypedTerm Syntax.Tree
+treeCtor x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "ctor"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the enumerator variant of hydra.scala.syntax.Tree
+treeEnumerator :: Typed.TypedTerm Syntax.Enumerator -> Typed.TypedTerm Syntax.Tree
+treeEnumerator x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "enumerator"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the importee variant of hydra.scala.syntax.Tree
+treeImportee :: Typed.TypedTerm Syntax.Importee -> Typed.TypedTerm Syntax.Tree
+treeImportee x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "importee"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the importer variant of hydra.scala.syntax.Tree
+treeImporter :: Typed.TypedTerm Syntax.Importer -> Typed.TypedTerm Syntax.Tree
+treeImporter x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "importer"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the member variant of hydra.scala.syntax.Tree
+treeMember :: Typed.TypedTerm Syntax.Member -> Typed.TypedTerm Syntax.Tree
+treeMember x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "member"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the mod variant of hydra.scala.syntax.Tree
+treeMod :: Typed.TypedTerm Syntax.Mod -> Typed.TypedTerm Syntax.Tree
+treeMod x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "mod"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the pat variant of hydra.scala.syntax.Tree
+treePat :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Tree
+treePat x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "pat"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the ref variant of hydra.scala.syntax.Tree
+treeRef :: Typed.TypedTerm Syntax.Ref -> Typed.TypedTerm Syntax.Tree
+treeRef x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "ref"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the source variant of hydra.scala.syntax.Tree
+treeSource :: Typed.TypedTerm Syntax.Source -> Typed.TypedTerm Syntax.Tree
+treeSource x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "source"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the stat variant of hydra.scala.syntax.Tree
+treeStat :: Typed.TypedTerm Syntax.Stat -> Typed.TypedTerm Syntax.Tree
+treeStat x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "stat"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the template variant of hydra.scala.syntax.Tree
+treeTemplate :: Typed.TypedTerm Syntax.Template -> Typed.TypedTerm Syntax.Tree
+treeTemplate x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "template"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the type variant of hydra.scala.syntax.Tree
+treeType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Tree
+treeType x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Tree"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "type"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.TryData
+tryData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.TryData
+tryData expr catchp finallyp =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm expr)},
+        Model.Field {
+          Model.fieldName = (Model.Name "catchp"),
+          Model.fieldTerm = (Typed.unTypedTerm catchp)},
+        Model.Field {
+          Model.fieldName = (Model.Name "finallyp"),
+          Model.fieldTerm = (Typed.unTypedTerm finallyp)}]}))
+
+-- | DSL accessor for the catchp field of hydra.scala.syntax.TryData
+tryDataCatchp :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm [Syntax.Case]
+tryDataCatchp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+        Model.projectionFieldName = (Model.Name "catchp")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the expr field of hydra.scala.syntax.TryData
+tryDataExpr :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm Syntax.Data
+tryDataExpr x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+        Model.projectionFieldName = (Model.Name "expr")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the finallyp field of hydra.scala.syntax.TryData
+tryDataFinallyp :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm (Maybe Syntax.Data)
+tryDataFinallyp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+        Model.projectionFieldName = (Model.Name "finallyp")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the catchp field of hydra.scala.syntax.TryData
+tryDataWithCatchp :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm [Syntax.Case] -> Typed.TypedTerm Syntax.TryData
+tryDataWithCatchp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+              Model.projectionFieldName = (Model.Name "expr")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "catchp"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "finallyp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+              Model.projectionFieldName = (Model.Name "finallyp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the expr field of hydra.scala.syntax.TryData
+tryDataWithExpr :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.TryData
+tryDataWithExpr original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "catchp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+              Model.projectionFieldName = (Model.Name "catchp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "finallyp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+              Model.projectionFieldName = (Model.Name "finallyp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the finallyp field of hydra.scala.syntax.TryData
+tryDataWithFinallyp :: Typed.TypedTerm Syntax.TryData -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.TryData
+tryDataWithFinallyp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+              Model.projectionFieldName = (Model.Name "expr")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "catchp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryData"),
+              Model.projectionFieldName = (Model.Name "catchp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "finallyp"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.TryWithHandlerData
+tryWithHandlerData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.TryWithHandlerData
+tryWithHandlerData expr catchp finallyp =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm expr)},
+        Model.Field {
+          Model.fieldName = (Model.Name "catchp"),
+          Model.fieldTerm = (Typed.unTypedTerm catchp)},
+        Model.Field {
+          Model.fieldName = (Model.Name "finallyp"),
+          Model.fieldTerm = (Typed.unTypedTerm finallyp)}]}))
+
+-- | DSL accessor for the catchp field of hydra.scala.syntax.TryWithHandlerData
+tryWithHandlerDataCatchp :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm Syntax.Data
+tryWithHandlerDataCatchp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+        Model.projectionFieldName = (Model.Name "catchp")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the expr field of hydra.scala.syntax.TryWithHandlerData
+tryWithHandlerDataExpr :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm Syntax.Data
+tryWithHandlerDataExpr x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+        Model.projectionFieldName = (Model.Name "expr")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the finallyp field of hydra.scala.syntax.TryWithHandlerData
+tryWithHandlerDataFinallyp :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm (Maybe Syntax.Data)
+tryWithHandlerDataFinallyp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+        Model.projectionFieldName = (Model.Name "finallyp")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the catchp field of hydra.scala.syntax.TryWithHandlerData
+tryWithHandlerDataWithCatchp :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.TryWithHandlerData
+tryWithHandlerDataWithCatchp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+              Model.projectionFieldName = (Model.Name "expr")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "catchp"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "finallyp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+              Model.projectionFieldName = (Model.Name "finallyp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the expr field of hydra.scala.syntax.TryWithHandlerData
+tryWithHandlerDataWithExpr :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.TryWithHandlerData
+tryWithHandlerDataWithExpr original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "catchp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+              Model.projectionFieldName = (Model.Name "catchp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "finallyp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+              Model.projectionFieldName = (Model.Name "finallyp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the finallyp field of hydra.scala.syntax.TryWithHandlerData
+tryWithHandlerDataWithFinallyp :: Typed.TypedTerm Syntax.TryWithHandlerData -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.TryWithHandlerData
+tryWithHandlerDataWithFinallyp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+              Model.projectionFieldName = (Model.Name "expr")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "catchp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TryWithHandlerData"),
+              Model.projectionFieldName = (Model.Name "catchp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "finallyp"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.TupleData
+tupleData :: Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.TupleData
+tupleData args =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TupleData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm args)}]}))
+
+-- | DSL accessor for the args field of hydra.scala.syntax.TupleData
+tupleDataArgs :: Typed.TypedTerm Syntax.TupleData -> Typed.TypedTerm [Syntax.Data]
+tupleDataArgs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TupleData"),
+        Model.projectionFieldName = (Model.Name "args")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the args field of hydra.scala.syntax.TupleData
+tupleDataWithArgs :: Typed.TypedTerm Syntax.TupleData -> Typed.TypedTerm [Syntax.Data] -> Typed.TypedTerm Syntax.TupleData
+tupleDataWithArgs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TupleData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.TuplePat
+tuplePat :: Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.TuplePat
+tuplePat args =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TuplePat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm args)}]}))
+
+-- | DSL accessor for the args field of hydra.scala.syntax.TuplePat
+tuplePatArgs :: Typed.TypedTerm Syntax.TuplePat -> Typed.TypedTerm [Syntax.Pat]
+tuplePatArgs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TuplePat"),
+        Model.projectionFieldName = (Model.Name "args")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the args field of hydra.scala.syntax.TuplePat
+tuplePatWithArgs :: Typed.TypedTerm Syntax.TuplePat -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.TuplePat
+tuplePatWithArgs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TuplePat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.TupleType
+tupleType :: Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.TupleType
+tupleType args =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TupleType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm args)}]}))
+
+-- | DSL accessor for the args field of hydra.scala.syntax.TupleType
+tupleTypeArgs :: Typed.TypedTerm Syntax.TupleType -> Typed.TypedTerm [Syntax.Type]
+tupleTypeArgs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TupleType"),
+        Model.projectionFieldName = (Model.Name "args")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the args field of hydra.scala.syntax.TupleType
+tupleTypeWithArgs :: Typed.TypedTerm Syntax.TupleType -> Typed.TypedTerm [Syntax.Type] -> Typed.TypedTerm Syntax.TupleType
+tupleTypeWithArgs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TupleType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "args"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the and variant of hydra.scala.syntax.Type
+typeAnd :: Typed.TypedTerm Syntax.AndType -> Typed.TypedTerm Syntax.Type
+typeAnd x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "and"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the annotate variant of hydra.scala.syntax.Type
+typeAnnotate :: Typed.TypedTerm Syntax.AnnotateType -> Typed.TypedTerm Syntax.Type
+typeAnnotate x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "annotate"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the anonymousName variant of hydra.scala.syntax.Type
+typeAnonymousName :: Typed.TypedTerm Syntax.AnonymousNameType -> Typed.TypedTerm Syntax.Type
+typeAnonymousName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "anonymousName"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the apply variant of hydra.scala.syntax.Type
+typeApply :: Typed.TypedTerm Syntax.ApplyType -> Typed.TypedTerm Syntax.Type
+typeApply x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "apply"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the applyInfix variant of hydra.scala.syntax.Type
+typeApplyInfix :: Typed.TypedTerm Syntax.ApplyInfixType -> Typed.TypedTerm Syntax.Type
+typeApplyInfix x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "applyInfix"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.TypeBounds
+typeBounds :: Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.TypeBounds
+typeBounds lo hi =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeBounds"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lo"),
+          Model.fieldTerm = (Typed.unTypedTerm lo)},
+        Model.Field {
+          Model.fieldName = (Model.Name "hi"),
+          Model.fieldTerm = (Typed.unTypedTerm hi)}]}))
+
+-- | DSL accessor for the hi field of hydra.scala.syntax.TypeBounds
+typeBoundsHi :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm (Maybe Syntax.Type)
+typeBoundsHi x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeBounds"),
+        Model.projectionFieldName = (Model.Name "hi")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the lo field of hydra.scala.syntax.TypeBounds
+typeBoundsLo :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm (Maybe Syntax.Type)
+typeBoundsLo x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeBounds"),
+        Model.projectionFieldName = (Model.Name "lo")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the hi field of hydra.scala.syntax.TypeBounds
+typeBoundsWithHi :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.TypeBounds
+typeBoundsWithHi original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeBounds"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lo"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeBounds"),
+              Model.projectionFieldName = (Model.Name "lo")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "hi"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the lo field of hydra.scala.syntax.TypeBounds
+typeBoundsWithLo :: Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.TypeBounds
+typeBoundsWithLo original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeBounds"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lo"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "hi"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeBounds"),
+              Model.projectionFieldName = (Model.Name "hi")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the byName variant of hydra.scala.syntax.Type
+typeByName :: Typed.TypedTerm Syntax.ByNameType -> Typed.TypedTerm Syntax.Type
+typeByName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "byName"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.TypeCase
+typeCase :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeCase
+typeCase pat body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeCase"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Typed.unTypedTerm pat)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.scala.syntax.TypeCase
+typeCaseBody :: Typed.TypedTerm Syntax.TypeCase -> Typed.TypedTerm Syntax.Type
+typeCaseBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeCase"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the pat field of hydra.scala.syntax.TypeCase
+typeCasePat :: Typed.TypedTerm Syntax.TypeCase -> Typed.TypedTerm Syntax.Type
+typeCasePat x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeCase"),
+        Model.projectionFieldName = (Model.Name "pat")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.scala.syntax.TypeCase
+typeCaseWithBody :: Typed.TypedTerm Syntax.TypeCase -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeCase
+typeCaseWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeCase"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeCase"),
+              Model.projectionFieldName = (Model.Name "pat")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the pat field of hydra.scala.syntax.TypeCase
+typeCaseWithPat :: Typed.TypedTerm Syntax.TypeCase -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeCase
+typeCaseWithPat original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeCase"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeCase"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the contextFunction variant of hydra.scala.syntax.Type
+typeContextFunction :: Typed.TypedTerm Syntax.ContextFunctionType -> Typed.TypedTerm Syntax.Type
+typeContextFunction x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "contextFunction"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.TypeDecl
+typeDecl :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm Syntax.TypeDecl
+typeDecl mods name tparams bounds =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "bounds"),
+          Model.fieldTerm = (Typed.unTypedTerm bounds)}]}))
+
+-- | DSL accessor for the bounds field of hydra.scala.syntax.TypeDecl
+typeDeclBounds :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm Syntax.TypeBounds
+typeDeclBounds x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+        Model.projectionFieldName = (Model.Name "bounds")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.TypeDecl
+typeDeclMods :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm [Syntax.Mod]
+typeDeclMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.TypeDecl
+typeDeclName :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm Syntax.NameType
+typeDeclName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.TypeDecl
+typeDeclTparams :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm [Syntax.ParamType]
+typeDeclTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the bounds field of hydra.scala.syntax.TypeDecl
+typeDeclWithBounds :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm Syntax.TypeBounds -> Typed.TypedTerm Syntax.TypeDecl
+typeDeclWithBounds original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "bounds"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.TypeDecl
+typeDeclWithMods :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.TypeDecl
+typeDeclWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "bounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "bounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.TypeDecl
+typeDeclWithName :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.TypeDecl
+typeDeclWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "bounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "bounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.TypeDecl
+typeDeclWithTparams :: Typed.TypedTerm Syntax.TypeDecl -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.TypeDecl
+typeDeclWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "bounds"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDecl"),
+              Model.projectionFieldName = (Model.Name "bounds")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.TypeDefn
+typeDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeDefn
+typeDefn mods name tparams body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm tparams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.scala.syntax.TypeDefn
+typeDefnBody :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm Syntax.Type
+typeDefnBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.TypeDefn
+typeDefnMods :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm [Syntax.Mod]
+typeDefnMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.TypeDefn
+typeDefnName :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm Syntax.NameType
+typeDefnName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the tparams field of hydra.scala.syntax.TypeDefn
+typeDefnTparams :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm [Syntax.ParamType]
+typeDefnTparams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+        Model.projectionFieldName = (Model.Name "tparams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.scala.syntax.TypeDefn
+typeDefnWithBody :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypeDefn
+typeDefnWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.TypeDefn
+typeDefnWithMods :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.TypeDefn
+typeDefnWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.TypeDefn
+typeDefnWithName :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.TypeDefn
+typeDefnWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "tparams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tparams field of hydra.scala.syntax.TypeDefn
+typeDefnWithTparams :: Typed.TypedTerm Syntax.TypeDefn -> Typed.TypedTerm [Syntax.ParamType] -> Typed.TypedTerm Syntax.TypeDefn
+typeDefnWithTparams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tparams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeDefn"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the existential variant of hydra.scala.syntax.Type
+typeExistential :: Typed.TypedTerm Syntax.ExistentialType -> Typed.TypedTerm Syntax.Type
+typeExistential x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "existential"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the function variant of hydra.scala.syntax.Type
+typeFunction :: Typed.TypedTerm Syntax.FunctionType -> Typed.TypedTerm Syntax.Type
+typeFunction x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "function"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the implicitFunction variant of hydra.scala.syntax.Type
+typeImplicitFunction :: Typed.TypedTerm Syntax.ImplicitFunctionType -> Typed.TypedTerm Syntax.Type
+typeImplicitFunction x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "implicitFunction"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the lambda variant of hydra.scala.syntax.Type
+typeLambda :: Typed.TypedTerm Syntax.LambdaType -> Typed.TypedTerm Syntax.Type
+typeLambda x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "lambda"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the match variant of hydra.scala.syntax.Type
+typeMatch :: Typed.TypedTerm Syntax.MatchType -> Typed.TypedTerm Syntax.Type
+typeMatch x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "match"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.TypeMember
+typeMember :: Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.TypeMember
+typeMember name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeMember"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.TypeMember
+typeMemberName :: Typed.TypedTerm Syntax.TypeMember -> Typed.TypedTerm Syntax.NameType
+typeMemberName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypeMember"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.TypeMember
+typeMemberWithName :: Typed.TypedTerm Syntax.TypeMember -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.TypeMember
+typeMemberWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypeMember"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the method variant of hydra.scala.syntax.Type
+typeMethod :: Typed.TypedTerm Syntax.MethodType -> Typed.TypedTerm Syntax.Type
+typeMethod x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "method"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the or variant of hydra.scala.syntax.Type
+typeOr :: Typed.TypedTerm Syntax.OrType -> Typed.TypedTerm Syntax.Type
+typeOr x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "or"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the placeholder variant of hydra.scala.syntax.Type
+typePlaceholder :: Typed.TypedTerm Syntax.PlaceholderType -> Typed.TypedTerm Syntax.Type
+typePlaceholder x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "placeholder"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the polyFunction variant of hydra.scala.syntax.Type
+typePolyFunction :: Typed.TypedTerm Syntax.PolyFunctionType -> Typed.TypedTerm Syntax.Type
+typePolyFunction x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "polyFunction"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the ref variant of hydra.scala.syntax.Type
+typeRef :: Typed.TypedTerm Syntax.RefType -> Typed.TypedTerm Syntax.Type
+typeRef x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "ref"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the refine variant of hydra.scala.syntax.Type
+typeRefine :: Typed.TypedTerm Syntax.RefineType -> Typed.TypedTerm Syntax.Type
+typeRefine x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "refine"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the repeated variant of hydra.scala.syntax.Type
+typeRepeated :: Typed.TypedTerm Syntax.RepeatedType -> Typed.TypedTerm Syntax.Type
+typeRepeated x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "repeated"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the tuple variant of hydra.scala.syntax.Type
+typeTuple :: Typed.TypedTerm Syntax.TupleType -> Typed.TypedTerm Syntax.Type
+typeTuple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "tuple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the typedParam variant of hydra.scala.syntax.Type
+typeTypedParam :: Typed.TypedTerm Syntax.TypedParamType -> Typed.TypedTerm Syntax.Type
+typeTypedParam x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "typedParam"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the var variant of hydra.scala.syntax.Type
+typeVar :: Typed.TypedTerm Syntax.VarType -> Typed.TypedTerm Syntax.Type
+typeVar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "var"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the with variant of hydra.scala.syntax.Type
+typeWith :: Typed.TypedTerm Syntax.WithType -> Typed.TypedTerm Syntax.Type
+typeWith x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.scala.syntax.Type"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "with"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.scala.syntax.TypedParamType
+typedParamType :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedParamType
+typedParamType name typ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypedParamType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typ"),
+          Model.fieldTerm = (Typed.unTypedTerm typ)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.TypedParamType
+typedParamTypeName :: Typed.TypedTerm Syntax.TypedParamType -> Typed.TypedTerm Syntax.Name
+typedParamTypeName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypedParamType"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the typ field of hydra.scala.syntax.TypedParamType
+typedParamTypeTyp :: Typed.TypedTerm Syntax.TypedParamType -> Typed.TypedTerm Syntax.Type
+typedParamTypeTyp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypedParamType"),
+        Model.projectionFieldName = (Model.Name "typ")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.TypedParamType
+typedParamTypeWithName :: Typed.TypedTerm Syntax.TypedParamType -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TypedParamType
+typedParamTypeWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypedParamType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typ"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypedParamType"),
+              Model.projectionFieldName = (Model.Name "typ")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the typ field of hydra.scala.syntax.TypedParamType
+typedParamTypeWithTyp :: Typed.TypedTerm Syntax.TypedParamType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedParamType
+typedParamTypeWithTyp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypedParamType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypedParamType"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typ"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.TypedPat
+typedPat :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedPat
+typedPat lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypedPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the lhs field of hydra.scala.syntax.TypedPat
+typedPatLhs :: Typed.TypedTerm Syntax.TypedPat -> Typed.TypedTerm Syntax.Pat
+typedPatLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypedPat"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.TypedPat
+typedPatRhs :: Typed.TypedTerm Syntax.TypedPat -> Typed.TypedTerm Syntax.Type
+typedPatRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypedPat"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.scala.syntax.TypedPat
+typedPatWithLhs :: Typed.TypedTerm Syntax.TypedPat -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.TypedPat
+typedPatWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypedPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypedPat"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.TypedPat
+typedPatWithRhs :: Typed.TypedTerm Syntax.TypedPat -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.TypedPat
+typedPatWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.TypedPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.TypedPat"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL accessor for the body of hydra.scala.syntax.AnonymousData
+unAnonymousData :: Typed.TypedTerm Syntax.AnonymousData -> Typed.TypedTerm ()
+unAnonymousData x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.scala.syntax.AnonymousData")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.scala.syntax.AnonymousNameType
+unAnonymousNameType :: Typed.TypedTerm Syntax.AnonymousNameType -> Typed.TypedTerm ()
+unAnonymousNameType x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.scala.syntax.AnonymousNameType")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.scala.syntax.PredefString
+unPredefString :: Typed.TypedTerm Syntax.PredefString -> Typed.TypedTerm String
+unPredefString x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.scala.syntax.PredefString")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.scala.syntax.Self
+unSelf :: Typed.TypedTerm Syntax.Self -> Typed.TypedTerm ()
+unSelf x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.scala.syntax.Self")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.scala.syntax.ThisData
+unThisData :: Typed.TypedTerm Syntax.ThisData -> Typed.TypedTerm ()
+unThisData x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.scala.syntax.ThisData")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.scala.syntax.UnimportImportee
+unimportImportee :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.UnimportImportee
+unimportImportee name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.UnimportImportee"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.UnimportImportee
+unimportImporteeName :: Typed.TypedTerm Syntax.UnimportImportee -> Typed.TypedTerm Syntax.Name
+unimportImporteeName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.UnimportImportee"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.UnimportImportee
+unimportImporteeWithName :: Typed.TypedTerm Syntax.UnimportImportee -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.UnimportImportee
+unimportImporteeWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.UnimportImportee"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ValDecl
+valDecl :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ValDecl
+valDecl mods pats decltpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Typed.unTypedTerm pats)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm decltpe)}]}))
+
+-- | DSL accessor for the decltpe field of hydra.scala.syntax.ValDecl
+valDeclDecltpe :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm Syntax.Type
+valDeclDecltpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+        Model.projectionFieldName = (Model.Name "decltpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.ValDecl
+valDeclMods :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm [Syntax.Mod]
+valDeclMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the pats field of hydra.scala.syntax.ValDecl
+valDeclPats :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm [Syntax.Pat]
+valDeclPats x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+        Model.projectionFieldName = (Model.Name "pats")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the decltpe field of hydra.scala.syntax.ValDecl
+valDeclWithDecltpe :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ValDecl
+valDeclWithDecltpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+              Model.projectionFieldName = (Model.Name "pats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.ValDecl
+valDeclWithMods :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ValDecl
+valDeclWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+              Model.projectionFieldName = (Model.Name "pats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the pats field of hydra.scala.syntax.ValDecl
+valDeclWithPats :: Typed.TypedTerm Syntax.ValDecl -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.ValDecl
+valDeclWithPats original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ValDefn
+valDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ValDefn
+valDefn mods pats decltpe rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Typed.unTypedTerm pats)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm decltpe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the decltpe field of hydra.scala.syntax.ValDefn
+valDefnDecltpe :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm (Maybe Syntax.Type)
+valDefnDecltpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+        Model.projectionFieldName = (Model.Name "decltpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.ValDefn
+valDefnMods :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm [Syntax.Mod]
+valDefnMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the pats field of hydra.scala.syntax.ValDefn
+valDefnPats :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm [Syntax.Pat]
+valDefnPats x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+        Model.projectionFieldName = (Model.Name "pats")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.ValDefn
+valDefnRhs :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm Syntax.Data
+valDefnRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the decltpe field of hydra.scala.syntax.ValDefn
+valDefnWithDecltpe :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm (Maybe Syntax.Type) -> Typed.TypedTerm Syntax.ValDefn
+valDefnWithDecltpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "pats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.ValDefn
+valDefnWithMods :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.ValDefn
+valDefnWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "pats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the pats field of hydra.scala.syntax.ValDefn
+valDefnWithPats :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.ValDefn
+valDefnWithPats original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.ValDefn
+valDefnWithRhs :: Typed.TypedTerm Syntax.ValDefn -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ValDefn
+valDefnWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "pats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.ValEnumerator
+valEnumerator :: Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ValEnumerator
+valEnumerator pat rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValEnumerator"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Typed.unTypedTerm pat)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the pat field of hydra.scala.syntax.ValEnumerator
+valEnumeratorPat :: Typed.TypedTerm Syntax.ValEnumerator -> Typed.TypedTerm Syntax.Pat
+valEnumeratorPat x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValEnumerator"),
+        Model.projectionFieldName = (Model.Name "pat")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.ValEnumerator
+valEnumeratorRhs :: Typed.TypedTerm Syntax.ValEnumerator -> Typed.TypedTerm Syntax.Data
+valEnumeratorRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValEnumerator"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the pat field of hydra.scala.syntax.ValEnumerator
+valEnumeratorWithPat :: Typed.TypedTerm Syntax.ValEnumerator -> Typed.TypedTerm Syntax.Pat -> Typed.TypedTerm Syntax.ValEnumerator
+valEnumeratorWithPat original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValEnumerator"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValEnumerator"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.ValEnumerator
+valEnumeratorWithRhs :: Typed.TypedTerm Syntax.ValEnumerator -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.ValEnumerator
+valEnumeratorWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.ValEnumerator"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pat"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.ValEnumerator"),
+              Model.projectionFieldName = (Model.Name "pat")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.VarDecl
+varDecl :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.VarDecl
+varDecl mods pats decltpe =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Typed.unTypedTerm pats)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm decltpe)}]}))
+
+-- | DSL accessor for the decltpe field of hydra.scala.syntax.VarDecl
+varDeclDecltpe :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm Syntax.Type
+varDeclDecltpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+        Model.projectionFieldName = (Model.Name "decltpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.VarDecl
+varDeclMods :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm [Syntax.Mod]
+varDeclMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the pats field of hydra.scala.syntax.VarDecl
+varDeclPats :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm [Syntax.Pat]
+varDeclPats x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+        Model.projectionFieldName = (Model.Name "pats")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the decltpe field of hydra.scala.syntax.VarDecl
+varDeclWithDecltpe :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.VarDecl
+varDeclWithDecltpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+              Model.projectionFieldName = (Model.Name "pats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.VarDecl
+varDeclWithMods :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.VarDecl
+varDeclWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+              Model.projectionFieldName = (Model.Name "pats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the pats field of hydra.scala.syntax.VarDecl
+varDeclWithPats :: Typed.TypedTerm Syntax.VarDecl -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.VarDecl
+varDeclWithPats original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDecl"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.VarDefn
+varDefn :: Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.VarDefn
+varDefn mods pats decltpe rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm mods)},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Typed.unTypedTerm pats)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm decltpe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the decltpe field of hydra.scala.syntax.VarDefn
+varDefnDecltpe :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm Syntax.Type
+varDefnDecltpe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+        Model.projectionFieldName = (Model.Name "decltpe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the mods field of hydra.scala.syntax.VarDefn
+varDefnMods :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm [Syntax.Mod]
+varDefnMods x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+        Model.projectionFieldName = (Model.Name "mods")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the pats field of hydra.scala.syntax.VarDefn
+varDefnPats :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm [Syntax.Pat]
+varDefnPats x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+        Model.projectionFieldName = (Model.Name "pats")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.VarDefn
+varDefnRhs :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm (Maybe Syntax.Data)
+varDefnRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the decltpe field of hydra.scala.syntax.VarDefn
+varDefnWithDecltpe :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.VarDefn
+varDefnWithDecltpe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "pats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the mods field of hydra.scala.syntax.VarDefn
+varDefnWithMods :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm [Syntax.Mod] -> Typed.TypedTerm Syntax.VarDefn
+varDefnWithMods original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "pats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the pats field of hydra.scala.syntax.VarDefn
+varDefnWithPats :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm [Syntax.Pat] -> Typed.TypedTerm Syntax.VarDefn
+varDefnWithPats original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.VarDefn
+varDefnWithRhs :: Typed.TypedTerm Syntax.VarDefn -> Typed.TypedTerm (Maybe Syntax.Data) -> Typed.TypedTerm Syntax.VarDefn
+varDefnWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "mods"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "mods")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "pats"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "pats")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "decltpe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarDefn"),
+              Model.projectionFieldName = (Model.Name "decltpe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.VarPat
+varPat :: Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.VarPat
+varPat name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.VarPat
+varPatName :: Typed.TypedTerm Syntax.VarPat -> Typed.TypedTerm Syntax.NameData
+varPatName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarPat"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.VarPat
+varPatWithName :: Typed.TypedTerm Syntax.VarPat -> Typed.TypedTerm Syntax.NameData -> Typed.TypedTerm Syntax.VarPat
+varPatWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarPat"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.VarType
+varType :: Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.VarType
+varType name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.scala.syntax.VarType
+varTypeName :: Typed.TypedTerm Syntax.VarType -> Typed.TypedTerm Syntax.NameType
+varTypeName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.VarType"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.scala.syntax.VarType
+varTypeWithName :: Typed.TypedTerm Syntax.VarType -> Typed.TypedTerm Syntax.NameType -> Typed.TypedTerm Syntax.VarType
+varTypeWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.VarType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.scala.syntax.WhileData
+whileData :: Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.WhileData
+whileData expr body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.WhileData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm expr)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.scala.syntax.WhileData
+whileDataBody :: Typed.TypedTerm Syntax.WhileData -> Typed.TypedTerm Syntax.Data
+whileDataBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.WhileData"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the expr field of hydra.scala.syntax.WhileData
+whileDataExpr :: Typed.TypedTerm Syntax.WhileData -> Typed.TypedTerm Syntax.Data
+whileDataExpr x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.WhileData"),
+        Model.projectionFieldName = (Model.Name "expr")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.scala.syntax.WhileData
+whileDataWithBody :: Typed.TypedTerm Syntax.WhileData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.WhileData
+whileDataWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.WhileData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.WhileData"),
+              Model.projectionFieldName = (Model.Name "expr")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the expr field of hydra.scala.syntax.WhileData
+whileDataWithExpr :: Typed.TypedTerm Syntax.WhileData -> Typed.TypedTerm Syntax.Data -> Typed.TypedTerm Syntax.WhileData
+whileDataWithExpr original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.WhileData"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expr"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.WhileData"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.scala.syntax.WithType
+withType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.WithType
+withType lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.WithType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the lhs field of hydra.scala.syntax.WithType
+withTypeLhs :: Typed.TypedTerm Syntax.WithType -> Typed.TypedTerm Syntax.Type
+withTypeLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.WithType"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.scala.syntax.WithType
+withTypeRhs :: Typed.TypedTerm Syntax.WithType -> Typed.TypedTerm Syntax.Type
+withTypeRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.scala.syntax.WithType"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.scala.syntax.WithType
+withTypeWithLhs :: Typed.TypedTerm Syntax.WithType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.WithType
+withTypeWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.WithType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.WithType"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.scala.syntax.WithType
+withTypeWithRhs :: Typed.TypedTerm Syntax.WithType -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.WithType
+withTypeWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.scala.syntax.WithType"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.scala.syntax.WithType"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
diff --git a/src/main/haskell/Hydra/Scala/Language.hs b/src/main/haskell/Hydra/Scala/Language.hs
--- a/src/main/haskell/Hydra/Scala/Language.hs
+++ b/src/main/haskell/Hydra/Scala/Language.hs
@@ -4,37 +4,37 @@
 
 module Hydra.Scala.Language where
 
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Docs as Docs
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.File as ErrorFile
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Error.System as ErrorSystem
-import qualified Hydra.Errors as Errors
-import qualified Hydra.File as File
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Json.Model as Model
-import qualified Hydra.Lexical as Lexical
-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists
-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets
-import qualified Hydra.Packaging as Packaging
-import qualified Hydra.Parsing as Parsing
-import qualified Hydra.Paths as Paths
-import qualified Hydra.Query as Query
-import qualified Hydra.Relational as Relational
-import qualified Hydra.System as System
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-import qualified Hydra.Time as Time
-import qualified Hydra.Topology as Topology
-import qualified Hydra.Typed as Typed
-import qualified Hydra.Typing as Typing
-import qualified Hydra.Util as Util
-import qualified Hydra.Validation as Validation
-import qualified Hydra.Variants as Variants
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Docs as Docs
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.File as ErrorFile
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Error.System as ErrorSystem
+import qualified Hydra.Core.Errors as Errors
+import qualified Hydra.Core.File as File
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Json.Model as JsonModel
+import qualified Hydra.Core.Lexical as Lexical
+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists
+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Packaging as Packaging
+import qualified Hydra.Core.Parsing as Parsing
+import qualified Hydra.Core.Paths as Paths
+import qualified Hydra.Core.Query as Query
+import qualified Hydra.Core.Relational as Relational
+import qualified Hydra.Core.System as System
+import qualified Hydra.Core.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+import qualified Hydra.Core.Time as Time
+import qualified Hydra.Core.Topology as Topology
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Core.Typing as Typing
+import qualified Hydra.Core.Util as Util
+import qualified Hydra.Core.Validation as Validation
+import qualified Hydra.Core.Variants as Variants
 import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
 import qualified Data.Scientific as Sci
 import Data.Void
@@ -77,19 +77,19 @@
           Variants.LiteralVariantString]
     floatTypes =
         Sets.fromList [
-          Core.FloatTypeFloat32,
-          Core.FloatTypeFloat64]
+          Model.FloatTypeFloat32,
+          Model.FloatTypeFloat64]
     integerTypes =
         Sets.fromList [
-          Core.IntegerTypeBigint,
-          Core.IntegerTypeInt8,
-          Core.IntegerTypeInt16,
-          Core.IntegerTypeInt32,
-          Core.IntegerTypeInt64,
-          Core.IntegerTypeUint8,
-          Core.IntegerTypeUint16,
-          Core.IntegerTypeUint32,
-          Core.IntegerTypeUint64]
+          Model.IntegerTypeBigint,
+          Model.IntegerTypeInt8,
+          Model.IntegerTypeInt16,
+          Model.IntegerTypeInt32,
+          Model.IntegerTypeInt64,
+          Model.IntegerTypeUint8,
+          Model.IntegerTypeUint16,
+          Model.IntegerTypeUint32,
+          Model.IntegerTypeUint64]
     termVariants =
         Sets.fromList [
           Variants.TermVariantApplication,
diff --git a/src/main/haskell/Hydra/Scala/Serde.hs b/src/main/haskell/Hydra/Scala/Serde.hs
--- a/src/main/haskell/Hydra/Scala/Serde.hs
+++ b/src/main/haskell/Hydra/Scala/Serde.hs
@@ -4,45 +4,45 @@
 
 module Hydra.Scala.Serde where
 
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Docs as Docs
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.File as ErrorFile
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Error.System as ErrorSystem
-import qualified Hydra.Errors as Errors
-import qualified Hydra.File as File
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Json.Model as Model
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Docs as Docs
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.File as ErrorFile
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Error.System as ErrorSystem
+import qualified Hydra.Core.Errors as Errors
+import qualified Hydra.Core.File as File
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Json.Model as JsonModel
+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality
+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists
+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic
+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math
+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering
+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Packaging as Packaging
+import qualified Hydra.Core.Parsing as Parsing
+import qualified Hydra.Core.Paths as Paths
+import qualified Hydra.Core.Query as Query
+import qualified Hydra.Core.Relational as Relational
+import qualified Hydra.Core.Serialization as Serialization
+import qualified Hydra.Core.System as System
+import qualified Hydra.Core.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+import qualified Hydra.Core.Time as Time
+import qualified Hydra.Core.Topology as Topology
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Core.Typing as Typing
+import qualified Hydra.Core.Util as Util
+import qualified Hydra.Core.Validation as Validation
+import qualified Hydra.Core.Variants as Variants
 import qualified Hydra.Jvm.Serde as Serde
-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality
-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists
-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals
-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic
-import qualified Hydra.Overlay.Haskell.Lib.Math as Math
-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals
-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering
-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings
-import qualified Hydra.Packaging as Packaging
-import qualified Hydra.Parsing as Parsing
-import qualified Hydra.Paths as Paths
-import qualified Hydra.Query as Query
-import qualified Hydra.Relational as Relational
 import qualified Hydra.Scala.Syntax as Syntax
-import qualified Hydra.Serialization as Serialization
-import qualified Hydra.System as System
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-import qualified Hydra.Time as Time
-import qualified Hydra.Topology as Topology
-import qualified Hydra.Typed as Typed
-import qualified Hydra.Typing as Typing
-import qualified Hydra.Util as Util
-import qualified Hydra.Validation as Validation
-import qualified Hydra.Variants as Variants
 import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
 import qualified Data.Scientific as Sci
 import Data.Void
@@ -218,12 +218,15 @@
           enumCases]))
       Syntax.DefnEnumCase v0 ->
         let name = Syntax.enumCaseDefnName v0
+            tparams = Syntax.enumCaseDefnTparams v0
             ctor = Syntax.enumCaseDefnCtor v0
             inits = Syntax.enumCaseDefnInits v0
             paramss = Syntax.primaryCtorParamss ctor
             allParams = Lists.concat paramss
+            tparamsExpr =
+                    Logic.ifElse (Lists.isEmpty tparams) (Serialization.cst "") (Serialization.bracketList Serialization.inlineStyle (Lists.map typeParamToExpr tparams))
             params =
-                    Logic.ifElse (Lists.isEmpty allParams) (Serialization.cst "") (Serialization.parenListAdaptive (Lists.map dataParamToExpr allParams))
+                    Logic.ifElse (Lists.isEmpty paramss) (Serialization.cst "") (Serialization.parenListAdaptive (Lists.map dataParamToExpr allParams))
             extendsClause =
                     Logic.ifElse (Lists.isEmpty inits) (Serialization.cst "") (Serialization.spaceSep [
                       Serialization.cst "extends",
@@ -232,6 +235,7 @@
           Serialization.cst "case",
           (Serialization.noSep [
             dataNameToExpr name,
+            tparamsExpr,
             params]),
           extendsClause])
 
@@ -343,9 +347,9 @@
       Syntax.PatExtract v0 ->
         let fun = Syntax.extractPatFun v0
             args = Syntax.extractPatArgs v0
-        in (Logic.ifElse (Lists.isEmpty args) (termToExpr fun) (Serialization.noSep [
+        in (Logic.ifElse (Syntax.extractPatIsCall v0) (Serialization.noSep [
           termToExpr fun,
-          (Serialization.parenListAdaptive (Lists.map patToExpr args))]))
+          (Serialization.parenListAdaptive (Lists.map patToExpr args))]) (termToExpr fun))
       Syntax.PatVar v0 -> dataNameToExpr (Syntax.varPatName v0)
       Syntax.PatWildcard -> Serialization.cst "_"
 
diff --git a/src/main/haskell/Hydra/Scala/Syntax.hs b/src/main/haskell/Hydra/Scala/Syntax.hs
--- a/src/main/haskell/Hydra/Scala/Syntax.hs
+++ b/src/main/haskell/Hydra/Scala/Syntax.hs
@@ -4,2126 +4,2129 @@
 
 module Hydra.Scala.Syntax where
 
-import qualified Hydra.Core as Core
-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
-import qualified Data.Scientific as Sci
-import Data.Void
-import qualified Data.Int as I
-
--- | A wrapper for strings used in scala.Predef contexts.
-newtype PredefString =
-  PredefString {
-    unPredefString :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_PredefString = Core.Name "hydra.scala.syntax.PredefString"
-
--- | A Scala 2 symbol literal (corresponds to scala.Symbol).
-data ScalaSymbol =
-  ScalaSymbol {
-    scalaSymbolName :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_ScalaSymbol = Core.Name "hydra.scala.syntax.ScalaSymbol"
-
-_ScalaSymbol_name = Core.Name "name"
-
--- | The root of the Scalameta tree hierarchy. Each arm names a major AST category.
-data Tree =
-  TreeRef Ref |
-  TreeStat Stat |
-  TreeType Type |
-  TreeBounds TypeBounds |
-  TreePat Pat |
-  TreeMember Member |
-  TreeCtor Ctor |
-  TreeTemplate Template |
-  TreeMod Mod |
-  TreeEnumerator Enumerator |
-  TreeImporter Importer |
-  TreeImportee Importee |
-  TreeCaseTree CaseTree |
-  TreeSource Source
-  deriving (Eq, Ord, Read, Show)
-
-_Tree = Core.Name "hydra.scala.syntax.Tree"
-
-_Tree_ref = Core.Name "ref"
-
-_Tree_stat = Core.Name "stat"
-
-_Tree_type = Core.Name "type"
-
-_Tree_bounds = Core.Name "bounds"
-
-_Tree_pat = Core.Name "pat"
-
-_Tree_member = Core.Name "member"
-
-_Tree_ctor = Core.Name "ctor"
-
-_Tree_template = Core.Name "template"
-
-_Tree_mod = Core.Name "mod"
-
-_Tree_enumerator = Core.Name "enumerator"
-
-_Tree_importer = Core.Name "importer"
-
-_Tree_importee = Core.Name "importee"
-
-_Tree_caseTree = Core.Name "caseTree"
-
-_Tree_source = Core.Name "source"
-
-data Ref =
-  RefName Name |
-  RefInit Init
-  deriving (Eq, Ord, Read, Show)
-
-_Ref = Core.Name "hydra.scala.syntax.Ref"
-
-_Ref_name = Core.Name "name"
-
-_Ref_init = Core.Name "init"
-
-data Stat =
-  StatTerm Data |
-  StatDecl Decl |
-  StatDefn Defn |
-  StatImportExport ImportExportStat
-  deriving (Eq, Ord, Read, Show)
-
-_Stat = Core.Name "hydra.scala.syntax.Stat"
-
-_Stat_term = Core.Name "term"
-
-_Stat_decl = Core.Name "decl"
-
-_Stat_defn = Core.Name "defn"
-
-_Stat_importExport = Core.Name "importExport"
-
-data Name =
-  NameValue String |
-  NameAnonymous |
-  NameIndeterminate PredefString
-  deriving (Eq, Ord, Read, Show)
-
-_Name = Core.Name "hydra.scala.syntax.Name"
-
-_Name_value = Core.Name "value"
-
-_Name_anonymous = Core.Name "anonymous"
-
-_Name_indeterminate = Core.Name "indeterminate"
-
-data Lit =
-  LitNull |
-  LitInt Int |
-  LitDouble Double |
-  LitFloat Float |
-  LitByte I.Int8 |
-  LitShort I.Int16 |
-  LitChar Int |
-  LitLong I.Int64 |
-  LitBoolean Bool |
-  LitUnit |
-  LitString String |
-  LitBytes [Int] |
-  LitSymbol ScalaSymbol
-  deriving (Eq, Ord, Read, Show)
-
-_Lit = Core.Name "hydra.scala.syntax.Lit"
-
-_Lit_null = Core.Name "null"
-
-_Lit_int = Core.Name "int"
-
-_Lit_double = Core.Name "double"
-
-_Lit_float = Core.Name "float"
-
-_Lit_byte = Core.Name "byte"
-
-_Lit_short = Core.Name "short"
-
-_Lit_char = Core.Name "char"
-
-_Lit_long = Core.Name "long"
-
-_Lit_boolean = Core.Name "boolean"
-
-_Lit_unit = Core.Name "unit"
-
-_Lit_string = Core.Name "string"
-
-_Lit_bytes = Core.Name "bytes"
-
-_Lit_symbol = Core.Name "symbol"
-
-data Data =
-  DataLit Lit |
-  DataRef RefData |
-  DataInterpolate InterpolateData |
-  DataApply ApplyData |
-  DataApplyUsing ApplyUsingData |
-  DataApplyType ApplyTypeData |
-  DataAssign AssignData |
-  DataReturn ReturnData |
-  DataThrow ThrowData |
-  DataAscribe AscribeData |
-  DataAnnotate AnnotateData |
-  DataTuple TupleData |
-  DataBlock BlockData |
-  DataEndMarker EndMarkerData |
-  DataIf IfData |
-  DataMatch MatchData |
-  DataTry TryData |
-  DataTryWithHandler TryWithHandlerData |
-  DataFunction FunctionData |
-  DataContextFunction ContextFunctionData |
-  DataPolyFunction PolyFunctionData |
-  DataPartialFunction PartialFunctionData |
-  DataWhile WhileData |
-  DataDo DoData |
-  DataFor ForData |
-  DataForYield ForYieldData |
-  DataNew NewData |
-  DataNewAnonymous NewAnonymousData |
-  DataPlaceholder |
-  DataEta EtaData |
-  DataRepeated RepeatedData |
-  DataParam ParamData
-  deriving (Eq, Ord, Read, Show)
-
-_Data = Core.Name "hydra.scala.syntax.Data"
-
-_Data_lit = Core.Name "lit"
-
-_Data_ref = Core.Name "ref"
-
-_Data_interpolate = Core.Name "interpolate"
-
-_Data_apply = Core.Name "apply"
-
-_Data_applyUsing = Core.Name "applyUsing"
-
-_Data_applyType = Core.Name "applyType"
-
-_Data_assign = Core.Name "assign"
-
-_Data_return = Core.Name "return"
-
-_Data_throw = Core.Name "throw"
-
-_Data_ascribe = Core.Name "ascribe"
-
-_Data_annotate = Core.Name "annotate"
-
-_Data_tuple = Core.Name "tuple"
-
-_Data_block = Core.Name "block"
-
-_Data_endMarker = Core.Name "endMarker"
-
-_Data_if = Core.Name "if"
-
-_Data_match = Core.Name "match"
-
-_Data_try = Core.Name "try"
-
-_Data_tryWithHandler = Core.Name "tryWithHandler"
-
-_Data_function = Core.Name "function"
-
-_Data_contextFunction = Core.Name "contextFunction"
-
-_Data_polyFunction = Core.Name "polyFunction"
-
-_Data_partialFunction = Core.Name "partialFunction"
-
-_Data_while = Core.Name "while"
-
-_Data_do = Core.Name "do"
-
-_Data_for = Core.Name "for"
-
-_Data_forYield = Core.Name "forYield"
-
-_Data_new = Core.Name "new"
-
-_Data_newAnonymous = Core.Name "newAnonymous"
-
-_Data_placeholder = Core.Name "placeholder"
-
-_Data_eta = Core.Name "eta"
-
-_Data_repeated = Core.Name "repeated"
-
-_Data_param = Core.Name "param"
-
-data RefData =
-  RefDataThis ThisData |
-  RefDataSuper SuperData |
-  RefDataName NameData |
-  RefDataAnonymous AnonymousData |
-  RefDataSelect SelectData |
-  RefDataApplyUnary ApplyUnaryData
-  deriving (Eq, Ord, Read, Show)
-
-_RefData = Core.Name "hydra.scala.syntax.RefData"
-
-_RefData_this = Core.Name "this"
-
-_RefData_super = Core.Name "super"
-
-_RefData_name = Core.Name "name"
-
-_RefData_anonymous = Core.Name "anonymous"
-
-_RefData_select = Core.Name "select"
-
-_RefData_applyUnary = Core.Name "applyUnary"
-
-newtype ThisData =
-  ThisData {
-    unThisData :: ()}
-  deriving (Eq, Ord, Read, Show)
-
-_ThisData = Core.Name "hydra.scala.syntax.ThisData"
-
-data SuperData =
-  SuperData {
-    superDataThisp :: Name,
-    superDataSuperp :: Name}
-  deriving (Eq, Ord, Read, Show)
-
-_SuperData = Core.Name "hydra.scala.syntax.SuperData"
-
-_SuperData_thisp = Core.Name "thisp"
-
-_SuperData_superp = Core.Name "superp"
-
-data NameData =
-  NameData {
-    nameDataValue :: PredefString}
-  deriving (Eq, Ord, Read, Show)
-
-_NameData = Core.Name "hydra.scala.syntax.NameData"
-
-_NameData_value = Core.Name "value"
-
-newtype AnonymousData =
-  AnonymousData {
-    unAnonymousData :: ()}
-  deriving (Eq, Ord, Read, Show)
-
-_AnonymousData = Core.Name "hydra.scala.syntax.AnonymousData"
-
-data SelectData =
-  SelectData {
-    selectDataQual :: Data,
-    selectDataName :: NameData}
-  deriving (Eq, Ord, Read, Show)
-
-_SelectData = Core.Name "hydra.scala.syntax.SelectData"
-
-_SelectData_qual = Core.Name "qual"
-
-_SelectData_name = Core.Name "name"
-
-data InterpolateData =
-  InterpolateData {
-    interpolateDataPrefix :: NameData,
-    interpolateDataParts :: [Lit],
-    interpolateDataArgs :: [Data]}
-  deriving (Eq, Ord, Read, Show)
-
-_InterpolateData = Core.Name "hydra.scala.syntax.InterpolateData"
-
-_InterpolateData_prefix = Core.Name "prefix"
-
-_InterpolateData_parts = Core.Name "parts"
-
-_InterpolateData_args = Core.Name "args"
-
-data ApplyData =
-  ApplyData {
-    applyDataFun :: Data,
-    applyDataArgs :: [Data]}
-  deriving (Eq, Ord, Read, Show)
-
-_ApplyData = Core.Name "hydra.scala.syntax.ApplyData"
-
-_ApplyData_fun = Core.Name "fun"
-
-_ApplyData_args = Core.Name "args"
-
-data ApplyUsingData =
-  ApplyUsingData {
-    applyUsingDataFun :: Data,
-    applyUsingDataTargs :: [Data]}
-  deriving (Eq, Ord, Read, Show)
-
-_ApplyUsingData = Core.Name "hydra.scala.syntax.ApplyUsingData"
-
-_ApplyUsingData_fun = Core.Name "fun"
-
-_ApplyUsingData_targs = Core.Name "targs"
-
-data ApplyTypeData =
-  ApplyTypeData {
-    applyTypeDataLhs :: Data,
-    applyTypeDataOp :: NameData,
-    applyTypeDataTargs :: [Type],
-    applyTypeDataArgs :: [Data]}
-  deriving (Eq, Ord, Read, Show)
-
-_ApplyTypeData = Core.Name "hydra.scala.syntax.ApplyTypeData"
-
-_ApplyTypeData_lhs = Core.Name "lhs"
-
-_ApplyTypeData_op = Core.Name "op"
-
-_ApplyTypeData_targs = Core.Name "targs"
-
-_ApplyTypeData_args = Core.Name "args"
-
-data ApplyInfixData =
-  ApplyInfixData {
-    applyInfixDataLhs :: Data,
-    applyInfixDataOp :: NameData,
-    applyInfixDataTargs :: [Type],
-    applyInfixDataArgs :: [Data]}
-  deriving (Eq, Ord, Read, Show)
-
-_ApplyInfixData = Core.Name "hydra.scala.syntax.ApplyInfixData"
-
-_ApplyInfixData_lhs = Core.Name "lhs"
-
-_ApplyInfixData_op = Core.Name "op"
-
-_ApplyInfixData_targs = Core.Name "targs"
-
-_ApplyInfixData_args = Core.Name "args"
-
-data ApplyUnaryData =
-  ApplyUnaryData {
-    applyUnaryDataOp :: NameData,
-    applyUnaryDataArg :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_ApplyUnaryData = Core.Name "hydra.scala.syntax.ApplyUnaryData"
-
-_ApplyUnaryData_op = Core.Name "op"
-
-_ApplyUnaryData_arg = Core.Name "arg"
-
-data AssignData =
-  AssignData {
-    assignDataLhs :: Data,
-    assignDataRhs :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_AssignData = Core.Name "hydra.scala.syntax.AssignData"
-
-_AssignData_lhs = Core.Name "lhs"
-
-_AssignData_rhs = Core.Name "rhs"
-
-data ReturnData =
-  ReturnData {
-    returnDataExpr :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_ReturnData = Core.Name "hydra.scala.syntax.ReturnData"
-
-_ReturnData_expr = Core.Name "expr"
-
-data ThrowData =
-  ThrowData {
-    throwDataExpr :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_ThrowData = Core.Name "hydra.scala.syntax.ThrowData"
-
-_ThrowData_expr = Core.Name "expr"
-
-data AscribeData =
-  AscribeData {
-    ascribeDataExpr :: Data,
-    ascribeDataTpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_AscribeData = Core.Name "hydra.scala.syntax.AscribeData"
-
-_AscribeData_expr = Core.Name "expr"
-
-_AscribeData_tpe = Core.Name "tpe"
-
-data AnnotateData =
-  AnnotateData {
-    annotateDataExpr :: Data,
-    annotateDataAnnots :: [AnnotMod]}
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotateData = Core.Name "hydra.scala.syntax.AnnotateData"
-
-_AnnotateData_expr = Core.Name "expr"
-
-_AnnotateData_annots = Core.Name "annots"
-
-data TupleData =
-  TupleData {
-    tupleDataArgs :: [Data]}
-  deriving (Eq, Ord, Read, Show)
-
-_TupleData = Core.Name "hydra.scala.syntax.TupleData"
-
-_TupleData_args = Core.Name "args"
-
-data BlockData =
-  BlockData {
-    blockDataStats :: [Stat]}
-  deriving (Eq, Ord, Read, Show)
-
-_BlockData = Core.Name "hydra.scala.syntax.BlockData"
-
-_BlockData_stats = Core.Name "stats"
-
-data EndMarkerData =
-  EndMarkerData {
-    endMarkerDataName :: NameData}
-  deriving (Eq, Ord, Read, Show)
-
-_EndMarkerData = Core.Name "hydra.scala.syntax.EndMarkerData"
-
-_EndMarkerData_name = Core.Name "name"
-
-data IfData =
-  IfData {
-    ifDataCond :: Data,
-    ifDataThenp :: Data,
-    ifDataElsep :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_IfData = Core.Name "hydra.scala.syntax.IfData"
-
-_IfData_cond = Core.Name "cond"
-
-_IfData_thenp = Core.Name "thenp"
-
-_IfData_elsep = Core.Name "elsep"
-
-data MatchData =
-  MatchData {
-    matchDataExpr :: Data,
-    matchDataCases :: [Case]}
-  deriving (Eq, Ord, Read, Show)
-
-_MatchData = Core.Name "hydra.scala.syntax.MatchData"
-
-_MatchData_expr = Core.Name "expr"
-
-_MatchData_cases = Core.Name "cases"
-
-data TryData =
-  TryData {
-    tryDataExpr :: Data,
-    tryDataCatchp :: [Case],
-    tryDataFinallyp :: (Maybe Data)}
-  deriving (Eq, Ord, Read, Show)
-
-_TryData = Core.Name "hydra.scala.syntax.TryData"
-
-_TryData_expr = Core.Name "expr"
-
-_TryData_catchp = Core.Name "catchp"
-
-_TryData_finallyp = Core.Name "finallyp"
-
-data TryWithHandlerData =
-  TryWithHandlerData {
-    tryWithHandlerDataExpr :: Data,
-    tryWithHandlerDataCatchp :: Data,
-    tryWithHandlerDataFinallyp :: (Maybe Data)}
-  deriving (Eq, Ord, Read, Show)
-
-_TryWithHandlerData = Core.Name "hydra.scala.syntax.TryWithHandlerData"
-
-_TryWithHandlerData_expr = Core.Name "expr"
-
-_TryWithHandlerData_catchp = Core.Name "catchp"
-
-_TryWithHandlerData_finallyp = Core.Name "finallyp"
-
-data ContextFunctionData =
-  ContextFunctionData {
-    contextFunctionDataParams :: [ParamData],
-    contextFunctionDataBody :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_ContextFunctionData = Core.Name "hydra.scala.syntax.ContextFunctionData"
-
-_ContextFunctionData_params = Core.Name "params"
-
-_ContextFunctionData_body = Core.Name "body"
-
-data FunctionData =
-  FunctionData {
-    functionDataParams :: [ParamData],
-    functionDataBody :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_FunctionData = Core.Name "hydra.scala.syntax.FunctionData"
-
-_FunctionData_params = Core.Name "params"
-
-_FunctionData_body = Core.Name "body"
-
-data PolyFunctionData =
-  PolyFunctionData {
-    polyFunctionDataTparams :: [ParamType],
-    polyFunctionDataBody :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_PolyFunctionData = Core.Name "hydra.scala.syntax.PolyFunctionData"
-
-_PolyFunctionData_tparams = Core.Name "tparams"
-
-_PolyFunctionData_body = Core.Name "body"
-
-data PartialFunctionData =
-  PartialFunctionData {
-    partialFunctionDataCases :: [Case]}
-  deriving (Eq, Ord, Read, Show)
-
-_PartialFunctionData = Core.Name "hydra.scala.syntax.PartialFunctionData"
-
-_PartialFunctionData_cases = Core.Name "cases"
-
-data WhileData =
-  WhileData {
-    whileDataExpr :: Data,
-    whileDataBody :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_WhileData = Core.Name "hydra.scala.syntax.WhileData"
-
-_WhileData_expr = Core.Name "expr"
-
-_WhileData_body = Core.Name "body"
-
-data DoData =
-  DoData {
-    doDataBody :: Data,
-    doDataExpr :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_DoData = Core.Name "hydra.scala.syntax.DoData"
-
-_DoData_body = Core.Name "body"
-
-_DoData_expr = Core.Name "expr"
-
-data ForData =
-  ForData {
-    forDataEnums :: [Enumerator]}
-  deriving (Eq, Ord, Read, Show)
-
-_ForData = Core.Name "hydra.scala.syntax.ForData"
-
-_ForData_enums = Core.Name "enums"
-
-data ForYieldData =
-  ForYieldData {
-    forYieldDataEnums :: [Enumerator]}
-  deriving (Eq, Ord, Read, Show)
-
-_ForYieldData = Core.Name "hydra.scala.syntax.ForYieldData"
-
-_ForYieldData_enums = Core.Name "enums"
-
-data NewData =
-  NewData {
-    newDataInit :: Init}
-  deriving (Eq, Ord, Read, Show)
-
-_NewData = Core.Name "hydra.scala.syntax.NewData"
-
-_NewData_init = Core.Name "init"
-
-data NewAnonymousData =
-  NewAnonymousData {
-    newAnonymousDataTempl :: Template}
-  deriving (Eq, Ord, Read, Show)
-
-_NewAnonymousData = Core.Name "hydra.scala.syntax.NewAnonymousData"
-
-_NewAnonymousData_templ = Core.Name "templ"
-
-data EtaData =
-  EtaData {
-    etaDataExpr :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_EtaData = Core.Name "hydra.scala.syntax.EtaData"
-
-_EtaData_expr = Core.Name "expr"
-
-data RepeatedData =
-  RepeatedData {
-    repeatedDataExpr :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_RepeatedData = Core.Name "hydra.scala.syntax.RepeatedData"
-
-_RepeatedData_expr = Core.Name "expr"
-
-data ParamData =
-  ParamData {
-    paramDataMods :: [Mod],
-    paramDataName :: Name,
-    paramDataDecltpe :: (Maybe Type),
-    paramDataDefault :: (Maybe Data)}
-  deriving (Eq, Ord, Read, Show)
-
-_ParamData = Core.Name "hydra.scala.syntax.ParamData"
-
-_ParamData_mods = Core.Name "mods"
-
-_ParamData_name = Core.Name "name"
-
-_ParamData_decltpe = Core.Name "decltpe"
-
-_ParamData_default = Core.Name "default"
-
-data Type =
-  TypeRef RefType |
-  TypeAnonymousName AnonymousNameType |
-  TypeApply ApplyType |
-  TypeApplyInfix ApplyInfixType |
-  TypeFunction FunctionType |
-  TypeContextFunction ContextFunctionType |
-  TypePolyFunction PolyFunctionType |
-  TypeImplicitFunction ImplicitFunctionType |
-  TypeTuple TupleType |
-  TypeWith WithType |
-  TypeAnd AndType |
-  TypeOr OrType |
-  TypeRefine RefineType |
-  TypeExistential ExistentialType |
-  TypeAnnotate AnnotateType |
-  TypeLambda LambdaType |
-  TypeMethod MethodType |
-  TypePlaceholder PlaceholderType |
-  TypeByName ByNameType |
-  TypeRepeated RepeatedType |
-  TypeVar VarType |
-  TypeTypedParam TypedParamType |
-  TypeMatch MatchType
-  deriving (Eq, Ord, Read, Show)
-
-_Type = Core.Name "hydra.scala.syntax.Type"
-
-_Type_ref = Core.Name "ref"
-
-_Type_anonymousName = Core.Name "anonymousName"
-
-_Type_apply = Core.Name "apply"
-
-_Type_applyInfix = Core.Name "applyInfix"
-
-_Type_function = Core.Name "function"
-
-_Type_contextFunction = Core.Name "contextFunction"
-
-_Type_polyFunction = Core.Name "polyFunction"
-
-_Type_implicitFunction = Core.Name "implicitFunction"
-
-_Type_tuple = Core.Name "tuple"
-
-_Type_with = Core.Name "with"
-
-_Type_and = Core.Name "and"
-
-_Type_or = Core.Name "or"
-
-_Type_refine = Core.Name "refine"
-
-_Type_existential = Core.Name "existential"
-
-_Type_annotate = Core.Name "annotate"
-
-_Type_lambda = Core.Name "lambda"
-
-_Type_method = Core.Name "method"
-
-_Type_placeholder = Core.Name "placeholder"
-
-_Type_byName = Core.Name "byName"
-
-_Type_repeated = Core.Name "repeated"
-
-_Type_var = Core.Name "var"
-
-_Type_typedParam = Core.Name "typedParam"
-
-_Type_match = Core.Name "match"
-
-data RefType =
-  RefTypeName NameType |
-  RefTypeSelect SelectType |
-  RefTypeProject ProjectType |
-  RefTypeSingleton SingletonType
-  deriving (Eq, Ord, Read, Show)
-
-_RefType = Core.Name "hydra.scala.syntax.RefType"
-
-_RefType_name = Core.Name "name"
-
-_RefType_select = Core.Name "select"
-
-_RefType_project = Core.Name "project"
-
-_RefType_singleton = Core.Name "singleton"
-
-data NameType =
-  NameType {
-    nameTypeValue :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_NameType = Core.Name "hydra.scala.syntax.NameType"
-
-_NameType_value = Core.Name "value"
-
-newtype AnonymousNameType =
-  AnonymousNameType {
-    unAnonymousNameType :: ()}
-  deriving (Eq, Ord, Read, Show)
-
-_AnonymousNameType = Core.Name "hydra.scala.syntax.AnonymousNameType"
-
-data SelectType =
-  SelectType {
-    selectTypeQual :: RefData,
-    selectTypeName :: NameType}
-  deriving (Eq, Ord, Read, Show)
-
-_SelectType = Core.Name "hydra.scala.syntax.SelectType"
-
-_SelectType_qual = Core.Name "qual"
-
-_SelectType_name = Core.Name "name"
-
-data ProjectType =
-  ProjectType {
-    projectTypeQual :: Type,
-    projectTypeName :: NameType}
-  deriving (Eq, Ord, Read, Show)
-
-_ProjectType = Core.Name "hydra.scala.syntax.ProjectType"
-
-_ProjectType_qual = Core.Name "qual"
-
-_ProjectType_name = Core.Name "name"
-
-data SingletonType =
-  SingletonType {
-    singletonTypeRef :: RefData}
-  deriving (Eq, Ord, Read, Show)
-
-_SingletonType = Core.Name "hydra.scala.syntax.SingletonType"
-
-_SingletonType_ref = Core.Name "ref"
-
-data ApplyType =
-  ApplyType {
-    applyTypeTpe :: Type,
-    applyTypeArgs :: [Type]}
-  deriving (Eq, Ord, Read, Show)
-
-_ApplyType = Core.Name "hydra.scala.syntax.ApplyType"
-
-_ApplyType_tpe = Core.Name "tpe"
-
-_ApplyType_args = Core.Name "args"
-
-data ApplyInfixType =
-  ApplyInfixType {
-    applyInfixTypeLhs :: Type,
-    applyInfixTypeOp :: NameType,
-    applyInfixTypeRhs :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_ApplyInfixType = Core.Name "hydra.scala.syntax.ApplyInfixType"
-
-_ApplyInfixType_lhs = Core.Name "lhs"
-
-_ApplyInfixType_op = Core.Name "op"
-
-_ApplyInfixType_rhs = Core.Name "rhs"
-
-data FunctionType =
-  FunctionType {
-    functionTypeParams :: [Type],
-    functionTypeRes :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_FunctionType = Core.Name "hydra.scala.syntax.FunctionType"
-
-_FunctionType_params = Core.Name "params"
-
-_FunctionType_res = Core.Name "res"
-
-data PolyFunctionType =
-  PolyFunctionType {
-    polyFunctionTypeTparams :: [ParamType],
-    polyFunctionTypeTpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_PolyFunctionType = Core.Name "hydra.scala.syntax.PolyFunctionType"
-
-_PolyFunctionType_tparams = Core.Name "tparams"
-
-_PolyFunctionType_tpe = Core.Name "tpe"
-
-data ContextFunctionType =
-  ContextFunctionType {
-    contextFunctionTypeParams :: [Type],
-    contextFunctionTypeRes :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_ContextFunctionType = Core.Name "hydra.scala.syntax.ContextFunctionType"
-
-_ContextFunctionType_params = Core.Name "params"
-
-_ContextFunctionType_res = Core.Name "res"
-
-data ImplicitFunctionType =
-  ImplicitFunctionType {
-    implicitFunctionTypeParams :: [Type],
-    implicitFunctionTypeRes :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_ImplicitFunctionType = Core.Name "hydra.scala.syntax.ImplicitFunctionType"
-
-_ImplicitFunctionType_params = Core.Name "params"
-
-_ImplicitFunctionType_res = Core.Name "res"
-
-data TupleType =
-  TupleType {
-    tupleTypeArgs :: [Type]}
-  deriving (Eq, Ord, Read, Show)
-
-_TupleType = Core.Name "hydra.scala.syntax.TupleType"
-
-_TupleType_args = Core.Name "args"
-
-data WithType =
-  WithType {
-    withTypeLhs :: Type,
-    withTypeRhs :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_WithType = Core.Name "hydra.scala.syntax.WithType"
-
-_WithType_lhs = Core.Name "lhs"
-
-_WithType_rhs = Core.Name "rhs"
-
-data AndType =
-  AndType {
-    andTypeLhs :: Type,
-    andTypeRhs :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_AndType = Core.Name "hydra.scala.syntax.AndType"
-
-_AndType_lhs = Core.Name "lhs"
-
-_AndType_rhs = Core.Name "rhs"
-
-data OrType =
-  OrType {
-    orTypeLhs :: Type,
-    orTypeRhs :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_OrType = Core.Name "hydra.scala.syntax.OrType"
-
-_OrType_lhs = Core.Name "lhs"
-
-_OrType_rhs = Core.Name "rhs"
-
-data RefineType =
-  RefineType {
-    refineTypeTpe :: (Maybe Type),
-    refineTypeStats :: [Stat]}
-  deriving (Eq, Ord, Read, Show)
-
-_RefineType = Core.Name "hydra.scala.syntax.RefineType"
-
-_RefineType_tpe = Core.Name "tpe"
-
-_RefineType_stats = Core.Name "stats"
-
-data ExistentialType =
-  ExistentialType {
-    existentialTypeTpe :: Type,
-    existentialTypeStats :: [Stat]}
-  deriving (Eq, Ord, Read, Show)
-
-_ExistentialType = Core.Name "hydra.scala.syntax.ExistentialType"
-
-_ExistentialType_tpe = Core.Name "tpe"
-
-_ExistentialType_stats = Core.Name "stats"
-
-data AnnotateType =
-  AnnotateType {
-    annotateTypeTpe :: Type,
-    annotateTypeAnnots :: [AnnotMod]}
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotateType = Core.Name "hydra.scala.syntax.AnnotateType"
-
-_AnnotateType_tpe = Core.Name "tpe"
-
-_AnnotateType_annots = Core.Name "annots"
-
-data LambdaType =
-  LambdaType {
-    lambdaTypeTparams :: [ParamType],
-    lambdaTypeTpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_LambdaType = Core.Name "hydra.scala.syntax.LambdaType"
-
-_LambdaType_tparams = Core.Name "tparams"
-
-_LambdaType_tpe = Core.Name "tpe"
-
-data MethodType =
-  MethodType {
-    methodTypeParamss :: [[ParamData]],
-    methodTypeTpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_MethodType = Core.Name "hydra.scala.syntax.MethodType"
-
-_MethodType_paramss = Core.Name "paramss"
-
-_MethodType_tpe = Core.Name "tpe"
-
-data PlaceholderType =
-  PlaceholderType {
-    placeholderTypeBounds :: TypeBounds}
-  deriving (Eq, Ord, Read, Show)
-
-_PlaceholderType = Core.Name "hydra.scala.syntax.PlaceholderType"
-
-_PlaceholderType_bounds = Core.Name "bounds"
-
-data TypeBounds =
-  TypeBounds {
-    typeBoundsLo :: (Maybe Type),
-    typeBoundsHi :: (Maybe Type)}
-  deriving (Eq, Ord, Read, Show)
-
-_TypeBounds = Core.Name "hydra.scala.syntax.TypeBounds"
-
-_TypeBounds_lo = Core.Name "lo"
-
-_TypeBounds_hi = Core.Name "hi"
-
-data ByNameType =
-  ByNameType {
-    byNameTypeTpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_ByNameType = Core.Name "hydra.scala.syntax.ByNameType"
-
-_ByNameType_tpe = Core.Name "tpe"
-
-data RepeatedType =
-  RepeatedType {
-    repeatedTypeTpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_RepeatedType = Core.Name "hydra.scala.syntax.RepeatedType"
-
-_RepeatedType_tpe = Core.Name "tpe"
-
-data VarType =
-  VarType {
-    varTypeName :: NameType}
-  deriving (Eq, Ord, Read, Show)
-
-_VarType = Core.Name "hydra.scala.syntax.VarType"
-
-_VarType_name = Core.Name "name"
-
-data TypedParamType =
-  TypedParamType {
-    typedParamTypeName :: Name,
-    typedParamTypeTyp :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_TypedParamType = Core.Name "hydra.scala.syntax.TypedParamType"
-
-_TypedParamType_name = Core.Name "name"
-
-_TypedParamType_typ = Core.Name "typ"
-
-data ParamType =
-  ParamType {
-    paramTypeMods :: [Mod],
-    paramTypeName :: Name,
-    paramTypeTparams :: [ParamType],
-    paramTypeTbounds :: [TypeBounds],
-    paramTypeVbounds :: [Type],
-    paramTypeCbounds :: [Type]}
-  deriving (Eq, Ord, Read, Show)
-
-_ParamType = Core.Name "hydra.scala.syntax.ParamType"
-
-_ParamType_mods = Core.Name "mods"
-
-_ParamType_name = Core.Name "name"
-
-_ParamType_tparams = Core.Name "tparams"
-
-_ParamType_tbounds = Core.Name "tbounds"
-
-_ParamType_vbounds = Core.Name "vbounds"
-
-_ParamType_cbounds = Core.Name "cbounds"
-
-data MatchType =
-  MatchType {
-    matchTypeTpe :: Type,
-    matchTypeCases :: [TypeCase]}
-  deriving (Eq, Ord, Read, Show)
-
-_MatchType = Core.Name "hydra.scala.syntax.MatchType"
-
-_MatchType_tpe = Core.Name "tpe"
-
-_MatchType_cases = Core.Name "cases"
-
-data Pat =
-  PatVar VarPat |
-  PatWildcard |
-  PatSeqWildcard |
-  PatBind BindPat |
-  PatAlternative AlternativePat |
-  PatTuple TuplePat |
-  PatRepeated RepeatedPat |
-  PatExtract ExtractPat |
-  PatExtractInfix ExtractInfixPat |
-  PatInterpolate InterpolatePat |
-  PatTyped TypedPat |
-  PatGiven GivenPat
-  deriving (Eq, Ord, Read, Show)
-
-_Pat = Core.Name "hydra.scala.syntax.Pat"
-
-_Pat_var = Core.Name "var"
-
-_Pat_wildcard = Core.Name "wildcard"
-
-_Pat_seqWildcard = Core.Name "seqWildcard"
-
-_Pat_bind = Core.Name "bind"
-
-_Pat_alternative = Core.Name "alternative"
-
-_Pat_tuple = Core.Name "tuple"
-
-_Pat_repeated = Core.Name "repeated"
-
-_Pat_extract = Core.Name "extract"
-
-_Pat_extractInfix = Core.Name "extractInfix"
-
-_Pat_interpolate = Core.Name "interpolate"
-
-_Pat_typed = Core.Name "typed"
-
-_Pat_given = Core.Name "given"
-
-data VarPat =
-  VarPat {
-    varPatName :: NameData}
-  deriving (Eq, Ord, Read, Show)
-
-_VarPat = Core.Name "hydra.scala.syntax.VarPat"
-
-_VarPat_name = Core.Name "name"
-
-data BindPat =
-  BindPat {
-    bindPatLhs :: Pat,
-    bindPatRhs :: Pat}
-  deriving (Eq, Ord, Read, Show)
-
-_BindPat = Core.Name "hydra.scala.syntax.BindPat"
-
-_BindPat_lhs = Core.Name "lhs"
-
-_BindPat_rhs = Core.Name "rhs"
-
-data AlternativePat =
-  AlternativePat {
-    alternativePatLhs :: Pat,
-    alternativePatRhs :: Pat}
-  deriving (Eq, Ord, Read, Show)
-
-_AlternativePat = Core.Name "hydra.scala.syntax.AlternativePat"
-
-_AlternativePat_lhs = Core.Name "lhs"
-
-_AlternativePat_rhs = Core.Name "rhs"
-
-data TuplePat =
-  TuplePat {
-    tuplePatArgs :: [Pat]}
-  deriving (Eq, Ord, Read, Show)
-
-_TuplePat = Core.Name "hydra.scala.syntax.TuplePat"
-
-_TuplePat_args = Core.Name "args"
-
-data RepeatedPat =
-  RepeatedPat {
-    repeatedPatName :: NameData}
-  deriving (Eq, Ord, Read, Show)
-
-_RepeatedPat = Core.Name "hydra.scala.syntax.RepeatedPat"
-
-_RepeatedPat_name = Core.Name "name"
-
-data ExtractPat =
-  ExtractPat {
-    extractPatFun :: Data,
-    extractPatArgs :: [Pat]}
-  deriving (Eq, Ord, Read, Show)
-
-_ExtractPat = Core.Name "hydra.scala.syntax.ExtractPat"
-
-_ExtractPat_fun = Core.Name "fun"
-
-_ExtractPat_args = Core.Name "args"
-
-data ExtractInfixPat =
-  ExtractInfixPat {
-    extractInfixPatLhs :: Pat,
-    extractInfixPatOp :: NameData,
-    extractInfixPatRhs :: [Pat]}
-  deriving (Eq, Ord, Read, Show)
-
-_ExtractInfixPat = Core.Name "hydra.scala.syntax.ExtractInfixPat"
-
-_ExtractInfixPat_lhs = Core.Name "lhs"
-
-_ExtractInfixPat_op = Core.Name "op"
-
-_ExtractInfixPat_rhs = Core.Name "rhs"
-
-data InterpolatePat =
-  InterpolatePat {
-    interpolatePatPrefix :: NameData,
-    interpolatePatParts :: [Lit]}
-  deriving (Eq, Ord, Read, Show)
-
-_InterpolatePat = Core.Name "hydra.scala.syntax.InterpolatePat"
-
-_InterpolatePat_prefix = Core.Name "prefix"
-
-_InterpolatePat_parts = Core.Name "parts"
-
-data TypedPat =
-  TypedPat {
-    typedPatLhs :: Pat,
-    typedPatRhs :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_TypedPat = Core.Name "hydra.scala.syntax.TypedPat"
-
-_TypedPat_lhs = Core.Name "lhs"
-
-_TypedPat_rhs = Core.Name "rhs"
-
-data GivenPat =
-  GivenPat {
-    givenPatTpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_GivenPat = Core.Name "hydra.scala.syntax.GivenPat"
-
-_GivenPat_tpe = Core.Name "tpe"
-
-data Member =
-  MemberTerm DataMember |
-  MemberType TypeMember |
-  MemberTermParam ParamData |
-  MemberTypeParam ParamType |
-  MemberSelf Self
-  deriving (Eq, Ord, Read, Show)
-
-_Member = Core.Name "hydra.scala.syntax.Member"
-
-_Member_term = Core.Name "term"
-
-_Member_type = Core.Name "type"
-
-_Member_termParam = Core.Name "termParam"
-
-_Member_typeParam = Core.Name "typeParam"
-
-_Member_self = Core.Name "self"
-
-data DataMember =
-  DataMemberPkg Pkg |
-  DataMemberObject ObjectPkg
-  deriving (Eq, Ord, Read, Show)
-
-_DataMember = Core.Name "hydra.scala.syntax.DataMember"
-
-_DataMember_pkg = Core.Name "pkg"
-
-_DataMember_object = Core.Name "object"
-
-data TypeMember =
-  TypeMember {
-    typeMemberName :: NameType}
-  deriving (Eq, Ord, Read, Show)
-
-_TypeMember = Core.Name "hydra.scala.syntax.TypeMember"
-
-_TypeMember_name = Core.Name "name"
-
-data Decl =
-  DeclVal ValDecl |
-  DeclVar VarDecl |
-  DeclDef DefDecl |
-  DeclType TypeDecl |
-  DeclGiven GivenDecl
-  deriving (Eq, Ord, Read, Show)
-
-_Decl = Core.Name "hydra.scala.syntax.Decl"
-
-_Decl_val = Core.Name "val"
-
-_Decl_var = Core.Name "var"
-
-_Decl_def = Core.Name "def"
-
-_Decl_type = Core.Name "type"
-
-_Decl_given = Core.Name "given"
-
-data ValDecl =
-  ValDecl {
-    valDeclMods :: [Mod],
-    valDeclPats :: [Pat],
-    valDeclDecltpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_ValDecl = Core.Name "hydra.scala.syntax.ValDecl"
-
-_ValDecl_mods = Core.Name "mods"
-
-_ValDecl_pats = Core.Name "pats"
-
-_ValDecl_decltpe = Core.Name "decltpe"
-
-data VarDecl =
-  VarDecl {
-    varDeclMods :: [Mod],
-    varDeclPats :: [Pat],
-    varDeclDecltpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_VarDecl = Core.Name "hydra.scala.syntax.VarDecl"
-
-_VarDecl_mods = Core.Name "mods"
-
-_VarDecl_pats = Core.Name "pats"
-
-_VarDecl_decltpe = Core.Name "decltpe"
-
-data DefDecl =
-  DefDecl {
-    defDeclMods :: [Mod],
-    defDeclName :: NameData,
-    defDeclTparams :: [ParamType],
-    defDeclParamss :: [[ParamData]],
-    defDeclDecltpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_DefDecl = Core.Name "hydra.scala.syntax.DefDecl"
-
-_DefDecl_mods = Core.Name "mods"
-
-_DefDecl_name = Core.Name "name"
-
-_DefDecl_tparams = Core.Name "tparams"
-
-_DefDecl_paramss = Core.Name "paramss"
-
-_DefDecl_decltpe = Core.Name "decltpe"
-
-data TypeDecl =
-  TypeDecl {
-    typeDeclMods :: [Mod],
-    typeDeclName :: NameType,
-    typeDeclTparams :: [ParamType],
-    typeDeclBounds :: TypeBounds}
-  deriving (Eq, Ord, Read, Show)
-
-_TypeDecl = Core.Name "hydra.scala.syntax.TypeDecl"
-
-_TypeDecl_mods = Core.Name "mods"
-
-_TypeDecl_name = Core.Name "name"
-
-_TypeDecl_tparams = Core.Name "tparams"
-
-_TypeDecl_bounds = Core.Name "bounds"
-
-data GivenDecl =
-  GivenDecl {
-    givenDeclMods :: [Mod],
-    givenDeclName :: NameData,
-    givenDeclTparams :: [ParamType],
-    givenDeclSparams :: [[ParamData]],
-    givenDeclDecltpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_GivenDecl = Core.Name "hydra.scala.syntax.GivenDecl"
-
-_GivenDecl_mods = Core.Name "mods"
-
-_GivenDecl_name = Core.Name "name"
-
-_GivenDecl_tparams = Core.Name "tparams"
-
-_GivenDecl_sparams = Core.Name "sparams"
-
-_GivenDecl_decltpe = Core.Name "decltpe"
-
-data Defn =
-  DefnVal ValDefn |
-  DefnVar VarDefn |
-  DefnGiven GivenDefn |
-  DefnEnum EnumDefn |
-  DefnEnumCase EnumCaseDefn |
-  DefnRepeatedEnumCase RepeatedEnumCaseDefn |
-  DefnGivenAlias GivenAliasDefn |
-  DefnExtensionGroup ExtensionGroupDefn |
-  DefnDef DefDefn |
-  DefnType TypeDefn |
-  DefnClass ClassDefn |
-  DefnTrait TraitDefn |
-  DefnObject ObjectDefn
-  deriving (Eq, Ord, Read, Show)
-
-_Defn = Core.Name "hydra.scala.syntax.Defn"
-
-_Defn_val = Core.Name "val"
-
-_Defn_var = Core.Name "var"
-
-_Defn_given = Core.Name "given"
-
-_Defn_enum = Core.Name "enum"
-
-_Defn_enumCase = Core.Name "enumCase"
-
-_Defn_repeatedEnumCase = Core.Name "repeatedEnumCase"
-
-_Defn_givenAlias = Core.Name "givenAlias"
-
-_Defn_extensionGroup = Core.Name "extensionGroup"
-
-_Defn_def = Core.Name "def"
-
-_Defn_type = Core.Name "type"
-
-_Defn_class = Core.Name "class"
-
-_Defn_trait = Core.Name "trait"
-
-_Defn_object = Core.Name "object"
-
-data ValDefn =
-  ValDefn {
-    valDefnMods :: [Mod],
-    valDefnPats :: [Pat],
-    valDefnDecltpe :: (Maybe Type),
-    valDefnRhs :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_ValDefn = Core.Name "hydra.scala.syntax.ValDefn"
-
-_ValDefn_mods = Core.Name "mods"
-
-_ValDefn_pats = Core.Name "pats"
-
-_ValDefn_decltpe = Core.Name "decltpe"
-
-_ValDefn_rhs = Core.Name "rhs"
-
-data VarDefn =
-  VarDefn {
-    varDefnMods :: [Mod],
-    varDefnPats :: [Pat],
-    varDefnDecltpe :: Type,
-    varDefnRhs :: (Maybe Data)}
-  deriving (Eq, Ord, Read, Show)
-
-_VarDefn = Core.Name "hydra.scala.syntax.VarDefn"
-
-_VarDefn_mods = Core.Name "mods"
-
-_VarDefn_pats = Core.Name "pats"
-
-_VarDefn_decltpe = Core.Name "decltpe"
-
-_VarDefn_rhs = Core.Name "rhs"
-
-data GivenDefn =
-  GivenDefn {
-    givenDefnMods :: [Mod],
-    givenDefnName :: Name,
-    givenDefnTparams :: [[ParamType]],
-    givenDefnSparams :: [[ParamData]],
-    givenDefnTempl :: Template}
-  deriving (Eq, Ord, Read, Show)
-
-_GivenDefn = Core.Name "hydra.scala.syntax.GivenDefn"
-
-_GivenDefn_mods = Core.Name "mods"
-
-_GivenDefn_name = Core.Name "name"
-
-_GivenDefn_tparams = Core.Name "tparams"
-
-_GivenDefn_sparams = Core.Name "sparams"
-
-_GivenDefn_templ = Core.Name "templ"
-
-data EnumDefn =
-  EnumDefn {
-    enumDefnMods :: [Mod],
-    enumDefnName :: NameType,
-    enumDefnTparams :: [ParamType],
-    enumDefnCtor :: PrimaryCtor,
-    enumDefnTemplate :: Template}
-  deriving (Eq, Ord, Read, Show)
-
-_EnumDefn = Core.Name "hydra.scala.syntax.EnumDefn"
-
-_EnumDefn_mods = Core.Name "mods"
-
-_EnumDefn_name = Core.Name "name"
-
-_EnumDefn_tparams = Core.Name "tparams"
-
-_EnumDefn_ctor = Core.Name "ctor"
-
-_EnumDefn_template = Core.Name "template"
-
-data EnumCaseDefn =
-  EnumCaseDefn {
-    enumCaseDefnMods :: [Mod],
-    enumCaseDefnName :: NameData,
-    enumCaseDefnTparams :: [ParamType],
-    enumCaseDefnCtor :: PrimaryCtor,
-    enumCaseDefnInits :: [Init]}
-  deriving (Eq, Ord, Read, Show)
-
-_EnumCaseDefn = Core.Name "hydra.scala.syntax.EnumCaseDefn"
-
-_EnumCaseDefn_mods = Core.Name "mods"
-
-_EnumCaseDefn_name = Core.Name "name"
-
-_EnumCaseDefn_tparams = Core.Name "tparams"
-
-_EnumCaseDefn_ctor = Core.Name "ctor"
-
-_EnumCaseDefn_inits = Core.Name "inits"
-
-data RepeatedEnumCaseDefn =
-  RepeatedEnumCaseDefn {
-    repeatedEnumCaseDefnMods :: [Mod],
-    repeatedEnumCaseDefnCases :: [NameData]}
-  deriving (Eq, Ord, Read, Show)
-
-_RepeatedEnumCaseDefn = Core.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"
-
-_RepeatedEnumCaseDefn_mods = Core.Name "mods"
-
-_RepeatedEnumCaseDefn_cases = Core.Name "cases"
-
-data GivenAliasDefn =
-  GivenAliasDefn {
-    givenAliasDefnMods :: [Mod],
-    givenAliasDefnName :: Name,
-    givenAliasDefnTparams :: [[ParamType]],
-    givenAliasDefnSparams :: [[ParamData]],
-    givenAliasDefnDecltpe :: Type,
-    givenAliasDefnBody :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_GivenAliasDefn = Core.Name "hydra.scala.syntax.GivenAliasDefn"
-
-_GivenAliasDefn_mods = Core.Name "mods"
-
-_GivenAliasDefn_name = Core.Name "name"
-
-_GivenAliasDefn_tparams = Core.Name "tparams"
-
-_GivenAliasDefn_sparams = Core.Name "sparams"
-
-_GivenAliasDefn_decltpe = Core.Name "decltpe"
-
-_GivenAliasDefn_body = Core.Name "body"
-
-data ExtensionGroupDefn =
-  ExtensionGroupDefn {
-    extensionGroupDefnTparams :: [ParamType],
-    extensionGroupDefnParmss :: [[ParamData]],
-    extensionGroupDefnBody :: Stat}
-  deriving (Eq, Ord, Read, Show)
-
-_ExtensionGroupDefn = Core.Name "hydra.scala.syntax.ExtensionGroupDefn"
-
-_ExtensionGroupDefn_tparams = Core.Name "tparams"
-
-_ExtensionGroupDefn_parmss = Core.Name "parmss"
-
-_ExtensionGroupDefn_body = Core.Name "body"
-
-data DefDefn =
-  DefDefn {
-    defDefnMods :: [Mod],
-    defDefnName :: NameData,
-    defDefnTparams :: [ParamType],
-    defDefnParamss :: [[ParamData]],
-    defDefnDecltpe :: (Maybe Type),
-    defDefnBody :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_DefDefn = Core.Name "hydra.scala.syntax.DefDefn"
-
-_DefDefn_mods = Core.Name "mods"
-
-_DefDefn_name = Core.Name "name"
-
-_DefDefn_tparams = Core.Name "tparams"
-
-_DefDefn_paramss = Core.Name "paramss"
-
-_DefDefn_decltpe = Core.Name "decltpe"
-
-_DefDefn_body = Core.Name "body"
-
-data TypeDefn =
-  TypeDefn {
-    typeDefnMods :: [Mod],
-    typeDefnName :: NameType,
-    typeDefnTparams :: [ParamType],
-    typeDefnBody :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_TypeDefn = Core.Name "hydra.scala.syntax.TypeDefn"
-
-_TypeDefn_mods = Core.Name "mods"
-
-_TypeDefn_name = Core.Name "name"
-
-_TypeDefn_tparams = Core.Name "tparams"
-
-_TypeDefn_body = Core.Name "body"
-
-data ClassDefn =
-  ClassDefn {
-    classDefnMods :: [Mod],
-    classDefnName :: NameType,
-    classDefnTparams :: [ParamType],
-    classDefnCtor :: PrimaryCtor,
-    classDefnTemplate :: Template}
-  deriving (Eq, Ord, Read, Show)
-
-_ClassDefn = Core.Name "hydra.scala.syntax.ClassDefn"
-
-_ClassDefn_mods = Core.Name "mods"
-
-_ClassDefn_name = Core.Name "name"
-
-_ClassDefn_tparams = Core.Name "tparams"
-
-_ClassDefn_ctor = Core.Name "ctor"
-
-_ClassDefn_template = Core.Name "template"
-
-data TraitDefn =
-  TraitDefn {
-    traitDefnMods :: [Mod],
-    traitDefnName :: NameType,
-    traitDefnTparams :: [ParamType],
-    traitDefnCtor :: PrimaryCtor,
-    traitDefnTemplate :: Template}
-  deriving (Eq, Ord, Read, Show)
-
-_TraitDefn = Core.Name "hydra.scala.syntax.TraitDefn"
-
-_TraitDefn_mods = Core.Name "mods"
-
-_TraitDefn_name = Core.Name "name"
-
-_TraitDefn_tparams = Core.Name "tparams"
-
-_TraitDefn_ctor = Core.Name "ctor"
-
-_TraitDefn_template = Core.Name "template"
-
-data ObjectDefn =
-  ObjectDefn {
-    objectDefnName :: NameData}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectDefn = Core.Name "hydra.scala.syntax.ObjectDefn"
-
-_ObjectDefn_name = Core.Name "name"
-
-data Pkg =
-  Pkg {
-    pkgName :: NameData,
-    pkgRef :: RefData,
-    pkgStats :: [Stat]}
-  deriving (Eq, Ord, Read, Show)
-
-_Pkg = Core.Name "hydra.scala.syntax.Pkg"
-
-_Pkg_name = Core.Name "name"
-
-_Pkg_ref = Core.Name "ref"
-
-_Pkg_stats = Core.Name "stats"
-
-data ObjectPkg =
-  ObjectPkg {
-    objectPkgMods :: [Mod],
-    objectPkgName :: NameData,
-    objectPkgTemplate :: Template}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectPkg = Core.Name "hydra.scala.syntax.ObjectPkg"
-
-_ObjectPkg_mods = Core.Name "mods"
-
-_ObjectPkg_name = Core.Name "name"
-
-_ObjectPkg_template = Core.Name "template"
-
-data Ctor =
-  CtorPrimary PrimaryCtor |
-  CtorSecondary SecondaryCtor
-  deriving (Eq, Ord, Read, Show)
-
-_Ctor = Core.Name "hydra.scala.syntax.Ctor"
-
-_Ctor_primary = Core.Name "primary"
-
-_Ctor_secondary = Core.Name "secondary"
-
-data PrimaryCtor =
-  PrimaryCtor {
-    primaryCtorMods :: [Mod],
-    primaryCtorName :: Name,
-    primaryCtorParamss :: [[ParamData]]}
-  deriving (Eq, Ord, Read, Show)
-
-_PrimaryCtor = Core.Name "hydra.scala.syntax.PrimaryCtor"
-
-_PrimaryCtor_mods = Core.Name "mods"
-
-_PrimaryCtor_name = Core.Name "name"
-
-_PrimaryCtor_paramss = Core.Name "paramss"
-
-data SecondaryCtor =
-  SecondaryCtor {
-    secondaryCtorMods :: [Mod],
-    secondaryCtorName :: Name,
-    secondaryCtorParamss :: [[ParamData]],
-    secondaryCtorInit :: Init,
-    secondaryCtorStats :: [Stat]}
-  deriving (Eq, Ord, Read, Show)
-
-_SecondaryCtor = Core.Name "hydra.scala.syntax.SecondaryCtor"
-
-_SecondaryCtor_mods = Core.Name "mods"
-
-_SecondaryCtor_name = Core.Name "name"
-
-_SecondaryCtor_paramss = Core.Name "paramss"
-
-_SecondaryCtor_init = Core.Name "init"
-
-_SecondaryCtor_stats = Core.Name "stats"
-
-data Init =
-  Init {
-    initTpe :: Type,
-    initName :: Name,
-    initArgss :: [[Data]]}
-  deriving (Eq, Ord, Read, Show)
-
-_Init = Core.Name "hydra.scala.syntax.Init"
-
-_Init_tpe = Core.Name "tpe"
-
-_Init_name = Core.Name "name"
-
-_Init_argss = Core.Name "argss"
-
-newtype Self =
-  Self {
-    unSelf :: ()}
-  deriving (Eq, Ord, Read, Show)
-
-_Self = Core.Name "hydra.scala.syntax.Self"
-
-data Template =
-  Template {
-    templateEarly :: [Stat],
-    templateInits :: [Init],
-    templateSelf :: Self,
-    templateStats :: [Stat]}
-  deriving (Eq, Ord, Read, Show)
-
-_Template = Core.Name "hydra.scala.syntax.Template"
-
-_Template_early = Core.Name "early"
-
-_Template_inits = Core.Name "inits"
-
-_Template_self = Core.Name "self"
-
-_Template_stats = Core.Name "stats"
-
-data Mod =
-  ModAnnot AnnotMod |
-  ModPrivate PrivateMod |
-  ModProtected ProtectedMod |
-  ModImplicit |
-  ModFinal |
-  ModSealed |
-  ModOpen |
-  ModSuper |
-  ModOverride |
-  ModCase |
-  ModAbstract |
-  ModCovariant |
-  ModContravariant |
-  ModLazy |
-  ModValParam |
-  ModVarParam |
-  ModInfix |
-  ModInline |
-  ModUsing |
-  ModOpaque |
-  ModTransparent
-  deriving (Eq, Ord, Read, Show)
-
-_Mod = Core.Name "hydra.scala.syntax.Mod"
-
-_Mod_annot = Core.Name "annot"
-
-_Mod_private = Core.Name "private"
-
-_Mod_protected = Core.Name "protected"
-
-_Mod_implicit = Core.Name "implicit"
-
-_Mod_final = Core.Name "final"
-
-_Mod_sealed = Core.Name "sealed"
-
-_Mod_open = Core.Name "open"
-
-_Mod_super = Core.Name "super"
-
-_Mod_override = Core.Name "override"
-
-_Mod_case = Core.Name "case"
-
-_Mod_abstract = Core.Name "abstract"
-
-_Mod_covariant = Core.Name "covariant"
-
-_Mod_contravariant = Core.Name "contravariant"
-
-_Mod_lazy = Core.Name "lazy"
-
-_Mod_valParam = Core.Name "valParam"
-
-_Mod_varParam = Core.Name "varParam"
-
-_Mod_infix = Core.Name "infix"
-
-_Mod_inline = Core.Name "inline"
-
-_Mod_using = Core.Name "using"
-
-_Mod_opaque = Core.Name "opaque"
-
-_Mod_transparent = Core.Name "transparent"
-
-data AnnotMod =
-  AnnotMod {
-    annotModInit :: Init}
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotMod = Core.Name "hydra.scala.syntax.AnnotMod"
-
-_AnnotMod_init = Core.Name "init"
-
-data PrivateMod =
-  PrivateMod {
-    privateModWithin :: Ref}
-  deriving (Eq, Ord, Read, Show)
-
-_PrivateMod = Core.Name "hydra.scala.syntax.PrivateMod"
-
-_PrivateMod_within = Core.Name "within"
-
-data ProtectedMod =
-  ProtectedMod {
-    protectedModWithin :: Ref}
-  deriving (Eq, Ord, Read, Show)
-
-_ProtectedMod = Core.Name "hydra.scala.syntax.ProtectedMod"
-
-_ProtectedMod_within = Core.Name "within"
-
-data Enumerator =
-  EnumeratorGenerator GeneratorEnumerator |
-  EnumeratorCaseGenerator CaseGeneratorEnumerator |
-  EnumeratorVal ValEnumerator |
-  EnumeratorGuard GuardEnumerator
-  deriving (Eq, Ord, Read, Show)
-
-_Enumerator = Core.Name "hydra.scala.syntax.Enumerator"
-
-_Enumerator_generator = Core.Name "generator"
-
-_Enumerator_caseGenerator = Core.Name "caseGenerator"
-
-_Enumerator_val = Core.Name "val"
-
-_Enumerator_guard = Core.Name "guard"
-
-data GeneratorEnumerator =
-  GeneratorEnumerator {
-    generatorEnumeratorPat :: Pat,
-    generatorEnumeratorRhs :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_GeneratorEnumerator = Core.Name "hydra.scala.syntax.GeneratorEnumerator"
-
-_GeneratorEnumerator_pat = Core.Name "pat"
-
-_GeneratorEnumerator_rhs = Core.Name "rhs"
-
-data CaseGeneratorEnumerator =
-  CaseGeneratorEnumerator {
-    caseGeneratorEnumeratorPat :: Pat,
-    caseGeneratorEnumeratorRhs :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_CaseGeneratorEnumerator = Core.Name "hydra.scala.syntax.CaseGeneratorEnumerator"
-
-_CaseGeneratorEnumerator_pat = Core.Name "pat"
-
-_CaseGeneratorEnumerator_rhs = Core.Name "rhs"
-
-data ValEnumerator =
-  ValEnumerator {
-    valEnumeratorPat :: Pat,
-    valEnumeratorRhs :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_ValEnumerator = Core.Name "hydra.scala.syntax.ValEnumerator"
-
-_ValEnumerator_pat = Core.Name "pat"
-
-_ValEnumerator_rhs = Core.Name "rhs"
-
-data GuardEnumerator =
-  GuardEnumerator {
-    guardEnumeratorCond :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_GuardEnumerator = Core.Name "hydra.scala.syntax.GuardEnumerator"
-
-_GuardEnumerator_cond = Core.Name "cond"
-
-data ImportExportStat =
-  ImportExportStatImport Import |
-  ImportExportStatExport Export
-  deriving (Eq, Ord, Read, Show)
-
-_ImportExportStat = Core.Name "hydra.scala.syntax.ImportExportStat"
-
-_ImportExportStat_import = Core.Name "import"
-
-_ImportExportStat_export = Core.Name "export"
-
-data Import =
-  Import {
-    importImporters :: [Importer]}
-  deriving (Eq, Ord, Read, Show)
-
-_Import = Core.Name "hydra.scala.syntax.Import"
-
-_Import_importers = Core.Name "importers"
-
-data Export =
-  Export {
-    exportImporters :: [Importer]}
-  deriving (Eq, Ord, Read, Show)
-
-_Export = Core.Name "hydra.scala.syntax.Export"
-
-_Export_importers = Core.Name "importers"
-
-data Importer =
-  Importer {
-    importerRef :: RefData,
-    importerImportees :: [Importee]}
-  deriving (Eq, Ord, Read, Show)
-
-_Importer = Core.Name "hydra.scala.syntax.Importer"
-
-_Importer_ref = Core.Name "ref"
-
-_Importer_importees = Core.Name "importees"
-
-data Importee =
-  ImporteeWildcard |
-  ImporteeGiven GivenImportee |
-  ImporteeGivenAll |
-  ImporteeName NameImportee |
-  ImporteeRename RenameImportee |
-  ImporteeUnimport UnimportImportee
-  deriving (Eq, Ord, Read, Show)
-
-_Importee = Core.Name "hydra.scala.syntax.Importee"
-
-_Importee_wildcard = Core.Name "wildcard"
-
-_Importee_given = Core.Name "given"
-
-_Importee_givenAll = Core.Name "givenAll"
-
-_Importee_name = Core.Name "name"
-
-_Importee_rename = Core.Name "rename"
-
-_Importee_unimport = Core.Name "unimport"
-
-data GivenImportee =
-  GivenImportee {
-    givenImporteeTpe :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_GivenImportee = Core.Name "hydra.scala.syntax.GivenImportee"
-
-_GivenImportee_tpe = Core.Name "tpe"
-
-data NameImportee =
-  NameImportee {
-    nameImporteeName :: Name}
-  deriving (Eq, Ord, Read, Show)
-
-_NameImportee = Core.Name "hydra.scala.syntax.NameImportee"
-
-_NameImportee_name = Core.Name "name"
-
-data RenameImportee =
-  RenameImportee {
-    renameImporteeName :: Name,
-    renameImporteeRename :: Name}
-  deriving (Eq, Ord, Read, Show)
-
-_RenameImportee = Core.Name "hydra.scala.syntax.RenameImportee"
-
-_RenameImportee_name = Core.Name "name"
-
-_RenameImportee_rename = Core.Name "rename"
-
-data UnimportImportee =
-  UnimportImportee {
-    unimportImporteeName :: Name}
-  deriving (Eq, Ord, Read, Show)
-
-_UnimportImportee = Core.Name "hydra.scala.syntax.UnimportImportee"
-
-_UnimportImportee_name = Core.Name "name"
-
-data CaseTree =
-  CaseTreeCase Case |
-  CaseTreeTypeCase TypeCase
-  deriving (Eq, Ord, Read, Show)
-
-_CaseTree = Core.Name "hydra.scala.syntax.CaseTree"
-
-_CaseTree_case = Core.Name "case"
-
-_CaseTree_typeCase = Core.Name "typeCase"
-
-data Case =
-  Case {
-    casePat :: Pat,
-    caseCond :: (Maybe Data),
-    caseBody :: Data}
-  deriving (Eq, Ord, Read, Show)
-
-_Case = Core.Name "hydra.scala.syntax.Case"
-
-_Case_pat = Core.Name "pat"
-
-_Case_cond = Core.Name "cond"
-
-_Case_body = Core.Name "body"
-
-data TypeCase =
-  TypeCase {
-    typeCasePat :: Type,
-    typeCaseBody :: Type}
-  deriving (Eq, Ord, Read, Show)
-
-_TypeCase = Core.Name "hydra.scala.syntax.TypeCase"
-
-_TypeCase_pat = Core.Name "pat"
-
-_TypeCase_body = Core.Name "body"
-
-data Source =
-  Source {
-    sourceStats :: [Stat]}
-  deriving (Eq, Ord, Read, Show)
-
-_Source = Core.Name "hydra.scala.syntax.Source"
-
-_Source_stats = Core.Name "stats"
+import qualified Hydra.Core.Model as Model
+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
+import qualified Data.Scientific as Sci
+import Data.Void
+import qualified Data.Int as I
+
+-- | A wrapper for strings used in scala.Predef contexts.
+newtype PredefString =
+  PredefString {
+    unPredefString :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_PredefString = Model.Name "hydra.scala.syntax.PredefString"
+
+-- | A Scala 2 symbol literal (corresponds to scala.Symbol).
+data ScalaSymbol =
+  ScalaSymbol {
+    scalaSymbolName :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_ScalaSymbol = Model.Name "hydra.scala.syntax.ScalaSymbol"
+
+_ScalaSymbol_name = Model.Name "name"
+
+-- | The root of the Scalameta tree hierarchy. Each arm names a major AST category.
+data Tree =
+  TreeRef Ref |
+  TreeStat Stat |
+  TreeType Type |
+  TreeBounds TypeBounds |
+  TreePat Pat |
+  TreeMember Member |
+  TreeCtor Ctor |
+  TreeTemplate Template |
+  TreeMod Mod |
+  TreeEnumerator Enumerator |
+  TreeImporter Importer |
+  TreeImportee Importee |
+  TreeCaseTree CaseTree |
+  TreeSource Source
+  deriving (Eq, Ord, Read, Show)
+
+_Tree = Model.Name "hydra.scala.syntax.Tree"
+
+_Tree_ref = Model.Name "ref"
+
+_Tree_stat = Model.Name "stat"
+
+_Tree_type = Model.Name "type"
+
+_Tree_bounds = Model.Name "bounds"
+
+_Tree_pat = Model.Name "pat"
+
+_Tree_member = Model.Name "member"
+
+_Tree_ctor = Model.Name "ctor"
+
+_Tree_template = Model.Name "template"
+
+_Tree_mod = Model.Name "mod"
+
+_Tree_enumerator = Model.Name "enumerator"
+
+_Tree_importer = Model.Name "importer"
+
+_Tree_importee = Model.Name "importee"
+
+_Tree_caseTree = Model.Name "caseTree"
+
+_Tree_source = Model.Name "source"
+
+data Ref =
+  RefName Name |
+  RefInit Init
+  deriving (Eq, Ord, Read, Show)
+
+_Ref = Model.Name "hydra.scala.syntax.Ref"
+
+_Ref_name = Model.Name "name"
+
+_Ref_init = Model.Name "init"
+
+data Stat =
+  StatTerm Data |
+  StatDecl Decl |
+  StatDefn Defn |
+  StatImportExport ImportExportStat
+  deriving (Eq, Ord, Read, Show)
+
+_Stat = Model.Name "hydra.scala.syntax.Stat"
+
+_Stat_term = Model.Name "term"
+
+_Stat_decl = Model.Name "decl"
+
+_Stat_defn = Model.Name "defn"
+
+_Stat_importExport = Model.Name "importExport"
+
+data Name =
+  NameValue String |
+  NameAnonymous |
+  NameIndeterminate PredefString
+  deriving (Eq, Ord, Read, Show)
+
+_Name = Model.Name "hydra.scala.syntax.Name"
+
+_Name_value = Model.Name "value"
+
+_Name_anonymous = Model.Name "anonymous"
+
+_Name_indeterminate = Model.Name "indeterminate"
+
+data Lit =
+  LitNull |
+  LitInt Int |
+  LitDouble Double |
+  LitFloat Float |
+  LitByte I.Int8 |
+  LitShort I.Int16 |
+  LitChar Int |
+  LitLong I.Int64 |
+  LitBoolean Bool |
+  LitUnit |
+  LitString String |
+  LitBytes [Int] |
+  LitSymbol ScalaSymbol
+  deriving (Eq, Ord, Read, Show)
+
+_Lit = Model.Name "hydra.scala.syntax.Lit"
+
+_Lit_null = Model.Name "null"
+
+_Lit_int = Model.Name "int"
+
+_Lit_double = Model.Name "double"
+
+_Lit_float = Model.Name "float"
+
+_Lit_byte = Model.Name "byte"
+
+_Lit_short = Model.Name "short"
+
+_Lit_char = Model.Name "char"
+
+_Lit_long = Model.Name "long"
+
+_Lit_boolean = Model.Name "boolean"
+
+_Lit_unit = Model.Name "unit"
+
+_Lit_string = Model.Name "string"
+
+_Lit_bytes = Model.Name "bytes"
+
+_Lit_symbol = Model.Name "symbol"
+
+data Data =
+  DataLit Lit |
+  DataRef RefData |
+  DataInterpolate InterpolateData |
+  DataApply ApplyData |
+  DataApplyUsing ApplyUsingData |
+  DataApplyType ApplyTypeData |
+  DataAssign AssignData |
+  DataReturn ReturnData |
+  DataThrow ThrowData |
+  DataAscribe AscribeData |
+  DataAnnotate AnnotateData |
+  DataTuple TupleData |
+  DataBlock BlockData |
+  DataEndMarker EndMarkerData |
+  DataIf IfData |
+  DataMatch MatchData |
+  DataTry TryData |
+  DataTryWithHandler TryWithHandlerData |
+  DataFunction FunctionData |
+  DataContextFunction ContextFunctionData |
+  DataPolyFunction PolyFunctionData |
+  DataPartialFunction PartialFunctionData |
+  DataWhile WhileData |
+  DataDo DoData |
+  DataFor ForData |
+  DataForYield ForYieldData |
+  DataNew NewData |
+  DataNewAnonymous NewAnonymousData |
+  DataPlaceholder |
+  DataEta EtaData |
+  DataRepeated RepeatedData |
+  DataParam ParamData
+  deriving (Eq, Ord, Read, Show)
+
+_Data = Model.Name "hydra.scala.syntax.Data"
+
+_Data_lit = Model.Name "lit"
+
+_Data_ref = Model.Name "ref"
+
+_Data_interpolate = Model.Name "interpolate"
+
+_Data_apply = Model.Name "apply"
+
+_Data_applyUsing = Model.Name "applyUsing"
+
+_Data_applyType = Model.Name "applyType"
+
+_Data_assign = Model.Name "assign"
+
+_Data_return = Model.Name "return"
+
+_Data_throw = Model.Name "throw"
+
+_Data_ascribe = Model.Name "ascribe"
+
+_Data_annotate = Model.Name "annotate"
+
+_Data_tuple = Model.Name "tuple"
+
+_Data_block = Model.Name "block"
+
+_Data_endMarker = Model.Name "endMarker"
+
+_Data_if = Model.Name "if"
+
+_Data_match = Model.Name "match"
+
+_Data_try = Model.Name "try"
+
+_Data_tryWithHandler = Model.Name "tryWithHandler"
+
+_Data_function = Model.Name "function"
+
+_Data_contextFunction = Model.Name "contextFunction"
+
+_Data_polyFunction = Model.Name "polyFunction"
+
+_Data_partialFunction = Model.Name "partialFunction"
+
+_Data_while = Model.Name "while"
+
+_Data_do = Model.Name "do"
+
+_Data_for = Model.Name "for"
+
+_Data_forYield = Model.Name "forYield"
+
+_Data_new = Model.Name "new"
+
+_Data_newAnonymous = Model.Name "newAnonymous"
+
+_Data_placeholder = Model.Name "placeholder"
+
+_Data_eta = Model.Name "eta"
+
+_Data_repeated = Model.Name "repeated"
+
+_Data_param = Model.Name "param"
+
+data RefData =
+  RefDataThis ThisData |
+  RefDataSuper SuperData |
+  RefDataName NameData |
+  RefDataAnonymous AnonymousData |
+  RefDataSelect SelectData |
+  RefDataApplyUnary ApplyUnaryData
+  deriving (Eq, Ord, Read, Show)
+
+_RefData = Model.Name "hydra.scala.syntax.RefData"
+
+_RefData_this = Model.Name "this"
+
+_RefData_super = Model.Name "super"
+
+_RefData_name = Model.Name "name"
+
+_RefData_anonymous = Model.Name "anonymous"
+
+_RefData_select = Model.Name "select"
+
+_RefData_applyUnary = Model.Name "applyUnary"
+
+newtype ThisData =
+  ThisData {
+    unThisData :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_ThisData = Model.Name "hydra.scala.syntax.ThisData"
+
+data SuperData =
+  SuperData {
+    superDataThisp :: Name,
+    superDataSuperp :: Name}
+  deriving (Eq, Ord, Read, Show)
+
+_SuperData = Model.Name "hydra.scala.syntax.SuperData"
+
+_SuperData_thisp = Model.Name "thisp"
+
+_SuperData_superp = Model.Name "superp"
+
+data NameData =
+  NameData {
+    nameDataValue :: PredefString}
+  deriving (Eq, Ord, Read, Show)
+
+_NameData = Model.Name "hydra.scala.syntax.NameData"
+
+_NameData_value = Model.Name "value"
+
+newtype AnonymousData =
+  AnonymousData {
+    unAnonymousData :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_AnonymousData = Model.Name "hydra.scala.syntax.AnonymousData"
+
+data SelectData =
+  SelectData {
+    selectDataQual :: Data,
+    selectDataName :: NameData}
+  deriving (Eq, Ord, Read, Show)
+
+_SelectData = Model.Name "hydra.scala.syntax.SelectData"
+
+_SelectData_qual = Model.Name "qual"
+
+_SelectData_name = Model.Name "name"
+
+data InterpolateData =
+  InterpolateData {
+    interpolateDataPrefix :: NameData,
+    interpolateDataParts :: [Lit],
+    interpolateDataArgs :: [Data]}
+  deriving (Eq, Ord, Read, Show)
+
+_InterpolateData = Model.Name "hydra.scala.syntax.InterpolateData"
+
+_InterpolateData_prefix = Model.Name "prefix"
+
+_InterpolateData_parts = Model.Name "parts"
+
+_InterpolateData_args = Model.Name "args"
+
+data ApplyData =
+  ApplyData {
+    applyDataFun :: Data,
+    applyDataArgs :: [Data]}
+  deriving (Eq, Ord, Read, Show)
+
+_ApplyData = Model.Name "hydra.scala.syntax.ApplyData"
+
+_ApplyData_fun = Model.Name "fun"
+
+_ApplyData_args = Model.Name "args"
+
+data ApplyUsingData =
+  ApplyUsingData {
+    applyUsingDataFun :: Data,
+    applyUsingDataTargs :: [Data]}
+  deriving (Eq, Ord, Read, Show)
+
+_ApplyUsingData = Model.Name "hydra.scala.syntax.ApplyUsingData"
+
+_ApplyUsingData_fun = Model.Name "fun"
+
+_ApplyUsingData_targs = Model.Name "targs"
+
+data ApplyTypeData =
+  ApplyTypeData {
+    applyTypeDataLhs :: Data,
+    applyTypeDataOp :: NameData,
+    applyTypeDataTargs :: [Type],
+    applyTypeDataArgs :: [Data]}
+  deriving (Eq, Ord, Read, Show)
+
+_ApplyTypeData = Model.Name "hydra.scala.syntax.ApplyTypeData"
+
+_ApplyTypeData_lhs = Model.Name "lhs"
+
+_ApplyTypeData_op = Model.Name "op"
+
+_ApplyTypeData_targs = Model.Name "targs"
+
+_ApplyTypeData_args = Model.Name "args"
+
+data ApplyInfixData =
+  ApplyInfixData {
+    applyInfixDataLhs :: Data,
+    applyInfixDataOp :: NameData,
+    applyInfixDataTargs :: [Type],
+    applyInfixDataArgs :: [Data]}
+  deriving (Eq, Ord, Read, Show)
+
+_ApplyInfixData = Model.Name "hydra.scala.syntax.ApplyInfixData"
+
+_ApplyInfixData_lhs = Model.Name "lhs"
+
+_ApplyInfixData_op = Model.Name "op"
+
+_ApplyInfixData_targs = Model.Name "targs"
+
+_ApplyInfixData_args = Model.Name "args"
+
+data ApplyUnaryData =
+  ApplyUnaryData {
+    applyUnaryDataOp :: NameData,
+    applyUnaryDataArg :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_ApplyUnaryData = Model.Name "hydra.scala.syntax.ApplyUnaryData"
+
+_ApplyUnaryData_op = Model.Name "op"
+
+_ApplyUnaryData_arg = Model.Name "arg"
+
+data AssignData =
+  AssignData {
+    assignDataLhs :: Data,
+    assignDataRhs :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_AssignData = Model.Name "hydra.scala.syntax.AssignData"
+
+_AssignData_lhs = Model.Name "lhs"
+
+_AssignData_rhs = Model.Name "rhs"
+
+data ReturnData =
+  ReturnData {
+    returnDataExpr :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_ReturnData = Model.Name "hydra.scala.syntax.ReturnData"
+
+_ReturnData_expr = Model.Name "expr"
+
+data ThrowData =
+  ThrowData {
+    throwDataExpr :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_ThrowData = Model.Name "hydra.scala.syntax.ThrowData"
+
+_ThrowData_expr = Model.Name "expr"
+
+data AscribeData =
+  AscribeData {
+    ascribeDataExpr :: Data,
+    ascribeDataTpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_AscribeData = Model.Name "hydra.scala.syntax.AscribeData"
+
+_AscribeData_expr = Model.Name "expr"
+
+_AscribeData_tpe = Model.Name "tpe"
+
+data AnnotateData =
+  AnnotateData {
+    annotateDataExpr :: Data,
+    annotateDataAnnots :: [AnnotMod]}
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotateData = Model.Name "hydra.scala.syntax.AnnotateData"
+
+_AnnotateData_expr = Model.Name "expr"
+
+_AnnotateData_annots = Model.Name "annots"
+
+data TupleData =
+  TupleData {
+    tupleDataArgs :: [Data]}
+  deriving (Eq, Ord, Read, Show)
+
+_TupleData = Model.Name "hydra.scala.syntax.TupleData"
+
+_TupleData_args = Model.Name "args"
+
+data BlockData =
+  BlockData {
+    blockDataStats :: [Stat]}
+  deriving (Eq, Ord, Read, Show)
+
+_BlockData = Model.Name "hydra.scala.syntax.BlockData"
+
+_BlockData_stats = Model.Name "stats"
+
+data EndMarkerData =
+  EndMarkerData {
+    endMarkerDataName :: NameData}
+  deriving (Eq, Ord, Read, Show)
+
+_EndMarkerData = Model.Name "hydra.scala.syntax.EndMarkerData"
+
+_EndMarkerData_name = Model.Name "name"
+
+data IfData =
+  IfData {
+    ifDataCond :: Data,
+    ifDataThenp :: Data,
+    ifDataElsep :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_IfData = Model.Name "hydra.scala.syntax.IfData"
+
+_IfData_cond = Model.Name "cond"
+
+_IfData_thenp = Model.Name "thenp"
+
+_IfData_elsep = Model.Name "elsep"
+
+data MatchData =
+  MatchData {
+    matchDataExpr :: Data,
+    matchDataCases :: [Case]}
+  deriving (Eq, Ord, Read, Show)
+
+_MatchData = Model.Name "hydra.scala.syntax.MatchData"
+
+_MatchData_expr = Model.Name "expr"
+
+_MatchData_cases = Model.Name "cases"
+
+data TryData =
+  TryData {
+    tryDataExpr :: Data,
+    tryDataCatchp :: [Case],
+    tryDataFinallyp :: (Maybe Data)}
+  deriving (Eq, Ord, Read, Show)
+
+_TryData = Model.Name "hydra.scala.syntax.TryData"
+
+_TryData_expr = Model.Name "expr"
+
+_TryData_catchp = Model.Name "catchp"
+
+_TryData_finallyp = Model.Name "finallyp"
+
+data TryWithHandlerData =
+  TryWithHandlerData {
+    tryWithHandlerDataExpr :: Data,
+    tryWithHandlerDataCatchp :: Data,
+    tryWithHandlerDataFinallyp :: (Maybe Data)}
+  deriving (Eq, Ord, Read, Show)
+
+_TryWithHandlerData = Model.Name "hydra.scala.syntax.TryWithHandlerData"
+
+_TryWithHandlerData_expr = Model.Name "expr"
+
+_TryWithHandlerData_catchp = Model.Name "catchp"
+
+_TryWithHandlerData_finallyp = Model.Name "finallyp"
+
+data ContextFunctionData =
+  ContextFunctionData {
+    contextFunctionDataParams :: [ParamData],
+    contextFunctionDataBody :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_ContextFunctionData = Model.Name "hydra.scala.syntax.ContextFunctionData"
+
+_ContextFunctionData_params = Model.Name "params"
+
+_ContextFunctionData_body = Model.Name "body"
+
+data FunctionData =
+  FunctionData {
+    functionDataParams :: [ParamData],
+    functionDataBody :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_FunctionData = Model.Name "hydra.scala.syntax.FunctionData"
+
+_FunctionData_params = Model.Name "params"
+
+_FunctionData_body = Model.Name "body"
+
+data PolyFunctionData =
+  PolyFunctionData {
+    polyFunctionDataTparams :: [ParamType],
+    polyFunctionDataBody :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_PolyFunctionData = Model.Name "hydra.scala.syntax.PolyFunctionData"
+
+_PolyFunctionData_tparams = Model.Name "tparams"
+
+_PolyFunctionData_body = Model.Name "body"
+
+data PartialFunctionData =
+  PartialFunctionData {
+    partialFunctionDataCases :: [Case]}
+  deriving (Eq, Ord, Read, Show)
+
+_PartialFunctionData = Model.Name "hydra.scala.syntax.PartialFunctionData"
+
+_PartialFunctionData_cases = Model.Name "cases"
+
+data WhileData =
+  WhileData {
+    whileDataExpr :: Data,
+    whileDataBody :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_WhileData = Model.Name "hydra.scala.syntax.WhileData"
+
+_WhileData_expr = Model.Name "expr"
+
+_WhileData_body = Model.Name "body"
+
+data DoData =
+  DoData {
+    doDataBody :: Data,
+    doDataExpr :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_DoData = Model.Name "hydra.scala.syntax.DoData"
+
+_DoData_body = Model.Name "body"
+
+_DoData_expr = Model.Name "expr"
+
+data ForData =
+  ForData {
+    forDataEnums :: [Enumerator]}
+  deriving (Eq, Ord, Read, Show)
+
+_ForData = Model.Name "hydra.scala.syntax.ForData"
+
+_ForData_enums = Model.Name "enums"
+
+data ForYieldData =
+  ForYieldData {
+    forYieldDataEnums :: [Enumerator]}
+  deriving (Eq, Ord, Read, Show)
+
+_ForYieldData = Model.Name "hydra.scala.syntax.ForYieldData"
+
+_ForYieldData_enums = Model.Name "enums"
+
+data NewData =
+  NewData {
+    newDataInit :: Init}
+  deriving (Eq, Ord, Read, Show)
+
+_NewData = Model.Name "hydra.scala.syntax.NewData"
+
+_NewData_init = Model.Name "init"
+
+data NewAnonymousData =
+  NewAnonymousData {
+    newAnonymousDataTempl :: Template}
+  deriving (Eq, Ord, Read, Show)
+
+_NewAnonymousData = Model.Name "hydra.scala.syntax.NewAnonymousData"
+
+_NewAnonymousData_templ = Model.Name "templ"
+
+data EtaData =
+  EtaData {
+    etaDataExpr :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_EtaData = Model.Name "hydra.scala.syntax.EtaData"
+
+_EtaData_expr = Model.Name "expr"
+
+data RepeatedData =
+  RepeatedData {
+    repeatedDataExpr :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_RepeatedData = Model.Name "hydra.scala.syntax.RepeatedData"
+
+_RepeatedData_expr = Model.Name "expr"
+
+data ParamData =
+  ParamData {
+    paramDataMods :: [Mod],
+    paramDataName :: Name,
+    paramDataDecltpe :: (Maybe Type),
+    paramDataDefault :: (Maybe Data)}
+  deriving (Eq, Ord, Read, Show)
+
+_ParamData = Model.Name "hydra.scala.syntax.ParamData"
+
+_ParamData_mods = Model.Name "mods"
+
+_ParamData_name = Model.Name "name"
+
+_ParamData_decltpe = Model.Name "decltpe"
+
+_ParamData_default = Model.Name "default"
+
+data Type =
+  TypeRef RefType |
+  TypeAnonymousName AnonymousNameType |
+  TypeApply ApplyType |
+  TypeApplyInfix ApplyInfixType |
+  TypeFunction FunctionType |
+  TypeContextFunction ContextFunctionType |
+  TypePolyFunction PolyFunctionType |
+  TypeImplicitFunction ImplicitFunctionType |
+  TypeTuple TupleType |
+  TypeWith WithType |
+  TypeAnd AndType |
+  TypeOr OrType |
+  TypeRefine RefineType |
+  TypeExistential ExistentialType |
+  TypeAnnotate AnnotateType |
+  TypeLambda LambdaType |
+  TypeMethod MethodType |
+  TypePlaceholder PlaceholderType |
+  TypeByName ByNameType |
+  TypeRepeated RepeatedType |
+  TypeVar VarType |
+  TypeTypedParam TypedParamType |
+  TypeMatch MatchType
+  deriving (Eq, Ord, Read, Show)
+
+_Type = Model.Name "hydra.scala.syntax.Type"
+
+_Type_ref = Model.Name "ref"
+
+_Type_anonymousName = Model.Name "anonymousName"
+
+_Type_apply = Model.Name "apply"
+
+_Type_applyInfix = Model.Name "applyInfix"
+
+_Type_function = Model.Name "function"
+
+_Type_contextFunction = Model.Name "contextFunction"
+
+_Type_polyFunction = Model.Name "polyFunction"
+
+_Type_implicitFunction = Model.Name "implicitFunction"
+
+_Type_tuple = Model.Name "tuple"
+
+_Type_with = Model.Name "with"
+
+_Type_and = Model.Name "and"
+
+_Type_or = Model.Name "or"
+
+_Type_refine = Model.Name "refine"
+
+_Type_existential = Model.Name "existential"
+
+_Type_annotate = Model.Name "annotate"
+
+_Type_lambda = Model.Name "lambda"
+
+_Type_method = Model.Name "method"
+
+_Type_placeholder = Model.Name "placeholder"
+
+_Type_byName = Model.Name "byName"
+
+_Type_repeated = Model.Name "repeated"
+
+_Type_var = Model.Name "var"
+
+_Type_typedParam = Model.Name "typedParam"
+
+_Type_match = Model.Name "match"
+
+data RefType =
+  RefTypeName NameType |
+  RefTypeSelect SelectType |
+  RefTypeProject ProjectType |
+  RefTypeSingleton SingletonType
+  deriving (Eq, Ord, Read, Show)
+
+_RefType = Model.Name "hydra.scala.syntax.RefType"
+
+_RefType_name = Model.Name "name"
+
+_RefType_select = Model.Name "select"
+
+_RefType_project = Model.Name "project"
+
+_RefType_singleton = Model.Name "singleton"
+
+data NameType =
+  NameType {
+    nameTypeValue :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_NameType = Model.Name "hydra.scala.syntax.NameType"
+
+_NameType_value = Model.Name "value"
+
+newtype AnonymousNameType =
+  AnonymousNameType {
+    unAnonymousNameType :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_AnonymousNameType = Model.Name "hydra.scala.syntax.AnonymousNameType"
+
+data SelectType =
+  SelectType {
+    selectTypeQual :: RefData,
+    selectTypeName :: NameType}
+  deriving (Eq, Ord, Read, Show)
+
+_SelectType = Model.Name "hydra.scala.syntax.SelectType"
+
+_SelectType_qual = Model.Name "qual"
+
+_SelectType_name = Model.Name "name"
+
+data ProjectType =
+  ProjectType {
+    projectTypeQual :: Type,
+    projectTypeName :: NameType}
+  deriving (Eq, Ord, Read, Show)
+
+_ProjectType = Model.Name "hydra.scala.syntax.ProjectType"
+
+_ProjectType_qual = Model.Name "qual"
+
+_ProjectType_name = Model.Name "name"
+
+data SingletonType =
+  SingletonType {
+    singletonTypeRef :: RefData}
+  deriving (Eq, Ord, Read, Show)
+
+_SingletonType = Model.Name "hydra.scala.syntax.SingletonType"
+
+_SingletonType_ref = Model.Name "ref"
+
+data ApplyType =
+  ApplyType {
+    applyTypeTpe :: Type,
+    applyTypeArgs :: [Type]}
+  deriving (Eq, Ord, Read, Show)
+
+_ApplyType = Model.Name "hydra.scala.syntax.ApplyType"
+
+_ApplyType_tpe = Model.Name "tpe"
+
+_ApplyType_args = Model.Name "args"
+
+data ApplyInfixType =
+  ApplyInfixType {
+    applyInfixTypeLhs :: Type,
+    applyInfixTypeOp :: NameType,
+    applyInfixTypeRhs :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_ApplyInfixType = Model.Name "hydra.scala.syntax.ApplyInfixType"
+
+_ApplyInfixType_lhs = Model.Name "lhs"
+
+_ApplyInfixType_op = Model.Name "op"
+
+_ApplyInfixType_rhs = Model.Name "rhs"
+
+data FunctionType =
+  FunctionType {
+    functionTypeParams :: [Type],
+    functionTypeRes :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_FunctionType = Model.Name "hydra.scala.syntax.FunctionType"
+
+_FunctionType_params = Model.Name "params"
+
+_FunctionType_res = Model.Name "res"
+
+data PolyFunctionType =
+  PolyFunctionType {
+    polyFunctionTypeTparams :: [ParamType],
+    polyFunctionTypeTpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_PolyFunctionType = Model.Name "hydra.scala.syntax.PolyFunctionType"
+
+_PolyFunctionType_tparams = Model.Name "tparams"
+
+_PolyFunctionType_tpe = Model.Name "tpe"
+
+data ContextFunctionType =
+  ContextFunctionType {
+    contextFunctionTypeParams :: [Type],
+    contextFunctionTypeRes :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_ContextFunctionType = Model.Name "hydra.scala.syntax.ContextFunctionType"
+
+_ContextFunctionType_params = Model.Name "params"
+
+_ContextFunctionType_res = Model.Name "res"
+
+data ImplicitFunctionType =
+  ImplicitFunctionType {
+    implicitFunctionTypeParams :: [Type],
+    implicitFunctionTypeRes :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_ImplicitFunctionType = Model.Name "hydra.scala.syntax.ImplicitFunctionType"
+
+_ImplicitFunctionType_params = Model.Name "params"
+
+_ImplicitFunctionType_res = Model.Name "res"
+
+data TupleType =
+  TupleType {
+    tupleTypeArgs :: [Type]}
+  deriving (Eq, Ord, Read, Show)
+
+_TupleType = Model.Name "hydra.scala.syntax.TupleType"
+
+_TupleType_args = Model.Name "args"
+
+data WithType =
+  WithType {
+    withTypeLhs :: Type,
+    withTypeRhs :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_WithType = Model.Name "hydra.scala.syntax.WithType"
+
+_WithType_lhs = Model.Name "lhs"
+
+_WithType_rhs = Model.Name "rhs"
+
+data AndType =
+  AndType {
+    andTypeLhs :: Type,
+    andTypeRhs :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_AndType = Model.Name "hydra.scala.syntax.AndType"
+
+_AndType_lhs = Model.Name "lhs"
+
+_AndType_rhs = Model.Name "rhs"
+
+data OrType =
+  OrType {
+    orTypeLhs :: Type,
+    orTypeRhs :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_OrType = Model.Name "hydra.scala.syntax.OrType"
+
+_OrType_lhs = Model.Name "lhs"
+
+_OrType_rhs = Model.Name "rhs"
+
+data RefineType =
+  RefineType {
+    refineTypeTpe :: (Maybe Type),
+    refineTypeStats :: [Stat]}
+  deriving (Eq, Ord, Read, Show)
+
+_RefineType = Model.Name "hydra.scala.syntax.RefineType"
+
+_RefineType_tpe = Model.Name "tpe"
+
+_RefineType_stats = Model.Name "stats"
+
+data ExistentialType =
+  ExistentialType {
+    existentialTypeTpe :: Type,
+    existentialTypeStats :: [Stat]}
+  deriving (Eq, Ord, Read, Show)
+
+_ExistentialType = Model.Name "hydra.scala.syntax.ExistentialType"
+
+_ExistentialType_tpe = Model.Name "tpe"
+
+_ExistentialType_stats = Model.Name "stats"
+
+data AnnotateType =
+  AnnotateType {
+    annotateTypeTpe :: Type,
+    annotateTypeAnnots :: [AnnotMod]}
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotateType = Model.Name "hydra.scala.syntax.AnnotateType"
+
+_AnnotateType_tpe = Model.Name "tpe"
+
+_AnnotateType_annots = Model.Name "annots"
+
+data LambdaType =
+  LambdaType {
+    lambdaTypeTparams :: [ParamType],
+    lambdaTypeTpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_LambdaType = Model.Name "hydra.scala.syntax.LambdaType"
+
+_LambdaType_tparams = Model.Name "tparams"
+
+_LambdaType_tpe = Model.Name "tpe"
+
+data MethodType =
+  MethodType {
+    methodTypeParamss :: [[ParamData]],
+    methodTypeTpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_MethodType = Model.Name "hydra.scala.syntax.MethodType"
+
+_MethodType_paramss = Model.Name "paramss"
+
+_MethodType_tpe = Model.Name "tpe"
+
+data PlaceholderType =
+  PlaceholderType {
+    placeholderTypeBounds :: TypeBounds}
+  deriving (Eq, Ord, Read, Show)
+
+_PlaceholderType = Model.Name "hydra.scala.syntax.PlaceholderType"
+
+_PlaceholderType_bounds = Model.Name "bounds"
+
+data TypeBounds =
+  TypeBounds {
+    typeBoundsLo :: (Maybe Type),
+    typeBoundsHi :: (Maybe Type)}
+  deriving (Eq, Ord, Read, Show)
+
+_TypeBounds = Model.Name "hydra.scala.syntax.TypeBounds"
+
+_TypeBounds_lo = Model.Name "lo"
+
+_TypeBounds_hi = Model.Name "hi"
+
+data ByNameType =
+  ByNameType {
+    byNameTypeTpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_ByNameType = Model.Name "hydra.scala.syntax.ByNameType"
+
+_ByNameType_tpe = Model.Name "tpe"
+
+data RepeatedType =
+  RepeatedType {
+    repeatedTypeTpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_RepeatedType = Model.Name "hydra.scala.syntax.RepeatedType"
+
+_RepeatedType_tpe = Model.Name "tpe"
+
+data VarType =
+  VarType {
+    varTypeName :: NameType}
+  deriving (Eq, Ord, Read, Show)
+
+_VarType = Model.Name "hydra.scala.syntax.VarType"
+
+_VarType_name = Model.Name "name"
+
+data TypedParamType =
+  TypedParamType {
+    typedParamTypeName :: Name,
+    typedParamTypeTyp :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_TypedParamType = Model.Name "hydra.scala.syntax.TypedParamType"
+
+_TypedParamType_name = Model.Name "name"
+
+_TypedParamType_typ = Model.Name "typ"
+
+data ParamType =
+  ParamType {
+    paramTypeMods :: [Mod],
+    paramTypeName :: Name,
+    paramTypeTparams :: [ParamType],
+    paramTypeTbounds :: [TypeBounds],
+    paramTypeVbounds :: [Type],
+    paramTypeCbounds :: [Type]}
+  deriving (Eq, Ord, Read, Show)
+
+_ParamType = Model.Name "hydra.scala.syntax.ParamType"
+
+_ParamType_mods = Model.Name "mods"
+
+_ParamType_name = Model.Name "name"
+
+_ParamType_tparams = Model.Name "tparams"
+
+_ParamType_tbounds = Model.Name "tbounds"
+
+_ParamType_vbounds = Model.Name "vbounds"
+
+_ParamType_cbounds = Model.Name "cbounds"
+
+data MatchType =
+  MatchType {
+    matchTypeTpe :: Type,
+    matchTypeCases :: [TypeCase]}
+  deriving (Eq, Ord, Read, Show)
+
+_MatchType = Model.Name "hydra.scala.syntax.MatchType"
+
+_MatchType_tpe = Model.Name "tpe"
+
+_MatchType_cases = Model.Name "cases"
+
+data Pat =
+  PatVar VarPat |
+  PatWildcard |
+  PatSeqWildcard |
+  PatBind BindPat |
+  PatAlternative AlternativePat |
+  PatTuple TuplePat |
+  PatRepeated RepeatedPat |
+  PatExtract ExtractPat |
+  PatExtractInfix ExtractInfixPat |
+  PatInterpolate InterpolatePat |
+  PatTyped TypedPat |
+  PatGiven GivenPat
+  deriving (Eq, Ord, Read, Show)
+
+_Pat = Model.Name "hydra.scala.syntax.Pat"
+
+_Pat_var = Model.Name "var"
+
+_Pat_wildcard = Model.Name "wildcard"
+
+_Pat_seqWildcard = Model.Name "seqWildcard"
+
+_Pat_bind = Model.Name "bind"
+
+_Pat_alternative = Model.Name "alternative"
+
+_Pat_tuple = Model.Name "tuple"
+
+_Pat_repeated = Model.Name "repeated"
+
+_Pat_extract = Model.Name "extract"
+
+_Pat_extractInfix = Model.Name "extractInfix"
+
+_Pat_interpolate = Model.Name "interpolate"
+
+_Pat_typed = Model.Name "typed"
+
+_Pat_given = Model.Name "given"
+
+data VarPat =
+  VarPat {
+    varPatName :: NameData}
+  deriving (Eq, Ord, Read, Show)
+
+_VarPat = Model.Name "hydra.scala.syntax.VarPat"
+
+_VarPat_name = Model.Name "name"
+
+data BindPat =
+  BindPat {
+    bindPatLhs :: Pat,
+    bindPatRhs :: Pat}
+  deriving (Eq, Ord, Read, Show)
+
+_BindPat = Model.Name "hydra.scala.syntax.BindPat"
+
+_BindPat_lhs = Model.Name "lhs"
+
+_BindPat_rhs = Model.Name "rhs"
+
+data AlternativePat =
+  AlternativePat {
+    alternativePatLhs :: Pat,
+    alternativePatRhs :: Pat}
+  deriving (Eq, Ord, Read, Show)
+
+_AlternativePat = Model.Name "hydra.scala.syntax.AlternativePat"
+
+_AlternativePat_lhs = Model.Name "lhs"
+
+_AlternativePat_rhs = Model.Name "rhs"
+
+data TuplePat =
+  TuplePat {
+    tuplePatArgs :: [Pat]}
+  deriving (Eq, Ord, Read, Show)
+
+_TuplePat = Model.Name "hydra.scala.syntax.TuplePat"
+
+_TuplePat_args = Model.Name "args"
+
+data RepeatedPat =
+  RepeatedPat {
+    repeatedPatName :: NameData}
+  deriving (Eq, Ord, Read, Show)
+
+_RepeatedPat = Model.Name "hydra.scala.syntax.RepeatedPat"
+
+_RepeatedPat_name = Model.Name "name"
+
+data ExtractPat =
+  ExtractPat {
+    extractPatFun :: Data,
+    extractPatArgs :: [Pat],
+    extractPatIsCall :: Bool}
+  deriving (Eq, Ord, Read, Show)
+
+_ExtractPat = Model.Name "hydra.scala.syntax.ExtractPat"
+
+_ExtractPat_fun = Model.Name "fun"
+
+_ExtractPat_args = Model.Name "args"
+
+_ExtractPat_isCall = Model.Name "isCall"
+
+data ExtractInfixPat =
+  ExtractInfixPat {
+    extractInfixPatLhs :: Pat,
+    extractInfixPatOp :: NameData,
+    extractInfixPatRhs :: [Pat]}
+  deriving (Eq, Ord, Read, Show)
+
+_ExtractInfixPat = Model.Name "hydra.scala.syntax.ExtractInfixPat"
+
+_ExtractInfixPat_lhs = Model.Name "lhs"
+
+_ExtractInfixPat_op = Model.Name "op"
+
+_ExtractInfixPat_rhs = Model.Name "rhs"
+
+data InterpolatePat =
+  InterpolatePat {
+    interpolatePatPrefix :: NameData,
+    interpolatePatParts :: [Lit]}
+  deriving (Eq, Ord, Read, Show)
+
+_InterpolatePat = Model.Name "hydra.scala.syntax.InterpolatePat"
+
+_InterpolatePat_prefix = Model.Name "prefix"
+
+_InterpolatePat_parts = Model.Name "parts"
+
+data TypedPat =
+  TypedPat {
+    typedPatLhs :: Pat,
+    typedPatRhs :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_TypedPat = Model.Name "hydra.scala.syntax.TypedPat"
+
+_TypedPat_lhs = Model.Name "lhs"
+
+_TypedPat_rhs = Model.Name "rhs"
+
+data GivenPat =
+  GivenPat {
+    givenPatTpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_GivenPat = Model.Name "hydra.scala.syntax.GivenPat"
+
+_GivenPat_tpe = Model.Name "tpe"
+
+data Member =
+  MemberTerm DataMember |
+  MemberType TypeMember |
+  MemberTermParam ParamData |
+  MemberTypeParam ParamType |
+  MemberSelf Self
+  deriving (Eq, Ord, Read, Show)
+
+_Member = Model.Name "hydra.scala.syntax.Member"
+
+_Member_term = Model.Name "term"
+
+_Member_type = Model.Name "type"
+
+_Member_termParam = Model.Name "termParam"
+
+_Member_typeParam = Model.Name "typeParam"
+
+_Member_self = Model.Name "self"
+
+data DataMember =
+  DataMemberPkg Pkg |
+  DataMemberObject ObjectPkg
+  deriving (Eq, Ord, Read, Show)
+
+_DataMember = Model.Name "hydra.scala.syntax.DataMember"
+
+_DataMember_pkg = Model.Name "pkg"
+
+_DataMember_object = Model.Name "object"
+
+data TypeMember =
+  TypeMember {
+    typeMemberName :: NameType}
+  deriving (Eq, Ord, Read, Show)
+
+_TypeMember = Model.Name "hydra.scala.syntax.TypeMember"
+
+_TypeMember_name = Model.Name "name"
+
+data Decl =
+  DeclVal ValDecl |
+  DeclVar VarDecl |
+  DeclDef DefDecl |
+  DeclType TypeDecl |
+  DeclGiven GivenDecl
+  deriving (Eq, Ord, Read, Show)
+
+_Decl = Model.Name "hydra.scala.syntax.Decl"
+
+_Decl_val = Model.Name "val"
+
+_Decl_var = Model.Name "var"
+
+_Decl_def = Model.Name "def"
+
+_Decl_type = Model.Name "type"
+
+_Decl_given = Model.Name "given"
+
+data ValDecl =
+  ValDecl {
+    valDeclMods :: [Mod],
+    valDeclPats :: [Pat],
+    valDeclDecltpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_ValDecl = Model.Name "hydra.scala.syntax.ValDecl"
+
+_ValDecl_mods = Model.Name "mods"
+
+_ValDecl_pats = Model.Name "pats"
+
+_ValDecl_decltpe = Model.Name "decltpe"
+
+data VarDecl =
+  VarDecl {
+    varDeclMods :: [Mod],
+    varDeclPats :: [Pat],
+    varDeclDecltpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_VarDecl = Model.Name "hydra.scala.syntax.VarDecl"
+
+_VarDecl_mods = Model.Name "mods"
+
+_VarDecl_pats = Model.Name "pats"
+
+_VarDecl_decltpe = Model.Name "decltpe"
+
+data DefDecl =
+  DefDecl {
+    defDeclMods :: [Mod],
+    defDeclName :: NameData,
+    defDeclTparams :: [ParamType],
+    defDeclParamss :: [[ParamData]],
+    defDeclDecltpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_DefDecl = Model.Name "hydra.scala.syntax.DefDecl"
+
+_DefDecl_mods = Model.Name "mods"
+
+_DefDecl_name = Model.Name "name"
+
+_DefDecl_tparams = Model.Name "tparams"
+
+_DefDecl_paramss = Model.Name "paramss"
+
+_DefDecl_decltpe = Model.Name "decltpe"
+
+data TypeDecl =
+  TypeDecl {
+    typeDeclMods :: [Mod],
+    typeDeclName :: NameType,
+    typeDeclTparams :: [ParamType],
+    typeDeclBounds :: TypeBounds}
+  deriving (Eq, Ord, Read, Show)
+
+_TypeDecl = Model.Name "hydra.scala.syntax.TypeDecl"
+
+_TypeDecl_mods = Model.Name "mods"
+
+_TypeDecl_name = Model.Name "name"
+
+_TypeDecl_tparams = Model.Name "tparams"
+
+_TypeDecl_bounds = Model.Name "bounds"
+
+data GivenDecl =
+  GivenDecl {
+    givenDeclMods :: [Mod],
+    givenDeclName :: NameData,
+    givenDeclTparams :: [ParamType],
+    givenDeclSparams :: [[ParamData]],
+    givenDeclDecltpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_GivenDecl = Model.Name "hydra.scala.syntax.GivenDecl"
+
+_GivenDecl_mods = Model.Name "mods"
+
+_GivenDecl_name = Model.Name "name"
+
+_GivenDecl_tparams = Model.Name "tparams"
+
+_GivenDecl_sparams = Model.Name "sparams"
+
+_GivenDecl_decltpe = Model.Name "decltpe"
+
+data Defn =
+  DefnVal ValDefn |
+  DefnVar VarDefn |
+  DefnGiven GivenDefn |
+  DefnEnum EnumDefn |
+  DefnEnumCase EnumCaseDefn |
+  DefnRepeatedEnumCase RepeatedEnumCaseDefn |
+  DefnGivenAlias GivenAliasDefn |
+  DefnExtensionGroup ExtensionGroupDefn |
+  DefnDef DefDefn |
+  DefnType TypeDefn |
+  DefnClass ClassDefn |
+  DefnTrait TraitDefn |
+  DefnObject ObjectDefn
+  deriving (Eq, Ord, Read, Show)
+
+_Defn = Model.Name "hydra.scala.syntax.Defn"
+
+_Defn_val = Model.Name "val"
+
+_Defn_var = Model.Name "var"
+
+_Defn_given = Model.Name "given"
+
+_Defn_enum = Model.Name "enum"
+
+_Defn_enumCase = Model.Name "enumCase"
+
+_Defn_repeatedEnumCase = Model.Name "repeatedEnumCase"
+
+_Defn_givenAlias = Model.Name "givenAlias"
+
+_Defn_extensionGroup = Model.Name "extensionGroup"
+
+_Defn_def = Model.Name "def"
+
+_Defn_type = Model.Name "type"
+
+_Defn_class = Model.Name "class"
+
+_Defn_trait = Model.Name "trait"
+
+_Defn_object = Model.Name "object"
+
+data ValDefn =
+  ValDefn {
+    valDefnMods :: [Mod],
+    valDefnPats :: [Pat],
+    valDefnDecltpe :: (Maybe Type),
+    valDefnRhs :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_ValDefn = Model.Name "hydra.scala.syntax.ValDefn"
+
+_ValDefn_mods = Model.Name "mods"
+
+_ValDefn_pats = Model.Name "pats"
+
+_ValDefn_decltpe = Model.Name "decltpe"
+
+_ValDefn_rhs = Model.Name "rhs"
+
+data VarDefn =
+  VarDefn {
+    varDefnMods :: [Mod],
+    varDefnPats :: [Pat],
+    varDefnDecltpe :: Type,
+    varDefnRhs :: (Maybe Data)}
+  deriving (Eq, Ord, Read, Show)
+
+_VarDefn = Model.Name "hydra.scala.syntax.VarDefn"
+
+_VarDefn_mods = Model.Name "mods"
+
+_VarDefn_pats = Model.Name "pats"
+
+_VarDefn_decltpe = Model.Name "decltpe"
+
+_VarDefn_rhs = Model.Name "rhs"
+
+data GivenDefn =
+  GivenDefn {
+    givenDefnMods :: [Mod],
+    givenDefnName :: Name,
+    givenDefnTparams :: [[ParamType]],
+    givenDefnSparams :: [[ParamData]],
+    givenDefnTempl :: Template}
+  deriving (Eq, Ord, Read, Show)
+
+_GivenDefn = Model.Name "hydra.scala.syntax.GivenDefn"
+
+_GivenDefn_mods = Model.Name "mods"
+
+_GivenDefn_name = Model.Name "name"
+
+_GivenDefn_tparams = Model.Name "tparams"
+
+_GivenDefn_sparams = Model.Name "sparams"
+
+_GivenDefn_templ = Model.Name "templ"
+
+data EnumDefn =
+  EnumDefn {
+    enumDefnMods :: [Mod],
+    enumDefnName :: NameType,
+    enumDefnTparams :: [ParamType],
+    enumDefnCtor :: PrimaryCtor,
+    enumDefnTemplate :: Template}
+  deriving (Eq, Ord, Read, Show)
+
+_EnumDefn = Model.Name "hydra.scala.syntax.EnumDefn"
+
+_EnumDefn_mods = Model.Name "mods"
+
+_EnumDefn_name = Model.Name "name"
+
+_EnumDefn_tparams = Model.Name "tparams"
+
+_EnumDefn_ctor = Model.Name "ctor"
+
+_EnumDefn_template = Model.Name "template"
+
+data EnumCaseDefn =
+  EnumCaseDefn {
+    enumCaseDefnMods :: [Mod],
+    enumCaseDefnName :: NameData,
+    enumCaseDefnTparams :: [ParamType],
+    enumCaseDefnCtor :: PrimaryCtor,
+    enumCaseDefnInits :: [Init]}
+  deriving (Eq, Ord, Read, Show)
+
+_EnumCaseDefn = Model.Name "hydra.scala.syntax.EnumCaseDefn"
+
+_EnumCaseDefn_mods = Model.Name "mods"
+
+_EnumCaseDefn_name = Model.Name "name"
+
+_EnumCaseDefn_tparams = Model.Name "tparams"
+
+_EnumCaseDefn_ctor = Model.Name "ctor"
+
+_EnumCaseDefn_inits = Model.Name "inits"
+
+data RepeatedEnumCaseDefn =
+  RepeatedEnumCaseDefn {
+    repeatedEnumCaseDefnMods :: [Mod],
+    repeatedEnumCaseDefnCases :: [NameData]}
+  deriving (Eq, Ord, Read, Show)
+
+_RepeatedEnumCaseDefn = Model.Name "hydra.scala.syntax.RepeatedEnumCaseDefn"
+
+_RepeatedEnumCaseDefn_mods = Model.Name "mods"
+
+_RepeatedEnumCaseDefn_cases = Model.Name "cases"
+
+data GivenAliasDefn =
+  GivenAliasDefn {
+    givenAliasDefnMods :: [Mod],
+    givenAliasDefnName :: Name,
+    givenAliasDefnTparams :: [[ParamType]],
+    givenAliasDefnSparams :: [[ParamData]],
+    givenAliasDefnDecltpe :: Type,
+    givenAliasDefnBody :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_GivenAliasDefn = Model.Name "hydra.scala.syntax.GivenAliasDefn"
+
+_GivenAliasDefn_mods = Model.Name "mods"
+
+_GivenAliasDefn_name = Model.Name "name"
+
+_GivenAliasDefn_tparams = Model.Name "tparams"
+
+_GivenAliasDefn_sparams = Model.Name "sparams"
+
+_GivenAliasDefn_decltpe = Model.Name "decltpe"
+
+_GivenAliasDefn_body = Model.Name "body"
+
+data ExtensionGroupDefn =
+  ExtensionGroupDefn {
+    extensionGroupDefnTparams :: [ParamType],
+    extensionGroupDefnParmss :: [[ParamData]],
+    extensionGroupDefnBody :: Stat}
+  deriving (Eq, Ord, Read, Show)
+
+_ExtensionGroupDefn = Model.Name "hydra.scala.syntax.ExtensionGroupDefn"
+
+_ExtensionGroupDefn_tparams = Model.Name "tparams"
+
+_ExtensionGroupDefn_parmss = Model.Name "parmss"
+
+_ExtensionGroupDefn_body = Model.Name "body"
+
+data DefDefn =
+  DefDefn {
+    defDefnMods :: [Mod],
+    defDefnName :: NameData,
+    defDefnTparams :: [ParamType],
+    defDefnParamss :: [[ParamData]],
+    defDefnDecltpe :: (Maybe Type),
+    defDefnBody :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_DefDefn = Model.Name "hydra.scala.syntax.DefDefn"
+
+_DefDefn_mods = Model.Name "mods"
+
+_DefDefn_name = Model.Name "name"
+
+_DefDefn_tparams = Model.Name "tparams"
+
+_DefDefn_paramss = Model.Name "paramss"
+
+_DefDefn_decltpe = Model.Name "decltpe"
+
+_DefDefn_body = Model.Name "body"
+
+data TypeDefn =
+  TypeDefn {
+    typeDefnMods :: [Mod],
+    typeDefnName :: NameType,
+    typeDefnTparams :: [ParamType],
+    typeDefnBody :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_TypeDefn = Model.Name "hydra.scala.syntax.TypeDefn"
+
+_TypeDefn_mods = Model.Name "mods"
+
+_TypeDefn_name = Model.Name "name"
+
+_TypeDefn_tparams = Model.Name "tparams"
+
+_TypeDefn_body = Model.Name "body"
+
+data ClassDefn =
+  ClassDefn {
+    classDefnMods :: [Mod],
+    classDefnName :: NameType,
+    classDefnTparams :: [ParamType],
+    classDefnCtor :: PrimaryCtor,
+    classDefnTemplate :: Template}
+  deriving (Eq, Ord, Read, Show)
+
+_ClassDefn = Model.Name "hydra.scala.syntax.ClassDefn"
+
+_ClassDefn_mods = Model.Name "mods"
+
+_ClassDefn_name = Model.Name "name"
+
+_ClassDefn_tparams = Model.Name "tparams"
+
+_ClassDefn_ctor = Model.Name "ctor"
+
+_ClassDefn_template = Model.Name "template"
+
+data TraitDefn =
+  TraitDefn {
+    traitDefnMods :: [Mod],
+    traitDefnName :: NameType,
+    traitDefnTparams :: [ParamType],
+    traitDefnCtor :: PrimaryCtor,
+    traitDefnTemplate :: Template}
+  deriving (Eq, Ord, Read, Show)
+
+_TraitDefn = Model.Name "hydra.scala.syntax.TraitDefn"
+
+_TraitDefn_mods = Model.Name "mods"
+
+_TraitDefn_name = Model.Name "name"
+
+_TraitDefn_tparams = Model.Name "tparams"
+
+_TraitDefn_ctor = Model.Name "ctor"
+
+_TraitDefn_template = Model.Name "template"
+
+data ObjectDefn =
+  ObjectDefn {
+    objectDefnName :: NameData}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectDefn = Model.Name "hydra.scala.syntax.ObjectDefn"
+
+_ObjectDefn_name = Model.Name "name"
+
+data Pkg =
+  Pkg {
+    pkgName :: NameData,
+    pkgRef :: RefData,
+    pkgStats :: [Stat]}
+  deriving (Eq, Ord, Read, Show)
+
+_Pkg = Model.Name "hydra.scala.syntax.Pkg"
+
+_Pkg_name = Model.Name "name"
+
+_Pkg_ref = Model.Name "ref"
+
+_Pkg_stats = Model.Name "stats"
+
+data ObjectPkg =
+  ObjectPkg {
+    objectPkgMods :: [Mod],
+    objectPkgName :: NameData,
+    objectPkgTemplate :: Template}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectPkg = Model.Name "hydra.scala.syntax.ObjectPkg"
+
+_ObjectPkg_mods = Model.Name "mods"
+
+_ObjectPkg_name = Model.Name "name"
+
+_ObjectPkg_template = Model.Name "template"
+
+data Ctor =
+  CtorPrimary PrimaryCtor |
+  CtorSecondary SecondaryCtor
+  deriving (Eq, Ord, Read, Show)
+
+_Ctor = Model.Name "hydra.scala.syntax.Ctor"
+
+_Ctor_primary = Model.Name "primary"
+
+_Ctor_secondary = Model.Name "secondary"
+
+data PrimaryCtor =
+  PrimaryCtor {
+    primaryCtorMods :: [Mod],
+    primaryCtorName :: Name,
+    primaryCtorParamss :: [[ParamData]]}
+  deriving (Eq, Ord, Read, Show)
+
+_PrimaryCtor = Model.Name "hydra.scala.syntax.PrimaryCtor"
+
+_PrimaryCtor_mods = Model.Name "mods"
+
+_PrimaryCtor_name = Model.Name "name"
+
+_PrimaryCtor_paramss = Model.Name "paramss"
+
+data SecondaryCtor =
+  SecondaryCtor {
+    secondaryCtorMods :: [Mod],
+    secondaryCtorName :: Name,
+    secondaryCtorParamss :: [[ParamData]],
+    secondaryCtorInit :: Init,
+    secondaryCtorStats :: [Stat]}
+  deriving (Eq, Ord, Read, Show)
+
+_SecondaryCtor = Model.Name "hydra.scala.syntax.SecondaryCtor"
+
+_SecondaryCtor_mods = Model.Name "mods"
+
+_SecondaryCtor_name = Model.Name "name"
+
+_SecondaryCtor_paramss = Model.Name "paramss"
+
+_SecondaryCtor_init = Model.Name "init"
+
+_SecondaryCtor_stats = Model.Name "stats"
+
+data Init =
+  Init {
+    initTpe :: Type,
+    initName :: Name,
+    initArgss :: [[Data]]}
+  deriving (Eq, Ord, Read, Show)
+
+_Init = Model.Name "hydra.scala.syntax.Init"
+
+_Init_tpe = Model.Name "tpe"
+
+_Init_name = Model.Name "name"
+
+_Init_argss = Model.Name "argss"
+
+newtype Self =
+  Self {
+    unSelf :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_Self = Model.Name "hydra.scala.syntax.Self"
+
+data Template =
+  Template {
+    templateEarly :: [Stat],
+    templateInits :: [Init],
+    templateSelf :: Self,
+    templateStats :: [Stat]}
+  deriving (Eq, Ord, Read, Show)
+
+_Template = Model.Name "hydra.scala.syntax.Template"
+
+_Template_early = Model.Name "early"
+
+_Template_inits = Model.Name "inits"
+
+_Template_self = Model.Name "self"
+
+_Template_stats = Model.Name "stats"
+
+data Mod =
+  ModAnnot AnnotMod |
+  ModPrivate PrivateMod |
+  ModProtected ProtectedMod |
+  ModImplicit |
+  ModFinal |
+  ModSealed |
+  ModOpen |
+  ModSuper |
+  ModOverride |
+  ModCase |
+  ModAbstract |
+  ModCovariant |
+  ModContravariant |
+  ModLazy |
+  ModValParam |
+  ModVarParam |
+  ModInfix |
+  ModInline |
+  ModUsing |
+  ModOpaque |
+  ModTransparent
+  deriving (Eq, Ord, Read, Show)
+
+_Mod = Model.Name "hydra.scala.syntax.Mod"
+
+_Mod_annot = Model.Name "annot"
+
+_Mod_private = Model.Name "private"
+
+_Mod_protected = Model.Name "protected"
+
+_Mod_implicit = Model.Name "implicit"
+
+_Mod_final = Model.Name "final"
+
+_Mod_sealed = Model.Name "sealed"
+
+_Mod_open = Model.Name "open"
+
+_Mod_super = Model.Name "super"
+
+_Mod_override = Model.Name "override"
+
+_Mod_case = Model.Name "case"
+
+_Mod_abstract = Model.Name "abstract"
+
+_Mod_covariant = Model.Name "covariant"
+
+_Mod_contravariant = Model.Name "contravariant"
+
+_Mod_lazy = Model.Name "lazy"
+
+_Mod_valParam = Model.Name "valParam"
+
+_Mod_varParam = Model.Name "varParam"
+
+_Mod_infix = Model.Name "infix"
+
+_Mod_inline = Model.Name "inline"
+
+_Mod_using = Model.Name "using"
+
+_Mod_opaque = Model.Name "opaque"
+
+_Mod_transparent = Model.Name "transparent"
+
+data AnnotMod =
+  AnnotMod {
+    annotModInit :: Init}
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotMod = Model.Name "hydra.scala.syntax.AnnotMod"
+
+_AnnotMod_init = Model.Name "init"
+
+data PrivateMod =
+  PrivateMod {
+    privateModWithin :: Ref}
+  deriving (Eq, Ord, Read, Show)
+
+_PrivateMod = Model.Name "hydra.scala.syntax.PrivateMod"
+
+_PrivateMod_within = Model.Name "within"
+
+data ProtectedMod =
+  ProtectedMod {
+    protectedModWithin :: Ref}
+  deriving (Eq, Ord, Read, Show)
+
+_ProtectedMod = Model.Name "hydra.scala.syntax.ProtectedMod"
+
+_ProtectedMod_within = Model.Name "within"
+
+data Enumerator =
+  EnumeratorGenerator GeneratorEnumerator |
+  EnumeratorCaseGenerator CaseGeneratorEnumerator |
+  EnumeratorVal ValEnumerator |
+  EnumeratorGuard GuardEnumerator
+  deriving (Eq, Ord, Read, Show)
+
+_Enumerator = Model.Name "hydra.scala.syntax.Enumerator"
+
+_Enumerator_generator = Model.Name "generator"
+
+_Enumerator_caseGenerator = Model.Name "caseGenerator"
+
+_Enumerator_val = Model.Name "val"
+
+_Enumerator_guard = Model.Name "guard"
+
+data GeneratorEnumerator =
+  GeneratorEnumerator {
+    generatorEnumeratorPat :: Pat,
+    generatorEnumeratorRhs :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_GeneratorEnumerator = Model.Name "hydra.scala.syntax.GeneratorEnumerator"
+
+_GeneratorEnumerator_pat = Model.Name "pat"
+
+_GeneratorEnumerator_rhs = Model.Name "rhs"
+
+data CaseGeneratorEnumerator =
+  CaseGeneratorEnumerator {
+    caseGeneratorEnumeratorPat :: Pat,
+    caseGeneratorEnumeratorRhs :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_CaseGeneratorEnumerator = Model.Name "hydra.scala.syntax.CaseGeneratorEnumerator"
+
+_CaseGeneratorEnumerator_pat = Model.Name "pat"
+
+_CaseGeneratorEnumerator_rhs = Model.Name "rhs"
+
+data ValEnumerator =
+  ValEnumerator {
+    valEnumeratorPat :: Pat,
+    valEnumeratorRhs :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_ValEnumerator = Model.Name "hydra.scala.syntax.ValEnumerator"
+
+_ValEnumerator_pat = Model.Name "pat"
+
+_ValEnumerator_rhs = Model.Name "rhs"
+
+data GuardEnumerator =
+  GuardEnumerator {
+    guardEnumeratorCond :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_GuardEnumerator = Model.Name "hydra.scala.syntax.GuardEnumerator"
+
+_GuardEnumerator_cond = Model.Name "cond"
+
+data ImportExportStat =
+  ImportExportStatImport Import |
+  ImportExportStatExport Export
+  deriving (Eq, Ord, Read, Show)
+
+_ImportExportStat = Model.Name "hydra.scala.syntax.ImportExportStat"
+
+_ImportExportStat_import = Model.Name "import"
+
+_ImportExportStat_export = Model.Name "export"
+
+data Import =
+  Import {
+    importImporters :: [Importer]}
+  deriving (Eq, Ord, Read, Show)
+
+_Import = Model.Name "hydra.scala.syntax.Import"
+
+_Import_importers = Model.Name "importers"
+
+data Export =
+  Export {
+    exportImporters :: [Importer]}
+  deriving (Eq, Ord, Read, Show)
+
+_Export = Model.Name "hydra.scala.syntax.Export"
+
+_Export_importers = Model.Name "importers"
+
+data Importer =
+  Importer {
+    importerRef :: RefData,
+    importerImportees :: [Importee]}
+  deriving (Eq, Ord, Read, Show)
+
+_Importer = Model.Name "hydra.scala.syntax.Importer"
+
+_Importer_ref = Model.Name "ref"
+
+_Importer_importees = Model.Name "importees"
+
+data Importee =
+  ImporteeWildcard |
+  ImporteeGiven GivenImportee |
+  ImporteeGivenAll |
+  ImporteeName NameImportee |
+  ImporteeRename RenameImportee |
+  ImporteeUnimport UnimportImportee
+  deriving (Eq, Ord, Read, Show)
+
+_Importee = Model.Name "hydra.scala.syntax.Importee"
+
+_Importee_wildcard = Model.Name "wildcard"
+
+_Importee_given = Model.Name "given"
+
+_Importee_givenAll = Model.Name "givenAll"
+
+_Importee_name = Model.Name "name"
+
+_Importee_rename = Model.Name "rename"
+
+_Importee_unimport = Model.Name "unimport"
+
+data GivenImportee =
+  GivenImportee {
+    givenImporteeTpe :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_GivenImportee = Model.Name "hydra.scala.syntax.GivenImportee"
+
+_GivenImportee_tpe = Model.Name "tpe"
+
+data NameImportee =
+  NameImportee {
+    nameImporteeName :: Name}
+  deriving (Eq, Ord, Read, Show)
+
+_NameImportee = Model.Name "hydra.scala.syntax.NameImportee"
+
+_NameImportee_name = Model.Name "name"
+
+data RenameImportee =
+  RenameImportee {
+    renameImporteeName :: Name,
+    renameImporteeRename :: Name}
+  deriving (Eq, Ord, Read, Show)
+
+_RenameImportee = Model.Name "hydra.scala.syntax.RenameImportee"
+
+_RenameImportee_name = Model.Name "name"
+
+_RenameImportee_rename = Model.Name "rename"
+
+data UnimportImportee =
+  UnimportImportee {
+    unimportImporteeName :: Name}
+  deriving (Eq, Ord, Read, Show)
+
+_UnimportImportee = Model.Name "hydra.scala.syntax.UnimportImportee"
+
+_UnimportImportee_name = Model.Name "name"
+
+data CaseTree =
+  CaseTreeCase Case |
+  CaseTreeTypeCase TypeCase
+  deriving (Eq, Ord, Read, Show)
+
+_CaseTree = Model.Name "hydra.scala.syntax.CaseTree"
+
+_CaseTree_case = Model.Name "case"
+
+_CaseTree_typeCase = Model.Name "typeCase"
+
+data Case =
+  Case {
+    casePat :: Pat,
+    caseCond :: (Maybe Data),
+    caseBody :: Data}
+  deriving (Eq, Ord, Read, Show)
+
+_Case = Model.Name "hydra.scala.syntax.Case"
+
+_Case_pat = Model.Name "pat"
+
+_Case_cond = Model.Name "cond"
+
+_Case_body = Model.Name "body"
+
+data TypeCase =
+  TypeCase {
+    typeCasePat :: Type,
+    typeCaseBody :: Type}
+  deriving (Eq, Ord, Read, Show)
+
+_TypeCase = Model.Name "hydra.scala.syntax.TypeCase"
+
+_TypeCase_pat = Model.Name "pat"
+
+_TypeCase_body = Model.Name "body"
+
+data Source =
+  Source {
+    sourceStats :: [Stat]}
+  deriving (Eq, Ord, Read, Show)
+
+_Source = Model.Name "hydra.scala.syntax.Source"
+
+_Source_stats = Model.Name "stats"
diff --git a/src/main/haskell/Hydra/Scala/Utils.hs b/src/main/haskell/Hydra/Scala/Utils.hs
--- a/src/main/haskell/Hydra/Scala/Utils.hs
+++ b/src/main/haskell/Hydra/Scala/Utils.hs
@@ -4,64 +4,64 @@
 
 module Hydra.Scala.Utils where
 
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Docs as Docs
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.File as ErrorFile
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Error.System as ErrorSystem
-import qualified Hydra.Errors as Errors
-import qualified Hydra.File as File
-import qualified Hydra.Formatting as Formatting
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Json.Model as Model
-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality
-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists
-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic
-import qualified Hydra.Overlay.Haskell.Lib.Math as Math
-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals
-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering
-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets
-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings
-import qualified Hydra.Names as Names
-import qualified Hydra.Packaging as Packaging
-import qualified Hydra.Parsing as Parsing
-import qualified Hydra.Paths as Paths
-import qualified Hydra.Query as Query
-import qualified Hydra.Relational as Relational
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Docs as Docs
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.File as ErrorFile
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Error.System as ErrorSystem
+import qualified Hydra.Core.Errors as Errors
+import qualified Hydra.Core.File as File
+import qualified Hydra.Core.Formatting as Formatting
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Json.Model as JsonModel
+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality
+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists
+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic
+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math
+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering
+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets
+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Names as Names
+import qualified Hydra.Core.Packaging as Packaging
+import qualified Hydra.Core.Parsing as Parsing
+import qualified Hydra.Core.Paths as Paths
+import qualified Hydra.Core.Query as Query
+import qualified Hydra.Core.Relational as Relational
+import qualified Hydra.Core.Strip as Strip
+import qualified Hydra.Core.System as System
+import qualified Hydra.Core.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+import qualified Hydra.Core.Time as Time
+import qualified Hydra.Core.Topology as Topology
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Core.Typing as Typing
+import qualified Hydra.Core.Util as Util
+import qualified Hydra.Core.Validation as Validation
+import qualified Hydra.Core.Variants as Variants
 import qualified Hydra.Scala.Language as Language
 import qualified Hydra.Scala.Syntax as Syntax
-import qualified Hydra.Strip as Strip
-import qualified Hydra.System as System
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-import qualified Hydra.Time as Time
-import qualified Hydra.Topology as Topology
-import qualified Hydra.Typed as Typed
-import qualified Hydra.Typing as Typing
-import qualified Hydra.Util as Util
-import qualified Hydra.Validation as Validation
-import qualified Hydra.Variants as Variants
 import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
 import qualified Data.Scientific as Sci
 import Data.Void
 import qualified Data.Set as S
 
 -- | Extract the name from a type, if it is a named type
-nameOfType :: t0 -> Core.Type -> Maybe Core.Name
+nameOfType :: t0 -> Model.Type -> Maybe Model.Name
 nameOfType cx t =
     case (Strip.deannotateType t) of
-      Core.TypeVariable v0 -> Just v0
-      Core.TypeForall v0 -> nameOfType cx (Core.forallTypeBody v0)
+      Model.TypeVariable v0 -> Just v0
+      Model.TypeForall v0 -> nameOfType cx (Model.forallTypeBody v0)
       _ -> Nothing
 
 -- | Qualify a union field name, optionally prefixing with the Scala type name
-qualifyUnionFieldName :: String -> Maybe Core.Name -> Core.Name -> String
+qualifyUnionFieldName :: String -> Maybe Model.Name -> Model.Name -> String
 qualifyUnionFieldName dlft sname fname =
-    Strings.concat2 (Optionals.match sname dlft (\n -> Strings.concat2 (scalaTypeName True n) ".")) (scalaEscapeName (Core.unName fname))
+    Strings.concat2 (Optionals.match sname dlft (\n -> Strings.concat2 (scalaTypeName True n) ".")) (scalaEscapeName (Model.unName fname))
 
 -- | Apply a Scala data expression to a list of arguments
 sapply :: Syntax.Data -> [Syntax.Data] -> Syntax.Data
@@ -132,9 +132,9 @@
 scalaReservedWords = Language.scalaReservedWords
 
 -- | Convert a Hydra name to a Scala type name
-scalaTypeName :: Bool -> Core.Name -> String
+scalaTypeName :: Bool -> Model.Name -> String
 scalaTypeName qualify name =
-    Logic.ifElse (Logic.or qualify (Sets.member (Names.localNameOf name) scalaReservedWords)) (Core.unName name) (Names.localNameOf name)
+    Logic.ifElse (Logic.or qualify (Sets.member (Names.localNameOf name) scalaReservedWords)) (Model.unName name) (Names.localNameOf name)
 
 -- | Create a Scala lambda (function) expression
 slambda :: String -> Syntax.Data -> Maybe Syntax.Type -> Syntax.Data
@@ -153,19 +153,20 @@
 sname s = Syntax.DataRef (Syntax.RefDataName (Syntax.NameData {
   Syntax.nameDataValue = (Syntax.PredefString s)}))
 
--- | Create a Scala primitive reference from a Hydra name, redirecting hydra.lib.<sub>.<local> to hydra.overlay.scala.lib.<sub>.<local> when <sub> has an overlay implementation on this host (#630 -- the on-disk overlaySubs existence signal). Unlike toPrimImport (which redirects a bare hydra.lib.<sub> MODULE name, always exactly 3 segments), a primitive reference is hydra.lib.<sub>.<local> -- at least 4 segments, since it also carries the primitive's own local name -- so the sub to check against overlaySubs is parts[2] alone, not the whole post-prefix tail (#635).
-sprim :: S.Set String -> Core.Name -> Syntax.Data
+-- | Create a Scala primitive reference from a Hydra name, redirecting hydra.core.lib.<sub>.<local> to hydra.core.overlay.scala.lib.<sub>.<local> when <sub> has an overlay implementation on this host (#630 -- the on-disk overlaySubs existence signal). Unlike toPrimImport (which redirects a bare hydra.core.lib.<sub> MODULE name, always exactly 4 segments post-#729), a primitive reference is hydra.core.lib.<sub>.<local> -- at least 5 segments, since it also carries the primitive's own local name -- so the sub to check against overlaySubs is parts[3] alone, not the whole post-prefix tail (#635, #729).
+sprim :: S.Set String -> Model.Name -> Syntax.Data
 sprim overlaySubs name =
 
-      let raw = Core.unName name
+      let raw = Model.unName name
           parts = Strings.splitOn "." raw
-          sub = Strings.join "." (Lists.drop 2 parts)
-          subHead = Optionals.withDefault "" (Lists.at 2 parts)
+          sub = Strings.join "." (Lists.drop 3 parts)
+          subHead = Optionals.withDefault "" (Lists.at 3 parts)
           redirectedRaw =
-                  Logic.ifElse (Logic.and (Logic.and (Ordering.gte (Lists.length parts) 4) (Equality.equal (Lists.take 2 parts) [
+                  Logic.ifElse (Logic.and (Logic.and (Ordering.gte (Lists.length parts) 5) (Equality.equal (Lists.take 3 parts) [
                     "hydra",
-                    "lib"])) (Sets.member subHead overlaySubs)) (Strings.concat2 "hydra.overlay.scala.lib." sub) raw
-          redirectedName = Core.Name redirectedRaw
+                    "core",
+                    "lib"])) (Sets.member subHead overlaySubs)) (Strings.concat2 "hydra.core.overlay.scala.lib." sub) raw
+          redirectedName = Model.Name redirectedRaw
           qname = Names.qualifyName redirectedName
           prefix = Packaging.unModuleName (Optionals.withDefault (Packaging.ModuleName "") (Util.qualifiedNameModuleName qname))
           local = scalaEscapeName (Util.qualifiedNameLocal qname)
@@ -191,10 +192,10 @@
       t3]
 
 -- | Create a Scala type parameter from a Hydra name, capitalizing to avoid collision with value params
-stparam :: Core.Name -> Syntax.ParamType
+stparam :: Model.Name -> Syntax.ParamType
 stparam name =
 
-      let v = Formatting.capitalize (Core.unName name)
+      let v = Formatting.capitalize (Model.unName name)
       in Syntax.ParamType {
         Syntax.paramTypeMods = [],
         Syntax.paramTypeName = (Syntax.NameValue v),
@@ -209,10 +210,10 @@
   Syntax.nameTypeValue = s}))
 
 -- | Create a Scala pattern variable
-svar :: Core.Name -> Syntax.Pat
+svar :: Model.Name -> Syntax.Pat
 svar name =
 
-      let v = Core.unName name
+      let v = Model.unName name
       in (Syntax.PatVar (Syntax.VarPat {
         Syntax.varPatName = Syntax.NameData {
           Syntax.nameDataValue = (Syntax.PredefString v)}}))
