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-python.cabal b/hydra-python.cabal
--- a/hydra-python.cabal
+++ b/hydra-python.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           hydra-python
-version:        0.17.7
+version:        0.18.0
 synopsis:       Hydra's Python coder: emit Python 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". Python support for Hydra
 category:       Data
@@ -27,11 +27,11 @@
 
 library
   exposed-modules:
-      Hydra.Dsl.Python.Environment
-      Hydra.Dsl.Python.Names
-      Hydra.Dsl.Python.Syntax
-      Hydra.Dsl.Python.Utils
       Hydra.Python.Coder
+      Hydra.Python.Dsl.Environment
+      Hydra.Python.Dsl.Names
+      Hydra.Python.Dsl.Syntax
+      Hydra.Python.Dsl.Utils
       Hydra.Python.Environment
       Hydra.Python.Language
       Hydra.Python.Names
@@ -47,6 +47,6 @@
   build-depends:
       base >=4.19.0 && <4.22
     , containers >=0.6.7 && <0.8
-    , hydra-kernel ==0.17.7
+    , hydra-kernel ==0.18.0
     , scientific >=0.3.7 && <0.4
   default-language: Haskell2010
diff --git a/src/main/haskell/Hydra/Dsl/Python/Environment.hs b/src/main/haskell/Hydra/Dsl/Python/Environment.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Dsl/Python/Environment.hs
+++ /dev/null
@@ -1,4749 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | DSL functions for hydra.python.environment
-
-module Hydra.Dsl.Python.Environment where
-
-import qualified Hydra.Core as Core
-import qualified Hydra.Dsl.Python.Syntax as PythonSyntax
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Packaging as Packaging
-import qualified Hydra.Python.Environment as Environment
-import qualified Hydra.Python.Syntax as Syntax
-import qualified Hydra.Typed as Typed
-import qualified Hydra.Typing as Typing
-import qualified Hydra.Util as Util
-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.Map as M
-import qualified Data.Set as S
-
--- | DSL constructor for hydra.python.environment.PyGraph
-pyGraph :: Typed.TypedTerm Graph.Graph -> Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Environment.PyGraph
-pyGraph graph metadata =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PyGraph"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Typed.unTypedTerm graph)},
-        Core.Field {
-          Core.fieldName = (Core.Name "metadata"),
-          Core.fieldTerm = (Typed.unTypedTerm metadata)}]}))
-
--- | DSL accessor for the graph field of hydra.python.environment.PyGraph
-pyGraphGraph :: Typed.TypedTerm Environment.PyGraph -> Typed.TypedTerm Graph.Graph
-pyGraphGraph x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PyGraph"),
-        Core.projectionFieldName = (Core.Name "graph")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the metadata field of hydra.python.environment.PyGraph
-pyGraphMetadata :: Typed.TypedTerm Environment.PyGraph -> Typed.TypedTerm Environment.PythonModuleMetadata
-pyGraphMetadata x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PyGraph"),
-        Core.projectionFieldName = (Core.Name "metadata")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.environment.PyGraph
-pyGraphPyGraph :: Typed.TypedName Environment.PyGraph
-pyGraphPyGraph = Typed.TypedName (Core.Name "hydra.python.environment.PyGraph")
-
--- | DSL updater for the graph field of hydra.python.environment.PyGraph
-pyGraphWithGraph :: Typed.TypedTerm Environment.PyGraph -> Typed.TypedTerm Graph.Graph -> Typed.TypedTerm Environment.PyGraph
-pyGraphWithGraph original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PyGraph"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "metadata"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PyGraph"),
-              Core.projectionFieldName = (Core.Name "metadata")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the metadata field of hydra.python.environment.PyGraph
-pyGraphWithMetadata :: Typed.TypedTerm Environment.PyGraph -> Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Environment.PyGraph
-pyGraphWithMetadata original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PyGraph"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PyGraph"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "metadata"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.environment.PythonEnvironment
-pythonEnvironment :: Typed.TypedTerm (Util.ModuleNames Syntax.DottedName) -> Typed.TypedTerm ([Core.Name], (M.Map Core.Name Syntax.Name)) -> Typed.TypedTerm Graph.Graph -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.PythonVersion -> Typed.TypedTerm Bool -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Environment.PythonEnvironment
-pythonEnvironment namespaces boundTypeVariables graph nullaryBindings version skipCasts inlineVariables overlaySubs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Typed.unTypedTerm namespaces)},
-        Core.Field {
-          Core.fieldName = (Core.Name "boundTypeVariables"),
-          Core.fieldTerm = (Typed.unTypedTerm boundTypeVariables)},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Typed.unTypedTerm graph)},
-        Core.Field {
-          Core.fieldName = (Core.Name "nullaryBindings"),
-          Core.fieldTerm = (Typed.unTypedTerm nullaryBindings)},
-        Core.Field {
-          Core.fieldName = (Core.Name "version"),
-          Core.fieldTerm = (Typed.unTypedTerm version)},
-        Core.Field {
-          Core.fieldName = (Core.Name "skipCasts"),
-          Core.fieldTerm = (Typed.unTypedTerm skipCasts)},
-        Core.Field {
-          Core.fieldName = (Core.Name "inlineVariables"),
-          Core.fieldTerm = (Typed.unTypedTerm inlineVariables)},
-        Core.Field {
-          Core.fieldName = (Core.Name "overlaySubs"),
-          Core.fieldTerm = (Typed.unTypedTerm overlaySubs)}]}))
-
--- | DSL accessor for the boundTypeVariables field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentBoundTypeVariables :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm ([Core.Name], (M.Map Core.Name Syntax.Name))
-pythonEnvironmentBoundTypeVariables x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-        Core.projectionFieldName = (Core.Name "boundTypeVariables")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the graph field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentGraph :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Graph.Graph
-pythonEnvironmentGraph x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-        Core.projectionFieldName = (Core.Name "graph")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the inlineVariables field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentInlineVariables :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set Core.Name)
-pythonEnvironmentInlineVariables x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-        Core.projectionFieldName = (Core.Name "inlineVariables")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the namespaces field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentNamespaces :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (Util.ModuleNames Syntax.DottedName)
-pythonEnvironmentNamespaces x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-        Core.projectionFieldName = (Core.Name "namespaces")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the nullaryBindings field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentNullaryBindings :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set Core.Name)
-pythonEnvironmentNullaryBindings x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-        Core.projectionFieldName = (Core.Name "nullaryBindings")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the overlaySubs field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentOverlaySubs :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set String)
-pythonEnvironmentOverlaySubs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-        Core.projectionFieldName = (Core.Name "overlaySubs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.environment.PythonEnvironment
-pythonEnvironmentPythonEnvironment :: Typed.TypedName Environment.PythonEnvironment
-pythonEnvironmentPythonEnvironment = Typed.TypedName (Core.Name "hydra.python.environment.PythonEnvironment")
-
--- | DSL accessor for the skipCasts field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentSkipCasts :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Bool
-pythonEnvironmentSkipCasts x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-        Core.projectionFieldName = (Core.Name "skipCasts")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the version field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentVersion :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Environment.PythonVersion
-pythonEnvironmentVersion x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-        Core.projectionFieldName = (Core.Name "version")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the boundTypeVariables field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentWithBoundTypeVariables :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm ([Core.Name], (M.Map Core.Name Syntax.Name)) -> Typed.TypedTerm Environment.PythonEnvironment
-pythonEnvironmentWithBoundTypeVariables original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "boundTypeVariables"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "nullaryBindings"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "nullaryBindings")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "version"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "version")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "skipCasts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "skipCasts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inlineVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "inlineVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "overlaySubs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "overlaySubs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the graph field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentWithGraph :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Graph.Graph -> Typed.TypedTerm Environment.PythonEnvironment
-pythonEnvironmentWithGraph original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "boundTypeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "boundTypeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "nullaryBindings"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "nullaryBindings")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "version"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "version")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "skipCasts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "skipCasts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inlineVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "inlineVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "overlaySubs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "overlaySubs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the inlineVariables field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentWithInlineVariables :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.PythonEnvironment
-pythonEnvironmentWithInlineVariables original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "boundTypeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "boundTypeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "nullaryBindings"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "nullaryBindings")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "version"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "version")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "skipCasts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "skipCasts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inlineVariables"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "overlaySubs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "overlaySubs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the namespaces field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentWithNamespaces :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (Util.ModuleNames Syntax.DottedName) -> Typed.TypedTerm Environment.PythonEnvironment
-pythonEnvironmentWithNamespaces original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "boundTypeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "boundTypeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "nullaryBindings"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "nullaryBindings")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "version"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "version")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "skipCasts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "skipCasts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inlineVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "inlineVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "overlaySubs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "overlaySubs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the nullaryBindings field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentWithNullaryBindings :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.PythonEnvironment
-pythonEnvironmentWithNullaryBindings original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "boundTypeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "boundTypeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "nullaryBindings"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "version"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "version")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "skipCasts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "skipCasts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inlineVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "inlineVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "overlaySubs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "overlaySubs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the overlaySubs field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentWithOverlaySubs :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Environment.PythonEnvironment
-pythonEnvironmentWithOverlaySubs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "boundTypeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "boundTypeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "nullaryBindings"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "nullaryBindings")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "version"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "version")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "skipCasts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "skipCasts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inlineVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "inlineVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "overlaySubs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the skipCasts field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentWithSkipCasts :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonEnvironment
-pythonEnvironmentWithSkipCasts original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "boundTypeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "boundTypeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "nullaryBindings"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "nullaryBindings")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "version"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "version")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "skipCasts"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "inlineVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "inlineVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "overlaySubs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "overlaySubs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the version field of hydra.python.environment.PythonEnvironment
-pythonEnvironmentWithVersion :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Environment.PythonVersion -> Typed.TypedTerm Environment.PythonEnvironment
-pythonEnvironmentWithVersion original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "boundTypeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "boundTypeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "nullaryBindings"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "nullaryBindings")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "version"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "skipCasts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "skipCasts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "inlineVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "inlineVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "overlaySubs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonEnvironment"),
-              Core.projectionFieldName = (Core.Name "overlaySubs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadata :: Typed.TypedTerm (Util.ModuleNames Syntax.DottedName) -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadata namespaces typeVariables usesAnnotated usesCallable usesCast usesLruCache usesTypeAlias usesDataclass usesDecimal usesEither usesEnum usesFrozenDict usesFrozenList usesFrozenSet usesGeneric usesJust usesLeft usesMaybe usesName usesNode usesNothing usesRight usesTypeVar =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Typed.unTypedTerm namespaces)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Typed.unTypedTerm typeVariables)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Typed.unTypedTerm usesAnnotated)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Typed.unTypedTerm usesCallable)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Typed.unTypedTerm usesCast)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Typed.unTypedTerm usesLruCache)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Typed.unTypedTerm usesTypeAlias)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Typed.unTypedTerm usesDataclass)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Typed.unTypedTerm usesDecimal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Typed.unTypedTerm usesEither)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Typed.unTypedTerm usesEnum)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Typed.unTypedTerm usesFrozenDict)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Typed.unTypedTerm usesFrozenList)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Typed.unTypedTerm usesFrozenSet)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Typed.unTypedTerm usesGeneric)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Typed.unTypedTerm usesJust)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Typed.unTypedTerm usesLeft)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Typed.unTypedTerm usesMaybe)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Typed.unTypedTerm usesName)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Typed.unTypedTerm usesNode)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Typed.unTypedTerm usesNothing)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Typed.unTypedTerm usesRight)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Typed.unTypedTerm usesTypeVar)}]}))
-
--- | DSL accessor for the namespaces field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataNamespaces :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm (Util.ModuleNames Syntax.DottedName)
-pythonModuleMetadataNamespaces x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "namespaces")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataPythonModuleMetadata :: Typed.TypedName Environment.PythonModuleMetadata
-pythonModuleMetadataPythonModuleMetadata = Typed.TypedName (Core.Name "hydra.python.environment.PythonModuleMetadata")
-
--- | DSL accessor for the typeVariables field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataTypeVariables :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm (S.Set Core.Name)
-pythonModuleMetadataTypeVariables x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "typeVariables")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesAnnotated field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesAnnotated :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesAnnotated x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesCallable field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesCallable :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesCallable x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesCallable")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesCast field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesCast :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesCast x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesCast")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesDataclass field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesDataclass :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesDataclass x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesDataclass")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesDecimal field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesDecimal :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesDecimal x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesDecimal")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesEither field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesEither :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesEither x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesEither")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesEnum field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesEnum :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesEnum x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesEnum")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesFrozenDict field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesFrozenDict :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesFrozenDict x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesFrozenList field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesFrozenList :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesFrozenList x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesFrozenSet field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesFrozenSet :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesFrozenSet x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesGeneric field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesGeneric :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesGeneric x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesGeneric")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesJust field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesJust :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesJust x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesJust")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesLeft field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesLeft :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesLeft x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesLeft")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesLruCache field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesLruCache :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesLruCache x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesLruCache")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesMaybe field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesMaybe :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesMaybe x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesMaybe")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesName field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesName :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesName")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesNode field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesNode :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesNode x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesNode")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesNothing field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesNothing :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesNothing x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesNothing")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesRight field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesRight :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesRight x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesRight")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesTypeAlias field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesTypeAlias :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesTypeAlias x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the usesTypeVar field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataUsesTypeVar :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
-pythonModuleMetadataUsesTypeVar x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-        Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the namespaces field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithNamespaces :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm (Util.ModuleNames Syntax.DottedName) -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithNamespaces original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the typeVariables field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithTypeVariables :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithTypeVariables original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesAnnotated field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesAnnotated :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesAnnotated original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesCallable field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesCallable :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesCallable original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesCast field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesCast :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesCast original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesDataclass field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesDataclass :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesDataclass original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesDecimal field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesDecimal :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesDecimal original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesEither field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesEither :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesEither original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesEnum field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesEnum :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesEnum original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesFrozenDict field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesFrozenDict :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesFrozenDict original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesFrozenList field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesFrozenList :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesFrozenList original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesFrozenSet field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesFrozenSet :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesFrozenSet original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesGeneric field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesGeneric :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesGeneric original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesJust field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesJust :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesJust original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesLeft field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesLeft :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesLeft original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesLruCache field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesLruCache :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesLruCache original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesMaybe field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesMaybe :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesMaybe original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesName field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesName :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesNode field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesNode :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesNode original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesNothing field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesNothing :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesNothing original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesRight field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesRight :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesRight original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesTypeAlias field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesTypeAlias :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesTypeAlias original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeVar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the usesTypeVar field of hydra.python.environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesTypeVar :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
-pythonModuleMetadataWithUsesTypeVar original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "namespaces"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "namespaces")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeVariables"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "typeVariables")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesAnnotated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesAnnotated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCallable"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCallable")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesCast"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesCast")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLruCache"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLruCache")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeAlias"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesTypeAlias")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDataclass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDataclass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesDecimal"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesDecimal")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEither"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEither")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesEnum"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesEnum")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenDict"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenDict")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenList"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenList")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesFrozenSet"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesFrozenSet")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesGeneric"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesGeneric")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesJust"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesJust")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesLeft"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesLeft")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesMaybe"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesMaybe")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesNothing"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesNothing")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesRight"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.environment.PythonModuleMetadata"),
-              Core.projectionFieldName = (Core.Name "usesRight")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "usesTypeVar"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the python310 variant of hydra.python.environment.PythonVersion
-pythonVersionPython310 :: Typed.TypedTerm Environment.PythonVersion
-pythonVersionPython310 =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.environment.PythonVersion"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "python310"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the python312 variant of hydra.python.environment.PythonVersion
-pythonVersionPython312 :: Typed.TypedTerm Environment.PythonVersion
-pythonVersionPython312 =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.environment.PythonVersion"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "python312"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.python.environment.PythonVersion
-pythonVersionPythonVersion :: Typed.TypedName Environment.PythonVersion
-pythonVersionPythonVersion = Typed.TypedName (Core.Name "hydra.python.environment.PythonVersion")
diff --git a/src/main/haskell/Hydra/Dsl/Python/Names.hs b/src/main/haskell/Hydra/Dsl/Python/Names.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Dsl/Python/Names.hs
+++ /dev/null
@@ -1,194 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | DSL functions for hydra.python.names
-
-module Hydra.Dsl.Python.Names where
-
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Classes as Classes
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Dsl.Python.Environment as PythonEnvironment
-import qualified Hydra.Dsl.Python.Syntax as PythonSyntax
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Errors as Errors
-import qualified Hydra.Formatting as Formatting
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Json.Model as Model
-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.Python.Environment as Environment
-import qualified Hydra.Python.Language as Language
-import qualified Hydra.Python.Names as PythonNames
-import qualified Hydra.Python.Serde as Serde
-import qualified Hydra.Python.Syntax as Syntax
-import qualified Hydra.Query as Query
-import qualified Hydra.Relational as Relational
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-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.Map as M
-import qualified Data.Set as S
-
--- | DSL reference to hydra.python.names.encodeConstantForFieldName
-encodeConstantForFieldName :: Typed.TypedTerm t0 -> Typed.TypedTerm t1 -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Syntax.Name
-encodeConstantForFieldName arg0 arg1 arg2 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermApplication (Core.Application {
-          Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.encodeConstantForFieldName")),
-          Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-        Core.applicationArgument = (Typed.unTypedTerm arg1)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg2)}))
-
--- | DSL reference to hydra.python.names.encodeConstantForTypeName
-encodeConstantForTypeName :: Typed.TypedTerm t0 -> Typed.TypedTerm t1 -> Typed.TypedTerm Syntax.Name
-encodeConstantForTypeName arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.encodeConstantForTypeName")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.names.encodeEnumValue
-encodeEnumValue :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Syntax.Name
-encodeEnumValue arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.encodeEnumValue")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.names.encodeFieldName
-encodeFieldName :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Syntax.Name
-encodeFieldName arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.encodeFieldName")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.names.encodeName
-encodeName :: Typed.TypedTerm Bool -> Typed.TypedTerm Util.CaseConvention -> Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Syntax.Name
-encodeName arg0 arg1 arg2 arg3 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermApplication (Core.Application {
-          Core.applicationFunction = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.encodeName")),
-            Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-          Core.applicationArgument = (Typed.unTypedTerm arg1)})),
-        Core.applicationArgument = (Typed.unTypedTerm arg2)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg3)}))
-
--- | DSL reference to hydra.python.names.encodeNameQualified
-encodeNameQualified :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Syntax.Name
-encodeNameQualified arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.encodeNameQualified")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.names.encodeNamespace
-encodeNamespace :: Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm Syntax.DottedName
-encodeNamespace arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.encodeNamespace")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.names.encodeNamespaceStringWithOverrides
-encodeNamespaceStringWithOverrides :: Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm String
-encodeNamespaceStringWithOverrides arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.encodeNamespaceStringWithOverrides")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.names.encodeNamespaceWithOverrides
-encodeNamespaceWithOverrides :: Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm Syntax.DottedName
-encodeNamespaceWithOverrides arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.encodeNamespaceWithOverrides")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.names.encodeTypeVariable
-encodeTypeVariable :: Typed.TypedTerm Core.Name -> Typed.TypedTerm Syntax.Name
-encodeTypeVariable arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.encodeTypeVariable")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.names.overlayPythonModuleAliases
-overlayPythonModuleAliases :: Typed.TypedTerm (M.Map Packaging.ModuleName String)
-overlayPythonModuleAliases = Typed.TypedTerm (Core.TermVariable (Core.Name "hydra.python.names.overlayPythonModuleAliases"))
-
--- | DSL reference to hydra.python.names.sanitizePythonName
-sanitizePythonName :: Typed.TypedTerm String -> Typed.TypedTerm String
-sanitizePythonName arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.sanitizePythonName")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.names.termVariableReference
-termVariableReference :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Syntax.Expression
-termVariableReference arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.termVariableReference")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.names.typeVariableReference
-typeVariableReference :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Syntax.Expression
-typeVariableReference arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.typeVariableReference")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.names.useFutureAnnotations
-useFutureAnnotations :: Typed.TypedTerm Bool
-useFutureAnnotations = Typed.TypedTerm (Core.TermVariable (Core.Name "hydra.python.names.useFutureAnnotations"))
-
--- | DSL reference to hydra.python.names.variableReference
-variableReference :: Typed.TypedTerm Util.CaseConvention -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Syntax.Expression
-variableReference arg0 arg1 arg2 arg3 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermApplication (Core.Application {
-          Core.applicationFunction = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.variableReference")),
-            Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-          Core.applicationArgument = (Typed.unTypedTerm arg1)})),
-        Core.applicationArgument = (Typed.unTypedTerm arg2)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg3)}))
-
--- | DSL reference to hydra.python.names.variantName
-variantName :: Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Core.Name -> Typed.TypedTerm Syntax.Name
-variantName arg0 arg1 arg2 arg3 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermApplication (Core.Application {
-          Core.applicationFunction = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.names.variantName")),
-            Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-          Core.applicationArgument = (Typed.unTypedTerm arg1)})),
-        Core.applicationArgument = (Typed.unTypedTerm arg2)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg3)}))
diff --git a/src/main/haskell/Hydra/Dsl/Python/Syntax.hs b/src/main/haskell/Hydra/Dsl/Python/Syntax.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Dsl/Python/Syntax.hs
+++ /dev/null
@@ -1,11743 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | DSL functions for hydra.python.syntax
-
-module Hydra.Dsl.Python.Syntax where
-
-import qualified Hydra.Core as Core
-import qualified Hydra.Python.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
-
--- | DSL name token for hydra.python.syntax.AnnotatedRhs
-annotatedRhsAnnotatedRhs :: Typed.TypedName Syntax.AnnotatedRhs
-annotatedRhsAnnotatedRhs = Typed.TypedName (Core.Name "hydra.python.syntax.AnnotatedRhs")
-
--- | DSL injection for the star variant of hydra.python.syntax.AnnotatedRhs
-annotatedRhsStar :: Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm Syntax.AnnotatedRhs
-annotatedRhsStar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AnnotatedRhs"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "star"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the yield variant of hydra.python.syntax.AnnotatedRhs
-annotatedRhsYield :: Typed.TypedTerm Syntax.YieldExpression -> Typed.TypedTerm Syntax.AnnotatedRhs
-annotatedRhsYield x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AnnotatedRhs"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "yield"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.python.syntax.AnnotatedStatement
-annotatedStatement :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.AnnotatedStatement
-annotatedStatement comment statement =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AnnotatedStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "comment"),
-          Core.fieldTerm = (Typed.unTypedTerm comment)},
-        Core.Field {
-          Core.fieldName = (Core.Name "statement"),
-          Core.fieldTerm = (Typed.unTypedTerm statement)}]}))
-
--- | DSL name token for hydra.python.syntax.AnnotatedStatement
-annotatedStatementAnnotatedStatement :: Typed.TypedName Syntax.AnnotatedStatement
-annotatedStatementAnnotatedStatement = Typed.TypedName (Core.Name "hydra.python.syntax.AnnotatedStatement")
-
--- | DSL accessor for the comment field of hydra.python.syntax.AnnotatedStatement
-annotatedStatementComment :: Typed.TypedTerm Syntax.AnnotatedStatement -> Typed.TypedTerm String
-annotatedStatementComment x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AnnotatedStatement"),
-        Core.projectionFieldName = (Core.Name "comment")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the statement field of hydra.python.syntax.AnnotatedStatement
-annotatedStatementStatement :: Typed.TypedTerm Syntax.AnnotatedStatement -> Typed.TypedTerm Syntax.Statement
-annotatedStatementStatement x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AnnotatedStatement"),
-        Core.projectionFieldName = (Core.Name "statement")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the comment field of hydra.python.syntax.AnnotatedStatement
-annotatedStatementWithComment :: Typed.TypedTerm Syntax.AnnotatedStatement -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.AnnotatedStatement
-annotatedStatementWithComment original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AnnotatedStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "comment"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "statement"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.AnnotatedStatement"),
-              Core.projectionFieldName = (Core.Name "statement")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the statement field of hydra.python.syntax.AnnotatedStatement
-annotatedStatementWithStatement :: Typed.TypedTerm Syntax.AnnotatedStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.AnnotatedStatement
-annotatedStatementWithStatement original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AnnotatedStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "comment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.AnnotatedStatement"),
-              Core.projectionFieldName = (Core.Name "comment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "statement"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for the hydra.python.syntax.Annotation wrapper
-annotation :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Annotation
-annotation x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Annotation"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Annotation
-annotationAnnotation :: Typed.TypedName Syntax.Annotation
-annotationAnnotation = Typed.TypedName (Core.Name "hydra.python.syntax.Annotation")
-
--- | DSL constructor for hydra.python.syntax.Args
-args :: Typed.TypedTerm [Syntax.PosArg] -> Typed.TypedTerm [Syntax.KwargOrStarred] -> Typed.TypedTerm [Syntax.KwargOrDoubleStarred] -> Typed.TypedTerm Syntax.Args
-args positional kwargOrStarred kwargOrDoubleStarred =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Args"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "positional"),
-          Core.fieldTerm = (Typed.unTypedTerm positional)},
-        Core.Field {
-          Core.fieldName = (Core.Name "kwargOrStarred"),
-          Core.fieldTerm = (Typed.unTypedTerm kwargOrStarred)},
-        Core.Field {
-          Core.fieldName = (Core.Name "kwargOrDoubleStarred"),
-          Core.fieldTerm = (Typed.unTypedTerm kwargOrDoubleStarred)}]}))
-
--- | DSL name token for hydra.python.syntax.Args
-argsArgs :: Typed.TypedName Syntax.Args
-argsArgs = Typed.TypedName (Core.Name "hydra.python.syntax.Args")
-
--- | DSL accessor for the kwargOrDoubleStarred field of hydra.python.syntax.Args
-argsKwargOrDoubleStarred :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.KwargOrDoubleStarred]
-argsKwargOrDoubleStarred x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Args"),
-        Core.projectionFieldName = (Core.Name "kwargOrDoubleStarred")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the kwargOrStarred field of hydra.python.syntax.Args
-argsKwargOrStarred :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.KwargOrStarred]
-argsKwargOrStarred x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Args"),
-        Core.projectionFieldName = (Core.Name "kwargOrStarred")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the positional field of hydra.python.syntax.Args
-argsPositional :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.PosArg]
-argsPositional x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Args"),
-        Core.projectionFieldName = (Core.Name "positional")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the kwargOrDoubleStarred field of hydra.python.syntax.Args
-argsWithKwargOrDoubleStarred :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.KwargOrDoubleStarred] -> Typed.TypedTerm Syntax.Args
-argsWithKwargOrDoubleStarred original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Args"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "positional"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Args"),
-              Core.projectionFieldName = (Core.Name "positional")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "kwargOrStarred"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Args"),
-              Core.projectionFieldName = (Core.Name "kwargOrStarred")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "kwargOrDoubleStarred"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the kwargOrStarred field of hydra.python.syntax.Args
-argsWithKwargOrStarred :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.KwargOrStarred] -> Typed.TypedTerm Syntax.Args
-argsWithKwargOrStarred original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Args"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "positional"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Args"),
-              Core.projectionFieldName = (Core.Name "positional")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "kwargOrStarred"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "kwargOrDoubleStarred"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Args"),
-              Core.projectionFieldName = (Core.Name "kwargOrDoubleStarred")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the positional field of hydra.python.syntax.Args
-argsWithPositional :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.PosArg] -> Typed.TypedTerm Syntax.Args
-argsWithPositional original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Args"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "positional"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "kwargOrStarred"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Args"),
-              Core.projectionFieldName = (Core.Name "kwargOrStarred")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "kwargOrDoubleStarred"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Args"),
-              Core.projectionFieldName = (Core.Name "kwargOrDoubleStarred")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.AsPattern
-asPattern :: Typed.TypedTerm Syntax.OrPattern -> Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.AsPattern
-asPattern pattern as =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AsPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pattern"),
-          Core.fieldTerm = (Typed.unTypedTerm pattern)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Typed.unTypedTerm as)}]}))
-
--- | DSL accessor for the as field of hydra.python.syntax.AsPattern
-asPatternAs :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.PatternCaptureTarget
-asPatternAs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AsPattern"),
-        Core.projectionFieldName = (Core.Name "as")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.AsPattern
-asPatternAsPattern :: Typed.TypedName Syntax.AsPattern
-asPatternAsPattern = Typed.TypedName (Core.Name "hydra.python.syntax.AsPattern")
-
--- | DSL accessor for the pattern field of hydra.python.syntax.AsPattern
-asPatternPattern :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.OrPattern
-asPatternPattern x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AsPattern"),
-        Core.projectionFieldName = (Core.Name "pattern")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the as field of hydra.python.syntax.AsPattern
-asPatternWithAs :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.AsPattern
-asPatternWithAs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AsPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pattern"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.AsPattern"),
-              Core.projectionFieldName = (Core.Name "pattern")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the pattern field of hydra.python.syntax.AsPattern
-asPatternWithPattern :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.OrPattern -> Typed.TypedTerm Syntax.AsPattern
-asPatternWithPattern original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AsPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "pattern"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.AsPattern"),
-              Core.projectionFieldName = (Core.Name "as")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.AssertStatement
-assertStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.AssertStatement
-assertStatement expression1 expression2 =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AssertStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression1"),
-          Core.fieldTerm = (Typed.unTypedTerm expression1)},
-        Core.Field {
-          Core.fieldName = (Core.Name "expression2"),
-          Core.fieldTerm = (Typed.unTypedTerm expression2)}]}))
-
--- | DSL name token for hydra.python.syntax.AssertStatement
-assertStatementAssertStatement :: Typed.TypedName Syntax.AssertStatement
-assertStatementAssertStatement = Typed.TypedName (Core.Name "hydra.python.syntax.AssertStatement")
-
--- | DSL accessor for the expression1 field of hydra.python.syntax.AssertStatement
-assertStatementExpression1 :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm Syntax.Expression
-assertStatementExpression1 x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AssertStatement"),
-        Core.projectionFieldName = (Core.Name "expression1")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the expression2 field of hydra.python.syntax.AssertStatement
-assertStatementExpression2 :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm (Maybe Syntax.Expression)
-assertStatementExpression2 x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AssertStatement"),
-        Core.projectionFieldName = (Core.Name "expression2")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the expression1 field of hydra.python.syntax.AssertStatement
-assertStatementWithExpression1 :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssertStatement
-assertStatementWithExpression1 original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AssertStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression1"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "expression2"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.AssertStatement"),
-              Core.projectionFieldName = (Core.Name "expression2")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the expression2 field of hydra.python.syntax.AssertStatement
-assertStatementWithExpression2 :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.AssertStatement
-assertStatementWithExpression2 original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AssertStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression1"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.AssertStatement"),
-              Core.projectionFieldName = (Core.Name "expression1")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "expression2"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL name token for hydra.python.syntax.Assignment
-assignmentAssignment :: Typed.TypedName Syntax.Assignment
-assignmentAssignment = Typed.TypedName (Core.Name "hydra.python.syntax.Assignment")
-
--- | DSL injection for the aug variant of hydra.python.syntax.Assignment
-assignmentAug :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.Assignment
-assignmentAug x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Assignment"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "aug"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.python.syntax.AssignmentExpression
-assignmentExpression :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression
-assignmentExpression name expression =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AssignmentExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm expression)}]}))
-
--- | DSL name token for hydra.python.syntax.AssignmentExpression
-assignmentExpressionAssignmentExpression :: Typed.TypedName Syntax.AssignmentExpression
-assignmentExpressionAssignmentExpression = Typed.TypedName (Core.Name "hydra.python.syntax.AssignmentExpression")
-
--- | DSL accessor for the expression field of hydra.python.syntax.AssignmentExpression
-assignmentExpressionExpression :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression
-assignmentExpressionExpression x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AssignmentExpression"),
-        Core.projectionFieldName = (Core.Name "expression")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.python.syntax.AssignmentExpression
-assignmentExpressionName :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Name
-assignmentExpressionName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AssignmentExpression"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the expression field of hydra.python.syntax.AssignmentExpression
-assignmentExpressionWithExpression :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression
-assignmentExpressionWithExpression original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AssignmentExpression"),
-      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.python.syntax.AssignmentExpression"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the name field of hydra.python.syntax.AssignmentExpression
-assignmentExpressionWithName :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.AssignmentExpression
-assignmentExpressionWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AssignmentExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.AssignmentExpression"),
-              Core.projectionFieldName = (Core.Name "expression")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the typed variant of hydra.python.syntax.Assignment
-assignmentTyped :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm Syntax.Assignment
-assignmentTyped x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Assignment"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "typed"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the untyped variant of hydra.python.syntax.Assignment
-assignmentUntyped :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm Syntax.Assignment
-assignmentUntyped x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Assignment"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "untyped"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.Atom
-atomAtom :: Typed.TypedName Syntax.Atom
-atomAtom = Typed.TypedName (Core.Name "hydra.python.syntax.Atom")
-
--- | DSL injection for the dict variant of hydra.python.syntax.Atom
-atomDict :: Typed.TypedTerm Syntax.Dict -> Typed.TypedTerm Syntax.Atom
-atomDict x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "dict"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the dictcomp variant of hydra.python.syntax.Atom
-atomDictcomp :: Typed.TypedTerm Syntax.Dictcomp -> Typed.TypedTerm Syntax.Atom
-atomDictcomp x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "dictcomp"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the ellipsis variant of hydra.python.syntax.Atom
-atomEllipsis :: Typed.TypedTerm Syntax.Atom
-atomEllipsis =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "ellipsis"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the false variant of hydra.python.syntax.Atom
-atomFalse :: Typed.TypedTerm Syntax.Atom
-atomFalse =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "false"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the genexp variant of hydra.python.syntax.Atom
-atomGenexp :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.Atom
-atomGenexp x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "genexp"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the group variant of hydra.python.syntax.Atom
-atomGroup :: Typed.TypedTerm Syntax.Group -> Typed.TypedTerm Syntax.Atom
-atomGroup x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "group"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the list variant of hydra.python.syntax.Atom
-atomList :: Typed.TypedTerm Syntax.List -> Typed.TypedTerm Syntax.Atom
-atomList x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "list"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the listcomp variant of hydra.python.syntax.Atom
-atomListcomp :: Typed.TypedTerm Syntax.Listcomp -> Typed.TypedTerm Syntax.Atom
-atomListcomp x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "listcomp"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the name variant of hydra.python.syntax.Atom
-atomName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Atom
-atomName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "name"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the none variant of hydra.python.syntax.Atom
-atomNone :: Typed.TypedTerm Syntax.Atom
-atomNone =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "none"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the number variant of hydra.python.syntax.Atom
-atomNumber :: Typed.TypedTerm Syntax.Number -> Typed.TypedTerm Syntax.Atom
-atomNumber x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "number"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the set variant of hydra.python.syntax.Atom
-atomSet :: Typed.TypedTerm Syntax.Set -> Typed.TypedTerm Syntax.Atom
-atomSet x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "set"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the setcomp variant of hydra.python.syntax.Atom
-atomSetcomp :: Typed.TypedTerm Syntax.Setcomp -> Typed.TypedTerm Syntax.Atom
-atomSetcomp x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "setcomp"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the string variant of hydra.python.syntax.Atom
-atomString :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm Syntax.Atom
-atomString x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "string"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the true variant of hydra.python.syntax.Atom
-atomTrue :: Typed.TypedTerm Syntax.Atom
-atomTrue =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "true"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the tuple variant of hydra.python.syntax.Atom
-atomTuple :: Typed.TypedTerm Syntax.Tuple -> Typed.TypedTerm Syntax.Atom
-atomTuple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Atom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "tuple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.Attribute wrapper
-attribute :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.Attribute
-attribute x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Attribute"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Attribute
-attributeAttribute :: Typed.TypedName Syntax.Attribute
-attributeAttribute = Typed.TypedName (Core.Name "hydra.python.syntax.Attribute")
-
--- | DSL injection for the ampersandEqual variant of hydra.python.syntax.AugAssign
-augAssignAmpersandEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignAmpersandEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "ampersandEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the atEqual variant of hydra.python.syntax.AugAssign
-augAssignAtEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignAtEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "atEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.python.syntax.AugAssign
-augAssignAugAssign :: Typed.TypedName Syntax.AugAssign
-augAssignAugAssign = Typed.TypedName (Core.Name "hydra.python.syntax.AugAssign")
-
--- | DSL injection for the barEqual variant of hydra.python.syntax.AugAssign
-augAssignBarEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignBarEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "barEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the caretEqual variant of hydra.python.syntax.AugAssign
-augAssignCaretEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignCaretEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "caretEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the doubleSlashEqual variant of hydra.python.syntax.AugAssign
-augAssignDoubleSlashEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignDoubleSlashEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "doubleSlashEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the leftShiftEqual variant of hydra.python.syntax.AugAssign
-augAssignLeftShiftEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignLeftShiftEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "leftShiftEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the minusEqual variant of hydra.python.syntax.AugAssign
-augAssignMinusEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignMinusEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "minusEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the percentEqual variant of hydra.python.syntax.AugAssign
-augAssignPercentEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignPercentEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "percentEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the plusEqual variant of hydra.python.syntax.AugAssign
-augAssignPlusEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignPlusEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "plusEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the rightShiftEqual variant of hydra.python.syntax.AugAssign
-augAssignRightShiftEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignRightShiftEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "rightShiftEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the slashEqual variant of hydra.python.syntax.AugAssign
-augAssignSlashEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignSlashEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "slashEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the starStarEqual variant of hydra.python.syntax.AugAssign
-augAssignStarStarEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignStarStarEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starStarEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the timesEqual variant of hydra.python.syntax.AugAssign
-augAssignTimesEqual :: Typed.TypedTerm Syntax.AugAssign
-augAssignTimesEqual =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.AugAssign"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "timesEqual"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL constructor for hydra.python.syntax.AugAssignment
-augAssignment :: Typed.TypedTerm Syntax.SingleTarget -> Typed.TypedTerm Syntax.AugAssign -> Typed.TypedTerm Syntax.AnnotatedRhs -> Typed.TypedTerm Syntax.AugAssignment
-augAssignment lhs augassign rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AugAssignment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "augassign"),
-          Core.fieldTerm = (Typed.unTypedTerm augassign)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL name token for hydra.python.syntax.AugAssignment
-augAssignmentAugAssignment :: Typed.TypedName Syntax.AugAssignment
-augAssignmentAugAssignment = Typed.TypedName (Core.Name "hydra.python.syntax.AugAssignment")
-
--- | DSL accessor for the augassign field of hydra.python.syntax.AugAssignment
-augAssignmentAugassign :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.AugAssign
-augAssignmentAugassign x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AugAssignment"),
-        Core.projectionFieldName = (Core.Name "augassign")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the lhs field of hydra.python.syntax.AugAssignment
-augAssignmentLhs :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.SingleTarget
-augAssignmentLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AugAssignment"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.python.syntax.AugAssignment
-augAssignmentRhs :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.AnnotatedRhs
-augAssignmentRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AugAssignment"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the augassign field of hydra.python.syntax.AugAssignment
-augAssignmentWithAugassign :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.AugAssign -> Typed.TypedTerm Syntax.AugAssignment
-augAssignmentWithAugassign original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AugAssignment"),
-      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.python.syntax.AugAssignment"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "augassign"),
-          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.python.syntax.AugAssignment"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the lhs field of hydra.python.syntax.AugAssignment
-augAssignmentWithLhs :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.SingleTarget -> Typed.TypedTerm Syntax.AugAssignment
-augAssignmentWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AugAssignment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "augassign"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.AugAssignment"),
-              Core.projectionFieldName = (Core.Name "augassign")})),
-            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.python.syntax.AugAssignment"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.AugAssignment
-augAssignmentWithRhs :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.AnnotatedRhs -> Typed.TypedTerm Syntax.AugAssignment
-augAssignmentWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AugAssignment"),
-      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.python.syntax.AugAssignment"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "augassign"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.AugAssignment"),
-              Core.projectionFieldName = (Core.Name "augassign")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.AwaitPrimary
-awaitPrimary :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.AwaitPrimary
-awaitPrimary await primary =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AwaitPrimary"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "await"),
-          Core.fieldTerm = (Typed.unTypedTerm await)},
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Typed.unTypedTerm primary)}]}))
-
--- | DSL accessor for the await field of hydra.python.syntax.AwaitPrimary
-awaitPrimaryAwait :: Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm Bool
-awaitPrimaryAwait x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AwaitPrimary"),
-        Core.projectionFieldName = (Core.Name "await")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.AwaitPrimary
-awaitPrimaryAwaitPrimary :: Typed.TypedName Syntax.AwaitPrimary
-awaitPrimaryAwaitPrimary = Typed.TypedName (Core.Name "hydra.python.syntax.AwaitPrimary")
-
--- | DSL accessor for the primary field of hydra.python.syntax.AwaitPrimary
-awaitPrimaryPrimary :: Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm Syntax.Primary
-awaitPrimaryPrimary x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.AwaitPrimary"),
-        Core.projectionFieldName = (Core.Name "primary")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the await field of hydra.python.syntax.AwaitPrimary
-awaitPrimaryWithAwait :: Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.AwaitPrimary
-awaitPrimaryWithAwait original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AwaitPrimary"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "await"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.AwaitPrimary"),
-              Core.projectionFieldName = (Core.Name "primary")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the primary field of hydra.python.syntax.AwaitPrimary
-awaitPrimaryWithPrimary :: Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.AwaitPrimary
-awaitPrimaryWithPrimary original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.AwaitPrimary"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "await"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.AwaitPrimary"),
-              Core.projectionFieldName = (Core.Name "await")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.BitwiseAnd
-bitwiseAnd :: Typed.TypedTerm (Maybe Syntax.BitwiseAnd) -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.BitwiseAnd
-bitwiseAnd lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.BitwiseAnd"),
-      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 name token for hydra.python.syntax.BitwiseAnd
-bitwiseAndBitwiseAnd :: Typed.TypedName Syntax.BitwiseAnd
-bitwiseAndBitwiseAnd = Typed.TypedName (Core.Name "hydra.python.syntax.BitwiseAnd")
-
--- | DSL accessor for the lhs field of hydra.python.syntax.BitwiseAnd
-bitwiseAndLhs :: Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm (Maybe Syntax.BitwiseAnd)
-bitwiseAndLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.BitwiseAnd"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.python.syntax.BitwiseAnd
-bitwiseAndRhs :: Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm Syntax.ShiftExpression
-bitwiseAndRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.BitwiseAnd"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.python.syntax.BitwiseAnd
-bitwiseAndWithLhs :: Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm (Maybe Syntax.BitwiseAnd) -> Typed.TypedTerm Syntax.BitwiseAnd
-bitwiseAndWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.BitwiseAnd"),
-      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.python.syntax.BitwiseAnd"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.BitwiseAnd
-bitwiseAndWithRhs :: Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.BitwiseAnd
-bitwiseAndWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.BitwiseAnd"),
-      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.python.syntax.BitwiseAnd"),
-              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.python.syntax.BitwiseOr
-bitwiseOr :: Typed.TypedTerm (Maybe Syntax.BitwiseOr) -> Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm Syntax.BitwiseOr
-bitwiseOr lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.BitwiseOr"),
-      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 name token for hydra.python.syntax.BitwiseOr
-bitwiseOrBitwiseOr :: Typed.TypedName Syntax.BitwiseOr
-bitwiseOrBitwiseOr = Typed.TypedName (Core.Name "hydra.python.syntax.BitwiseOr")
-
--- | DSL accessor for the lhs field of hydra.python.syntax.BitwiseOr
-bitwiseOrLhs :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm (Maybe Syntax.BitwiseOr)
-bitwiseOrLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.BitwiseOr"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.python.syntax.BitwiseOr
-bitwiseOrRhs :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.BitwiseXor
-bitwiseOrRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.BitwiseOr"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.python.syntax.BitwiseOr
-bitwiseOrWithLhs :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm (Maybe Syntax.BitwiseOr) -> Typed.TypedTerm Syntax.BitwiseOr
-bitwiseOrWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.BitwiseOr"),
-      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.python.syntax.BitwiseOr"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.BitwiseOr
-bitwiseOrWithRhs :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm Syntax.BitwiseOr
-bitwiseOrWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.BitwiseOr"),
-      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.python.syntax.BitwiseOr"),
-              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.python.syntax.BitwiseXor
-bitwiseXor :: Typed.TypedTerm (Maybe Syntax.BitwiseXor) -> Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm Syntax.BitwiseXor
-bitwiseXor lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.BitwiseXor"),
-      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 name token for hydra.python.syntax.BitwiseXor
-bitwiseXorBitwiseXor :: Typed.TypedName Syntax.BitwiseXor
-bitwiseXorBitwiseXor = Typed.TypedName (Core.Name "hydra.python.syntax.BitwiseXor")
-
--- | DSL accessor for the lhs field of hydra.python.syntax.BitwiseXor
-bitwiseXorLhs :: Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm (Maybe Syntax.BitwiseXor)
-bitwiseXorLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.BitwiseXor"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.python.syntax.BitwiseXor
-bitwiseXorRhs :: Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm Syntax.BitwiseAnd
-bitwiseXorRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.BitwiseXor"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.python.syntax.BitwiseXor
-bitwiseXorWithLhs :: Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm (Maybe Syntax.BitwiseXor) -> Typed.TypedTerm Syntax.BitwiseXor
-bitwiseXorWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.BitwiseXor"),
-      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.python.syntax.BitwiseXor"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.BitwiseXor
-bitwiseXorWithRhs :: Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm Syntax.BitwiseXor
-bitwiseXorWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.BitwiseXor"),
-      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.python.syntax.BitwiseXor"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL name token for hydra.python.syntax.Block
-blockBlock :: Typed.TypedName Syntax.Block
-blockBlock = Typed.TypedName (Core.Name "hydra.python.syntax.Block")
-
--- | DSL injection for the indented variant of hydra.python.syntax.Block
-blockIndented :: Typed.TypedTerm [[Syntax.Statement]] -> Typed.TypedTerm Syntax.Block
-blockIndented x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Block"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "indented"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the simple variant of hydra.python.syntax.Block
-blockSimple :: Typed.TypedTerm [Syntax.SimpleStatement] -> Typed.TypedTerm Syntax.Block
-blockSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Block"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.CapturePattern wrapper
-capturePattern :: Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.CapturePattern
-capturePattern x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.CapturePattern"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.CapturePattern
-capturePatternCapturePattern :: Typed.TypedName Syntax.CapturePattern
-capturePatternCapturePattern = Typed.TypedName (Core.Name "hydra.python.syntax.CapturePattern")
-
--- | DSL constructor for hydra.python.syntax.CaseBlock
-caseBlock :: Typed.TypedTerm Syntax.Patterns -> Typed.TypedTerm (Maybe Syntax.Guard) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.CaseBlock
-caseBlock patterns guard body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.CaseBlock"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "patterns"),
-          Core.fieldTerm = (Typed.unTypedTerm patterns)},
-        Core.Field {
-          Core.fieldName = (Core.Name "guard"),
-          Core.fieldTerm = (Typed.unTypedTerm guard)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.python.syntax.CaseBlock
-caseBlockBody :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm Syntax.Block
-caseBlockBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.CaseBlock"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.CaseBlock
-caseBlockCaseBlock :: Typed.TypedName Syntax.CaseBlock
-caseBlockCaseBlock = Typed.TypedName (Core.Name "hydra.python.syntax.CaseBlock")
-
--- | DSL accessor for the guard field of hydra.python.syntax.CaseBlock
-caseBlockGuard :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm (Maybe Syntax.Guard)
-caseBlockGuard x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.CaseBlock"),
-        Core.projectionFieldName = (Core.Name "guard")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the patterns field of hydra.python.syntax.CaseBlock
-caseBlockPatterns :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm Syntax.Patterns
-caseBlockPatterns x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.CaseBlock"),
-        Core.projectionFieldName = (Core.Name "patterns")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.python.syntax.CaseBlock
-caseBlockWithBody :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.CaseBlock
-caseBlockWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.CaseBlock"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "patterns"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.CaseBlock"),
-              Core.projectionFieldName = (Core.Name "patterns")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "guard"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.CaseBlock"),
-              Core.projectionFieldName = (Core.Name "guard")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the guard field of hydra.python.syntax.CaseBlock
-caseBlockWithGuard :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm (Maybe Syntax.Guard) -> Typed.TypedTerm Syntax.CaseBlock
-caseBlockWithGuard original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.CaseBlock"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "patterns"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.CaseBlock"),
-              Core.projectionFieldName = (Core.Name "patterns")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "guard"),
-          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.python.syntax.CaseBlock"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the patterns field of hydra.python.syntax.CaseBlock
-caseBlockWithPatterns :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm Syntax.Patterns -> Typed.TypedTerm Syntax.CaseBlock
-caseBlockWithPatterns original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.CaseBlock"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "patterns"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "guard"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.CaseBlock"),
-              Core.projectionFieldName = (Core.Name "guard")})),
-            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.python.syntax.CaseBlock"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.ClassDefinition
-classDefinition :: Typed.TypedTerm (Maybe Syntax.Decorators) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm (Maybe Syntax.Args) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ClassDefinition
-classDefinition decorators name typeParams arguments body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "decorators"),
-          Core.fieldTerm = (Typed.unTypedTerm decorators)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Typed.unTypedTerm typeParams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "arguments"),
-          Core.fieldTerm = (Typed.unTypedTerm arguments)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the arguments field of hydra.python.syntax.ClassDefinition
-classDefinitionArguments :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm (Maybe Syntax.Args)
-classDefinitionArguments x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-        Core.projectionFieldName = (Core.Name "arguments")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body field of hydra.python.syntax.ClassDefinition
-classDefinitionBody :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.Block
-classDefinitionBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ClassDefinition
-classDefinitionClassDefinition :: Typed.TypedName Syntax.ClassDefinition
-classDefinitionClassDefinition = Typed.TypedName (Core.Name "hydra.python.syntax.ClassDefinition")
-
--- | DSL accessor for the decorators field of hydra.python.syntax.ClassDefinition
-classDefinitionDecorators :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm (Maybe Syntax.Decorators)
-classDefinitionDecorators x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-        Core.projectionFieldName = (Core.Name "decorators")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.python.syntax.ClassDefinition
-classDefinitionName :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.Name
-classDefinitionName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the typeParams field of hydra.python.syntax.ClassDefinition
-classDefinitionTypeParams :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm [Syntax.TypeParameter]
-classDefinitionTypeParams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-        Core.projectionFieldName = (Core.Name "typeParams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the arguments field of hydra.python.syntax.ClassDefinition
-classDefinitionWithArguments :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm (Maybe Syntax.Args) -> Typed.TypedTerm Syntax.ClassDefinition
-classDefinitionWithArguments original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "decorators"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "decorators")})),
-            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.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "arguments"),
-          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.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the body field of hydra.python.syntax.ClassDefinition
-classDefinitionWithBody :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ClassDefinition
-classDefinitionWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "decorators"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "decorators")})),
-            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.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "arguments"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "arguments")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the decorators field of hydra.python.syntax.ClassDefinition
-classDefinitionWithDecorators :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm (Maybe Syntax.Decorators) -> Typed.TypedTerm Syntax.ClassDefinition
-classDefinitionWithDecorators original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "decorators"),
-          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.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "arguments"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "arguments")})),
-            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.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.python.syntax.ClassDefinition
-classDefinitionWithName :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ClassDefinition
-classDefinitionWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "decorators"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "decorators")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "arguments"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "arguments")})),
-            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.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the typeParams field of hydra.python.syntax.ClassDefinition
-classDefinitionWithTypeParams :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.ClassDefinition
-classDefinitionWithTypeParams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "decorators"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "decorators")})),
-            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.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "arguments"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "arguments")})),
-            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.python.syntax.ClassDefinition"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.ClassPattern
-classPattern :: Typed.TypedTerm Syntax.NameOrAttribute -> Typed.TypedTerm (Maybe Syntax.PositionalPatterns) -> Typed.TypedTerm (Maybe Syntax.KeywordPatterns) -> Typed.TypedTerm Syntax.ClassPattern
-classPattern nameOrAttribute positionalPatterns keywordPatterns =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "nameOrAttribute"),
-          Core.fieldTerm = (Typed.unTypedTerm nameOrAttribute)},
-        Core.Field {
-          Core.fieldName = (Core.Name "positionalPatterns"),
-          Core.fieldTerm = (Typed.unTypedTerm positionalPatterns)},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywordPatterns"),
-          Core.fieldTerm = (Typed.unTypedTerm keywordPatterns)}]}))
-
--- | DSL name token for hydra.python.syntax.ClassPattern
-classPatternClassPattern :: Typed.TypedName Syntax.ClassPattern
-classPatternClassPattern = Typed.TypedName (Core.Name "hydra.python.syntax.ClassPattern")
-
--- | DSL accessor for the keywordPatterns field of hydra.python.syntax.ClassPattern
-classPatternKeywordPatterns :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm (Maybe Syntax.KeywordPatterns)
-classPatternKeywordPatterns x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-        Core.projectionFieldName = (Core.Name "keywordPatterns")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the nameOrAttribute field of hydra.python.syntax.ClassPattern
-classPatternNameOrAttribute :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm Syntax.NameOrAttribute
-classPatternNameOrAttribute x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-        Core.projectionFieldName = (Core.Name "nameOrAttribute")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the positionalPatterns field of hydra.python.syntax.ClassPattern
-classPatternPositionalPatterns :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm (Maybe Syntax.PositionalPatterns)
-classPatternPositionalPatterns x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-        Core.projectionFieldName = (Core.Name "positionalPatterns")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the keywordPatterns field of hydra.python.syntax.ClassPattern
-classPatternWithKeywordPatterns :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm (Maybe Syntax.KeywordPatterns) -> Typed.TypedTerm Syntax.ClassPattern
-classPatternWithKeywordPatterns original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "nameOrAttribute"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-              Core.projectionFieldName = (Core.Name "nameOrAttribute")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "positionalPatterns"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-              Core.projectionFieldName = (Core.Name "positionalPatterns")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywordPatterns"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the nameOrAttribute field of hydra.python.syntax.ClassPattern
-classPatternWithNameOrAttribute :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm Syntax.NameOrAttribute -> Typed.TypedTerm Syntax.ClassPattern
-classPatternWithNameOrAttribute original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "nameOrAttribute"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "positionalPatterns"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-              Core.projectionFieldName = (Core.Name "positionalPatterns")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywordPatterns"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-              Core.projectionFieldName = (Core.Name "keywordPatterns")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the positionalPatterns field of hydra.python.syntax.ClassPattern
-classPatternWithPositionalPatterns :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm (Maybe Syntax.PositionalPatterns) -> Typed.TypedTerm Syntax.ClassPattern
-classPatternWithPositionalPatterns original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "nameOrAttribute"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-              Core.projectionFieldName = (Core.Name "nameOrAttribute")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "positionalPatterns"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywordPatterns"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ClassPattern"),
-              Core.projectionFieldName = (Core.Name "keywordPatterns")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the capture variant of hydra.python.syntax.ClosedPattern
-closedPatternCapture :: Typed.TypedTerm Syntax.CapturePattern -> Typed.TypedTerm Syntax.ClosedPattern
-closedPatternCapture x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ClosedPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "capture"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the class variant of hydra.python.syntax.ClosedPattern
-closedPatternClass :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm Syntax.ClosedPattern
-closedPatternClass x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ClosedPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "class"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.ClosedPattern
-closedPatternClosedPattern :: Typed.TypedName Syntax.ClosedPattern
-closedPatternClosedPattern = Typed.TypedName (Core.Name "hydra.python.syntax.ClosedPattern")
-
--- | DSL injection for the group variant of hydra.python.syntax.ClosedPattern
-closedPatternGroup :: Typed.TypedTerm Syntax.GroupPattern -> Typed.TypedTerm Syntax.ClosedPattern
-closedPatternGroup x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ClosedPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "group"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the literal variant of hydra.python.syntax.ClosedPattern
-closedPatternLiteral :: Typed.TypedTerm Syntax.LiteralExpression -> Typed.TypedTerm Syntax.ClosedPattern
-closedPatternLiteral x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ClosedPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "literal"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the mapping variant of hydra.python.syntax.ClosedPattern
-closedPatternMapping :: Typed.TypedTerm Syntax.MappingPattern -> Typed.TypedTerm Syntax.ClosedPattern
-closedPatternMapping x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ClosedPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "mapping"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the sequence variant of hydra.python.syntax.ClosedPattern
-closedPatternSequence :: Typed.TypedTerm Syntax.SequencePattern -> Typed.TypedTerm Syntax.ClosedPattern
-closedPatternSequence x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ClosedPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "sequence"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the value variant of hydra.python.syntax.ClosedPattern
-closedPatternValue :: Typed.TypedTerm Syntax.ValuePattern -> Typed.TypedTerm Syntax.ClosedPattern
-closedPatternValue x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ClosedPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "value"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the wildcard variant of hydra.python.syntax.ClosedPattern
-closedPatternWildcard :: Typed.TypedTerm Syntax.ClosedPattern
-closedPatternWildcard =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ClosedPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "wildcard"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL constructor for hydra.python.syntax.CommaStarEtc
-commaStarEtc :: Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.CommaStarEtc
-commaStarEtc paramMaybeDefault keywords =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.CommaStarEtc"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramMaybeDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramMaybeDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywords"),
-          Core.fieldTerm = (Typed.unTypedTerm keywords)}]}))
-
--- | DSL name token for hydra.python.syntax.CommaStarEtc
-commaStarEtcCommaStarEtc :: Typed.TypedName Syntax.CommaStarEtc
-commaStarEtcCommaStarEtc = Typed.TypedName (Core.Name "hydra.python.syntax.CommaStarEtc")
-
--- | DSL accessor for the keywords field of hydra.python.syntax.CommaStarEtc
-commaStarEtcKeywords :: Typed.TypedTerm Syntax.CommaStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords)
-commaStarEtcKeywords x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.CommaStarEtc"),
-        Core.projectionFieldName = (Core.Name "keywords")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramMaybeDefault field of hydra.python.syntax.CommaStarEtc
-commaStarEtcParamMaybeDefault :: Typed.TypedTerm Syntax.CommaStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault]
-commaStarEtcParamMaybeDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.CommaStarEtc"),
-        Core.projectionFieldName = (Core.Name "paramMaybeDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the keywords field of hydra.python.syntax.CommaStarEtc
-commaStarEtcWithKeywords :: Typed.TypedTerm Syntax.CommaStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.CommaStarEtc
-commaStarEtcWithKeywords original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.CommaStarEtc"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramMaybeDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.CommaStarEtc"),
-              Core.projectionFieldName = (Core.Name "paramMaybeDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywords"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the paramMaybeDefault field of hydra.python.syntax.CommaStarEtc
-commaStarEtcWithParamMaybeDefault :: Typed.TypedTerm Syntax.CommaStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm Syntax.CommaStarEtc
-commaStarEtcWithParamMaybeDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.CommaStarEtc"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramMaybeDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywords"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.CommaStarEtc"),
-              Core.projectionFieldName = (Core.Name "keywords")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.CompareOpBitwiseOrPair
-compareOpBitwiseOrPair :: Typed.TypedTerm Syntax.CompareOp -> Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.CompareOpBitwiseOrPair
-compareOpBitwiseOrPair operator rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          Core.fieldTerm = (Typed.unTypedTerm operator)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL name token for hydra.python.syntax.CompareOpBitwiseOrPair
-compareOpBitwiseOrPairCompareOpBitwiseOrPair :: Typed.TypedName Syntax.CompareOpBitwiseOrPair
-compareOpBitwiseOrPairCompareOpBitwiseOrPair = Typed.TypedName (Core.Name "hydra.python.syntax.CompareOpBitwiseOrPair")
-
--- | DSL accessor for the operator field of hydra.python.syntax.CompareOpBitwiseOrPair
-compareOpBitwiseOrPairOperator :: Typed.TypedTerm Syntax.CompareOpBitwiseOrPair -> Typed.TypedTerm Syntax.CompareOp
-compareOpBitwiseOrPairOperator x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
-        Core.projectionFieldName = (Core.Name "operator")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.python.syntax.CompareOpBitwiseOrPair
-compareOpBitwiseOrPairRhs :: Typed.TypedTerm Syntax.CompareOpBitwiseOrPair -> Typed.TypedTerm Syntax.BitwiseOr
-compareOpBitwiseOrPairRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the operator field of hydra.python.syntax.CompareOpBitwiseOrPair
-compareOpBitwiseOrPairWithOperator :: Typed.TypedTerm Syntax.CompareOpBitwiseOrPair -> Typed.TypedTerm Syntax.CompareOp -> Typed.TypedTerm Syntax.CompareOpBitwiseOrPair
-compareOpBitwiseOrPairWithOperator original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          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.python.syntax.CompareOpBitwiseOrPair"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.CompareOpBitwiseOrPair
-compareOpBitwiseOrPairWithRhs :: Typed.TypedTerm Syntax.CompareOpBitwiseOrPair -> Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.CompareOpBitwiseOrPair
-compareOpBitwiseOrPairWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
-              Core.projectionFieldName = (Core.Name "operator")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL name token for hydra.python.syntax.CompareOp
-compareOpCompareOp :: Typed.TypedName Syntax.CompareOp
-compareOpCompareOp = Typed.TypedName (Core.Name "hydra.python.syntax.CompareOp")
-
--- | DSL injection for the eq variant of hydra.python.syntax.CompareOp
-compareOpEq :: Typed.TypedTerm Syntax.CompareOp
-compareOpEq =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompareOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "eq"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the gt variant of hydra.python.syntax.CompareOp
-compareOpGt :: Typed.TypedTerm Syntax.CompareOp
-compareOpGt =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompareOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "gt"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the gte variant of hydra.python.syntax.CompareOp
-compareOpGte :: Typed.TypedTerm Syntax.CompareOp
-compareOpGte =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompareOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "gte"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the in variant of hydra.python.syntax.CompareOp
-compareOpIn :: Typed.TypedTerm Syntax.CompareOp
-compareOpIn =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompareOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "in"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the is variant of hydra.python.syntax.CompareOp
-compareOpIs :: Typed.TypedTerm Syntax.CompareOp
-compareOpIs =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompareOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "is"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the isnot variant of hydra.python.syntax.CompareOp
-compareOpIsnot :: Typed.TypedTerm Syntax.CompareOp
-compareOpIsnot =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompareOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "isnot"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the lt variant of hydra.python.syntax.CompareOp
-compareOpLt :: Typed.TypedTerm Syntax.CompareOp
-compareOpLt =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompareOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "lt"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the lte variant of hydra.python.syntax.CompareOp
-compareOpLte :: Typed.TypedTerm Syntax.CompareOp
-compareOpLte =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompareOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "lte"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the noteq variant of hydra.python.syntax.CompareOp
-compareOpNoteq :: Typed.TypedTerm Syntax.CompareOp
-compareOpNoteq =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompareOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "noteq"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the notin variant of hydra.python.syntax.CompareOp
-compareOpNotin :: Typed.TypedTerm Syntax.CompareOp
-compareOpNotin =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompareOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "notin"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL constructor for hydra.python.syntax.Comparison
-comparison :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm [Syntax.CompareOpBitwiseOrPair] -> Typed.TypedTerm Syntax.Comparison
-comparison lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Comparison"),
-      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 name token for hydra.python.syntax.Comparison
-comparisonComparison :: Typed.TypedName Syntax.Comparison
-comparisonComparison = Typed.TypedName (Core.Name "hydra.python.syntax.Comparison")
-
--- | DSL accessor for the lhs field of hydra.python.syntax.Comparison
-comparisonLhs :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm Syntax.BitwiseOr
-comparisonLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Comparison"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.python.syntax.Comparison
-comparisonRhs :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm [Syntax.CompareOpBitwiseOrPair]
-comparisonRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Comparison"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.python.syntax.Comparison
-comparisonWithLhs :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.Comparison
-comparisonWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Comparison"),
-      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.python.syntax.Comparison"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.Comparison
-comparisonWithRhs :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm [Syntax.CompareOpBitwiseOrPair] -> Typed.TypedTerm Syntax.Comparison
-comparisonWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Comparison"),
-      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.python.syntax.Comparison"),
-              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.python.syntax.ComplexNumber
-complexNumber :: Typed.TypedTerm Syntax.SignedRealNumber -> Typed.TypedTerm Syntax.PlusOrMinus -> Typed.TypedTerm Syntax.ImaginaryNumber -> Typed.TypedTerm Syntax.ComplexNumber
-complexNumber real plusOrMinus imaginary =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "real"),
-          Core.fieldTerm = (Typed.unTypedTerm real)},
-        Core.Field {
-          Core.fieldName = (Core.Name "plusOrMinus"),
-          Core.fieldTerm = (Typed.unTypedTerm plusOrMinus)},
-        Core.Field {
-          Core.fieldName = (Core.Name "imaginary"),
-          Core.fieldTerm = (Typed.unTypedTerm imaginary)}]}))
-
--- | DSL name token for hydra.python.syntax.ComplexNumber
-complexNumberComplexNumber :: Typed.TypedName Syntax.ComplexNumber
-complexNumberComplexNumber = Typed.TypedName (Core.Name "hydra.python.syntax.ComplexNumber")
-
--- | DSL accessor for the imaginary field of hydra.python.syntax.ComplexNumber
-complexNumberImaginary :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.ImaginaryNumber
-complexNumberImaginary x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-        Core.projectionFieldName = (Core.Name "imaginary")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the plusOrMinus field of hydra.python.syntax.ComplexNumber
-complexNumberPlusOrMinus :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.PlusOrMinus
-complexNumberPlusOrMinus x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-        Core.projectionFieldName = (Core.Name "plusOrMinus")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the real field of hydra.python.syntax.ComplexNumber
-complexNumberReal :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.SignedRealNumber
-complexNumberReal x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-        Core.projectionFieldName = (Core.Name "real")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the imaginary field of hydra.python.syntax.ComplexNumber
-complexNumberWithImaginary :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.ImaginaryNumber -> Typed.TypedTerm Syntax.ComplexNumber
-complexNumberWithImaginary original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "real"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-              Core.projectionFieldName = (Core.Name "real")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "plusOrMinus"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-              Core.projectionFieldName = (Core.Name "plusOrMinus")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "imaginary"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the plusOrMinus field of hydra.python.syntax.ComplexNumber
-complexNumberWithPlusOrMinus :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.PlusOrMinus -> Typed.TypedTerm Syntax.ComplexNumber
-complexNumberWithPlusOrMinus original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "real"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-              Core.projectionFieldName = (Core.Name "real")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "plusOrMinus"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "imaginary"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-              Core.projectionFieldName = (Core.Name "imaginary")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the real field of hydra.python.syntax.ComplexNumber
-complexNumberWithReal :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.SignedRealNumber -> Typed.TypedTerm Syntax.ComplexNumber
-complexNumberWithReal original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "real"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "plusOrMinus"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-              Core.projectionFieldName = (Core.Name "plusOrMinus")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "imaginary"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ComplexNumber"),
-              Core.projectionFieldName = (Core.Name "imaginary")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the classDef variant of hydra.python.syntax.CompoundStatement
-compoundStatementClassDef :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.CompoundStatement
-compoundStatementClassDef x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompoundStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "classDef"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.CompoundStatement
-compoundStatementCompoundStatement :: Typed.TypedName Syntax.CompoundStatement
-compoundStatementCompoundStatement = Typed.TypedName (Core.Name "hydra.python.syntax.CompoundStatement")
-
--- | DSL injection for the for variant of hydra.python.syntax.CompoundStatement
-compoundStatementFor :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.CompoundStatement
-compoundStatementFor x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompoundStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "for"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the function variant of hydra.python.syntax.CompoundStatement
-compoundStatementFunction :: Typed.TypedTerm Syntax.FunctionDefinition -> Typed.TypedTerm Syntax.CompoundStatement
-compoundStatementFunction x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompoundStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "function"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the if variant of hydra.python.syntax.CompoundStatement
-compoundStatementIf :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.CompoundStatement
-compoundStatementIf x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompoundStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "if"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the match variant of hydra.python.syntax.CompoundStatement
-compoundStatementMatch :: Typed.TypedTerm Syntax.MatchStatement -> Typed.TypedTerm Syntax.CompoundStatement
-compoundStatementMatch x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompoundStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "match"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the try variant of hydra.python.syntax.CompoundStatement
-compoundStatementTry :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.CompoundStatement
-compoundStatementTry x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompoundStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "try"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the while variant of hydra.python.syntax.CompoundStatement
-compoundStatementWhile :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.CompoundStatement
-compoundStatementWhile x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompoundStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "while"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the with variant of hydra.python.syntax.CompoundStatement
-compoundStatementWith :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm Syntax.CompoundStatement
-compoundStatementWith x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.CompoundStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "with"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.python.syntax.Conditional
-conditional :: Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Conditional
-conditional body if_ else_ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Conditional"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)},
-        Core.Field {
-          Core.fieldName = (Core.Name "if"),
-          Core.fieldTerm = (Typed.unTypedTerm if_)},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Typed.unTypedTerm else_)}]}))
-
--- | DSL accessor for the body field of hydra.python.syntax.Conditional
-conditionalBody :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Disjunction
-conditionalBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Conditional"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Conditional
-conditionalConditional :: Typed.TypedName Syntax.Conditional
-conditionalConditional = Typed.TypedName (Core.Name "hydra.python.syntax.Conditional")
-
--- | DSL accessor for the else field of hydra.python.syntax.Conditional
-conditionalElse :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Expression
-conditionalElse x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Conditional"),
-        Core.projectionFieldName = (Core.Name "else")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the if field of hydra.python.syntax.Conditional
-conditionalIf :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Disjunction
-conditionalIf x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Conditional"),
-        Core.projectionFieldName = (Core.Name "if")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.python.syntax.Conditional
-conditionalWithBody :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.Conditional
-conditionalWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Conditional"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "if"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Conditional"),
-              Core.projectionFieldName = (Core.Name "if")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Conditional"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the else field of hydra.python.syntax.Conditional
-conditionalWithElse :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Conditional
-conditionalWithElse original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Conditional"),
-      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.python.syntax.Conditional"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "if"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Conditional"),
-              Core.projectionFieldName = (Core.Name "if")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the if field of hydra.python.syntax.Conditional
-conditionalWithIf :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.Conditional
-conditionalWithIf original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Conditional"),
-      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.python.syntax.Conditional"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "if"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Conditional"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.python.syntax.Conjunction wrapper
-conjunction :: Typed.TypedTerm [Syntax.Inversion] -> Typed.TypedTerm Syntax.Conjunction
-conjunction x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Conjunction"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Conjunction
-conjunctionConjunction :: Typed.TypedName Syntax.Conjunction
-conjunctionConjunction = Typed.TypedName (Core.Name "hydra.python.syntax.Conjunction")
-
--- | DSL constructor for the hydra.python.syntax.Decorators wrapper
-decorators :: Typed.TypedTerm [Syntax.NamedExpression] -> Typed.TypedTerm Syntax.Decorators
-decorators x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Decorators"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Decorators
-decoratorsDecorators :: Typed.TypedName Syntax.Decorators
-decoratorsDecorators = Typed.TypedName (Core.Name "hydra.python.syntax.Decorators")
-
--- | DSL constructor for the hydra.python.syntax.Default wrapper
-default_ :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Default
-default_ x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Default"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Default
-defaultDefault :: Typed.TypedName Syntax.Default
-defaultDefault = Typed.TypedName (Core.Name "hydra.python.syntax.Default")
-
--- | DSL constructor for the hydra.python.syntax.DelStatement wrapper
-delStatement :: Typed.TypedTerm Syntax.DelTargets -> Typed.TypedTerm Syntax.DelStatement
-delStatement x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.DelStatement"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.DelStatement
-delStatementDelStatement :: Typed.TypedName Syntax.DelStatement
-delStatementDelStatement = Typed.TypedName (Core.Name "hydra.python.syntax.DelStatement")
-
--- | DSL name token for hydra.python.syntax.DelTAtom
-delTAtomDelTAtom :: Typed.TypedName Syntax.DelTAtom
-delTAtomDelTAtom = Typed.TypedName (Core.Name "hydra.python.syntax.DelTAtom")
-
--- | DSL injection for the name variant of hydra.python.syntax.DelTAtom
-delTAtomName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.DelTAtom
-delTAtomName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.DelTAtom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "name"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the target variant of hydra.python.syntax.DelTAtom
-delTAtomTarget :: Typed.TypedTerm Syntax.DelTarget -> Typed.TypedTerm Syntax.DelTAtom
-delTAtomTarget x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.DelTAtom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "target"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the targets variant of hydra.python.syntax.DelTAtom
-delTAtomTargets :: Typed.TypedTerm Syntax.DelTargets -> Typed.TypedTerm Syntax.DelTAtom
-delTAtomTargets x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.DelTAtom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "targets"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the delTAtom variant of hydra.python.syntax.DelTarget
-delTargetDelTAtom :: Typed.TypedTerm Syntax.DelTAtom -> Typed.TypedTerm Syntax.DelTarget
-delTargetDelTAtom x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.DelTarget"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "delTAtom"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.DelTarget
-delTargetDelTarget :: Typed.TypedName Syntax.DelTarget
-delTargetDelTarget = Typed.TypedName (Core.Name "hydra.python.syntax.DelTarget")
-
--- | DSL injection for the primaryAndName variant of hydra.python.syntax.DelTarget
-delTargetPrimaryAndName :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.DelTarget
-delTargetPrimaryAndName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.DelTarget"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "primaryAndName"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the primaryAndSlices variant of hydra.python.syntax.DelTarget
-delTargetPrimaryAndSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.DelTarget
-delTargetPrimaryAndSlices x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.DelTarget"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "primaryAndSlices"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.DelTargets wrapper
-delTargets :: Typed.TypedTerm [Syntax.DelTarget] -> Typed.TypedTerm Syntax.DelTargets
-delTargets x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.DelTargets"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.DelTargets
-delTargetsDelTargets :: Typed.TypedName Syntax.DelTargets
-delTargetsDelTargets = Typed.TypedName (Core.Name "hydra.python.syntax.DelTargets")
-
--- | DSL constructor for the hydra.python.syntax.Dict wrapper
-dict :: Typed.TypedTerm [Syntax.DoubleStarredKvpair] -> Typed.TypedTerm Syntax.Dict
-dict x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Dict"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Dict
-dictDict :: Typed.TypedName Syntax.Dict
-dictDict = Typed.TypedName (Core.Name "hydra.python.syntax.Dict")
-
--- | DSL constructor for hydra.python.syntax.Dictcomp
-dictcomp :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Dictcomp
-dictcomp kvpair forIfClauses =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Dictcomp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "kvpair"),
-          Core.fieldTerm = (Typed.unTypedTerm kvpair)},
-        Core.Field {
-          Core.fieldName = (Core.Name "forIfClauses"),
-          Core.fieldTerm = (Typed.unTypedTerm forIfClauses)}]}))
-
--- | DSL name token for hydra.python.syntax.Dictcomp
-dictcompDictcomp :: Typed.TypedName Syntax.Dictcomp
-dictcompDictcomp = Typed.TypedName (Core.Name "hydra.python.syntax.Dictcomp")
-
--- | DSL accessor for the forIfClauses field of hydra.python.syntax.Dictcomp
-dictcompForIfClauses :: Typed.TypedTerm Syntax.Dictcomp -> Typed.TypedTerm Syntax.ForIfClauses
-dictcompForIfClauses x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Dictcomp"),
-        Core.projectionFieldName = (Core.Name "forIfClauses")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the kvpair field of hydra.python.syntax.Dictcomp
-dictcompKvpair :: Typed.TypedTerm Syntax.Dictcomp -> Typed.TypedTerm Syntax.Kvpair
-dictcompKvpair x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Dictcomp"),
-        Core.projectionFieldName = (Core.Name "kvpair")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the forIfClauses field of hydra.python.syntax.Dictcomp
-dictcompWithForIfClauses :: Typed.TypedTerm Syntax.Dictcomp -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Dictcomp
-dictcompWithForIfClauses original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Dictcomp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "kvpair"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Dictcomp"),
-              Core.projectionFieldName = (Core.Name "kvpair")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "forIfClauses"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the kvpair field of hydra.python.syntax.Dictcomp
-dictcompWithKvpair :: Typed.TypedTerm Syntax.Dictcomp -> Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.Dictcomp
-dictcompWithKvpair original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Dictcomp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "kvpair"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "forIfClauses"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Dictcomp"),
-              Core.projectionFieldName = (Core.Name "forIfClauses")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.python.syntax.Disjunction wrapper
-disjunction :: Typed.TypedTerm [Syntax.Conjunction] -> Typed.TypedTerm Syntax.Disjunction
-disjunction x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Disjunction"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Disjunction
-disjunctionDisjunction :: Typed.TypedName Syntax.Disjunction
-disjunctionDisjunction = Typed.TypedName (Core.Name "hydra.python.syntax.Disjunction")
-
--- | DSL constructor for hydra.python.syntax.DottedAsName
-dottedAsName :: Typed.TypedTerm Syntax.DottedName -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.DottedAsName
-dottedAsName name as =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.DottedAsName"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Typed.unTypedTerm as)}]}))
-
--- | DSL accessor for the as field of hydra.python.syntax.DottedAsName
-dottedAsNameAs :: Typed.TypedTerm Syntax.DottedAsName -> Typed.TypedTerm (Maybe Syntax.Name)
-dottedAsNameAs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.DottedAsName"),
-        Core.projectionFieldName = (Core.Name "as")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.DottedAsName
-dottedAsNameDottedAsName :: Typed.TypedName Syntax.DottedAsName
-dottedAsNameDottedAsName = Typed.TypedName (Core.Name "hydra.python.syntax.DottedAsName")
-
--- | DSL accessor for the name field of hydra.python.syntax.DottedAsName
-dottedAsNameName :: Typed.TypedTerm Syntax.DottedAsName -> Typed.TypedTerm Syntax.DottedName
-dottedAsNameName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.DottedAsName"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the as field of hydra.python.syntax.DottedAsName
-dottedAsNameWithAs :: Typed.TypedTerm Syntax.DottedAsName -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.DottedAsName
-dottedAsNameWithAs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.DottedAsName"),
-      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.python.syntax.DottedAsName"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the name field of hydra.python.syntax.DottedAsName
-dottedAsNameWithName :: Typed.TypedTerm Syntax.DottedAsName -> Typed.TypedTerm Syntax.DottedName -> Typed.TypedTerm Syntax.DottedAsName
-dottedAsNameWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.DottedAsName"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.DottedAsName"),
-              Core.projectionFieldName = (Core.Name "as")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.python.syntax.DottedName wrapper
-dottedName :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.DottedName
-dottedName x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.DottedName"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.DottedName
-dottedNameDottedName :: Typed.TypedName Syntax.DottedName
-dottedNameDottedName = Typed.TypedName (Core.Name "hydra.python.syntax.DottedName")
-
--- | DSL constructor for the hydra.python.syntax.DoubleStarPattern wrapper
-doubleStarPattern :: Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.DoubleStarPattern
-doubleStarPattern x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.DoubleStarPattern"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.DoubleStarPattern
-doubleStarPatternDoubleStarPattern :: Typed.TypedName Syntax.DoubleStarPattern
-doubleStarPatternDoubleStarPattern = Typed.TypedName (Core.Name "hydra.python.syntax.DoubleStarPattern")
-
--- | DSL constructor for hydra.python.syntax.DoubleStarTypeParameter
-doubleStarTypeParameter :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.DoubleStarTypeParameter
-doubleStarTypeParameter name default_ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.DoubleStarTypeParameter"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm default_)}]}))
-
--- | DSL accessor for the default field of hydra.python.syntax.DoubleStarTypeParameter
-doubleStarTypeParameterDefault :: Typed.TypedTerm Syntax.DoubleStarTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression)
-doubleStarTypeParameterDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.DoubleStarTypeParameter"),
-        Core.projectionFieldName = (Core.Name "default")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.DoubleStarTypeParameter
-doubleStarTypeParameterDoubleStarTypeParameter :: Typed.TypedName Syntax.DoubleStarTypeParameter
-doubleStarTypeParameterDoubleStarTypeParameter = Typed.TypedName (Core.Name "hydra.python.syntax.DoubleStarTypeParameter")
-
--- | DSL accessor for the name field of hydra.python.syntax.DoubleStarTypeParameter
-doubleStarTypeParameterName :: Typed.TypedTerm Syntax.DoubleStarTypeParameter -> Typed.TypedTerm Syntax.Name
-doubleStarTypeParameterName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.DoubleStarTypeParameter"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the default field of hydra.python.syntax.DoubleStarTypeParameter
-doubleStarTypeParameterWithDefault :: Typed.TypedTerm Syntax.DoubleStarTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.DoubleStarTypeParameter
-doubleStarTypeParameterWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.DoubleStarTypeParameter"),
-      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.python.syntax.DoubleStarTypeParameter"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the name field of hydra.python.syntax.DoubleStarTypeParameter
-doubleStarTypeParameterWithName :: Typed.TypedTerm Syntax.DoubleStarTypeParameter -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.DoubleStarTypeParameter
-doubleStarTypeParameterWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.DoubleStarTypeParameter"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          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.python.syntax.DoubleStarTypeParameter"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL name token for hydra.python.syntax.DoubleStarredKvpair
-doubleStarredKvpairDoubleStarredKvpair :: Typed.TypedName Syntax.DoubleStarredKvpair
-doubleStarredKvpairDoubleStarredKvpair = Typed.TypedName (Core.Name "hydra.python.syntax.DoubleStarredKvpair")
-
--- | DSL injection for the pair variant of hydra.python.syntax.DoubleStarredKvpair
-doubleStarredKvpairPair :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.DoubleStarredKvpair
-doubleStarredKvpairPair x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.DoubleStarredKvpair"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "pair"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the starred variant of hydra.python.syntax.DoubleStarredKvpair
-doubleStarredKvpairStarred :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.DoubleStarredKvpair
-doubleStarredKvpairStarred x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.DoubleStarredKvpair"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starred"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.Eval wrapper
-eval :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Eval
-eval x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Eval"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Eval
-evalEval :: Typed.TypedName Syntax.Eval
-evalEval = Typed.TypedName (Core.Name "hydra.python.syntax.Eval")
-
--- | DSL constructor for hydra.python.syntax.ExceptBlock
-exceptBlock :: Typed.TypedTerm (Maybe Syntax.ExceptExpression) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ExceptBlock
-exceptBlock expression body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ExceptBlock"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm expression)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the body field of hydra.python.syntax.ExceptBlock
-exceptBlockBody :: Typed.TypedTerm Syntax.ExceptBlock -> Typed.TypedTerm Syntax.Block
-exceptBlockBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptBlock"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ExceptBlock
-exceptBlockExceptBlock :: Typed.TypedName Syntax.ExceptBlock
-exceptBlockExceptBlock = Typed.TypedName (Core.Name "hydra.python.syntax.ExceptBlock")
-
--- | DSL accessor for the expression field of hydra.python.syntax.ExceptBlock
-exceptBlockExpression :: Typed.TypedTerm Syntax.ExceptBlock -> Typed.TypedTerm (Maybe Syntax.ExceptExpression)
-exceptBlockExpression x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptBlock"),
-        Core.projectionFieldName = (Core.Name "expression")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the body field of hydra.python.syntax.ExceptBlock
-exceptBlockWithBody :: Typed.TypedTerm Syntax.ExceptBlock -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ExceptBlock
-exceptBlockWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ExceptBlock"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptBlock"),
-              Core.projectionFieldName = (Core.Name "expression")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the expression field of hydra.python.syntax.ExceptBlock
-exceptBlockWithExpression :: Typed.TypedTerm Syntax.ExceptBlock -> Typed.TypedTerm (Maybe Syntax.ExceptExpression) -> Typed.TypedTerm Syntax.ExceptBlock
-exceptBlockWithExpression original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ExceptBlock"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          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.python.syntax.ExceptBlock"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.ExceptExpression
-exceptExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.ExceptExpression
-exceptExpression expression as =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ExceptExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm expression)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Typed.unTypedTerm as)}]}))
-
--- | DSL accessor for the as field of hydra.python.syntax.ExceptExpression
-exceptExpressionAs :: Typed.TypedTerm Syntax.ExceptExpression -> Typed.TypedTerm (Maybe Syntax.Name)
-exceptExpressionAs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptExpression"),
-        Core.projectionFieldName = (Core.Name "as")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ExceptExpression
-exceptExpressionExceptExpression :: Typed.TypedName Syntax.ExceptExpression
-exceptExpressionExceptExpression = Typed.TypedName (Core.Name "hydra.python.syntax.ExceptExpression")
-
--- | DSL accessor for the expression field of hydra.python.syntax.ExceptExpression
-exceptExpressionExpression :: Typed.TypedTerm Syntax.ExceptExpression -> Typed.TypedTerm Syntax.Expression
-exceptExpressionExpression x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptExpression"),
-        Core.projectionFieldName = (Core.Name "expression")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the as field of hydra.python.syntax.ExceptExpression
-exceptExpressionWithAs :: Typed.TypedTerm Syntax.ExceptExpression -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.ExceptExpression
-exceptExpressionWithAs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ExceptExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptExpression"),
-              Core.projectionFieldName = (Core.Name "expression")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the expression field of hydra.python.syntax.ExceptExpression
-exceptExpressionWithExpression :: Typed.TypedTerm Syntax.ExceptExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ExceptExpression
-exceptExpressionWithExpression original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ExceptExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptExpression"),
-              Core.projectionFieldName = (Core.Name "as")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.ExceptStarBlock
-exceptStarBlock :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ExceptStarBlock
-exceptStarBlock expression as body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ExceptStarBlock"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm expression)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Typed.unTypedTerm as)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the as field of hydra.python.syntax.ExceptStarBlock
-exceptStarBlockAs :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm (Maybe Syntax.Name)
-exceptStarBlockAs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptStarBlock"),
-        Core.projectionFieldName = (Core.Name "as")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body field of hydra.python.syntax.ExceptStarBlock
-exceptStarBlockBody :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm Syntax.Block
-exceptStarBlockBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptStarBlock"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ExceptStarBlock
-exceptStarBlockExceptStarBlock :: Typed.TypedName Syntax.ExceptStarBlock
-exceptStarBlockExceptStarBlock = Typed.TypedName (Core.Name "hydra.python.syntax.ExceptStarBlock")
-
--- | DSL accessor for the expression field of hydra.python.syntax.ExceptStarBlock
-exceptStarBlockExpression :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm Syntax.Expression
-exceptStarBlockExpression x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptStarBlock"),
-        Core.projectionFieldName = (Core.Name "expression")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the as field of hydra.python.syntax.ExceptStarBlock
-exceptStarBlockWithAs :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.ExceptStarBlock
-exceptStarBlockWithAs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ExceptStarBlock"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptStarBlock"),
-              Core.projectionFieldName = (Core.Name "expression")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          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.python.syntax.ExceptStarBlock"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the body field of hydra.python.syntax.ExceptStarBlock
-exceptStarBlockWithBody :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ExceptStarBlock
-exceptStarBlockWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ExceptStarBlock"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptStarBlock"),
-              Core.projectionFieldName = (Core.Name "expression")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptStarBlock"),
-              Core.projectionFieldName = (Core.Name "as")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the expression field of hydra.python.syntax.ExceptStarBlock
-exceptStarBlockWithExpression :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ExceptStarBlock
-exceptStarBlockWithExpression original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ExceptStarBlock"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ExceptStarBlock"),
-              Core.projectionFieldName = (Core.Name "as")})),
-            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.python.syntax.ExceptStarBlock"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the conditional variant of hydra.python.syntax.Expression
-expressionConditional :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Expression
-expressionConditional x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Expression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "conditional"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.Expression
-expressionExpression :: Typed.TypedName Syntax.Expression
-expressionExpression = Typed.TypedName (Core.Name "hydra.python.syntax.Expression")
-
--- | DSL injection for the lambda variant of hydra.python.syntax.Expression
-expressionLambda :: Typed.TypedTerm Syntax.Lambda -> Typed.TypedTerm Syntax.Expression
-expressionLambda x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Expression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "lambda"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the simple variant of hydra.python.syntax.Expression
-expressionSimple :: Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.Expression
-expressionSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Expression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the complement variant of hydra.python.syntax.Factor
-factorComplement :: Typed.TypedTerm Syntax.Factor -> Typed.TypedTerm Syntax.Factor
-factorComplement x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Factor"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "complement"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.Factor
-factorFactor :: Typed.TypedName Syntax.Factor
-factorFactor = Typed.TypedName (Core.Name "hydra.python.syntax.Factor")
-
--- | DSL injection for the negative variant of hydra.python.syntax.Factor
-factorNegative :: Typed.TypedTerm Syntax.Factor -> Typed.TypedTerm Syntax.Factor
-factorNegative x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Factor"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "negative"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the positive variant of hydra.python.syntax.Factor
-factorPositive :: Typed.TypedTerm Syntax.Factor -> Typed.TypedTerm Syntax.Factor
-factorPositive x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Factor"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "positive"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the simple variant of hydra.python.syntax.Factor
-factorSimple :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm Syntax.Factor
-factorSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Factor"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.File wrapper
-file :: Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.File
-file x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.File"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.File
-fileFile :: Typed.TypedName Syntax.File
-fileFile = Typed.TypedName (Core.Name "hydra.python.syntax.File")
-
--- | DSL constructor for hydra.python.syntax.ForIfClause
-forIfClause :: Typed.TypedTerm Bool -> Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm [Syntax.Disjunction] -> Typed.TypedTerm Syntax.ForIfClause
-forIfClause async targets in_ ifs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Typed.unTypedTerm async)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Typed.unTypedTerm targets)},
-        Core.Field {
-          Core.fieldName = (Core.Name "in"),
-          Core.fieldTerm = (Typed.unTypedTerm in_)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ifs"),
-          Core.fieldTerm = (Typed.unTypedTerm ifs)}]}))
-
--- | DSL accessor for the async field of hydra.python.syntax.ForIfClause
-forIfClauseAsync :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm Bool
-forIfClauseAsync x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-        Core.projectionFieldName = (Core.Name "async")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ForIfClause
-forIfClauseForIfClause :: Typed.TypedName Syntax.ForIfClause
-forIfClauseForIfClause = Typed.TypedName (Core.Name "hydra.python.syntax.ForIfClause")
-
--- | DSL accessor for the ifs field of hydra.python.syntax.ForIfClause
-forIfClauseIfs :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm [Syntax.Disjunction]
-forIfClauseIfs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-        Core.projectionFieldName = (Core.Name "ifs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the in field of hydra.python.syntax.ForIfClause
-forIfClauseIn :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm Syntax.Disjunction
-forIfClauseIn x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-        Core.projectionFieldName = (Core.Name "in")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the targets field of hydra.python.syntax.ForIfClause
-forIfClauseTargets :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm [Syntax.StarTarget]
-forIfClauseTargets x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-        Core.projectionFieldName = (Core.Name "targets")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the async field of hydra.python.syntax.ForIfClause
-forIfClauseWithAsync :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForIfClause
-forIfClauseWithAsync original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "in"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "in")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ifs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "ifs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the ifs field of hydra.python.syntax.ForIfClause
-forIfClauseWithIfs :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm [Syntax.Disjunction] -> Typed.TypedTerm Syntax.ForIfClause
-forIfClauseWithIfs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "in"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "in")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ifs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the in field of hydra.python.syntax.ForIfClause
-forIfClauseWithIn :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.ForIfClause
-forIfClauseWithIn original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "in"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ifs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "ifs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the targets field of hydra.python.syntax.ForIfClause
-forIfClauseWithTargets :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.ForIfClause
-forIfClauseWithTargets original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "in"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "in")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ifs"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForIfClause"),
-              Core.projectionFieldName = (Core.Name "ifs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.python.syntax.ForIfClauses wrapper
-forIfClauses :: Typed.TypedTerm [Syntax.ForIfClause] -> Typed.TypedTerm Syntax.ForIfClauses
-forIfClauses x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.ForIfClauses"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ForIfClauses
-forIfClausesForIfClauses :: Typed.TypedName Syntax.ForIfClauses
-forIfClausesForIfClauses = Typed.TypedName (Core.Name "hydra.python.syntax.ForIfClauses")
-
--- | DSL constructor for hydra.python.syntax.ForStatement
-forStatement :: Typed.TypedTerm Bool -> Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.ForStatement
-forStatement async targets expressions typeComment body else_ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Typed.unTypedTerm async)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Typed.unTypedTerm targets)},
-        Core.Field {
-          Core.fieldName = (Core.Name "expressions"),
-          Core.fieldTerm = (Typed.unTypedTerm expressions)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm typeComment)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Typed.unTypedTerm else_)}]}))
-
--- | DSL accessor for the async field of hydra.python.syntax.ForStatement
-forStatementAsync :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Bool
-forStatementAsync x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-        Core.projectionFieldName = (Core.Name "async")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body field of hydra.python.syntax.ForStatement
-forStatementBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Block
-forStatementBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the else field of hydra.python.syntax.ForStatement
-forStatementElse :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Block)
-forStatementElse x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-        Core.projectionFieldName = (Core.Name "else")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the expressions field of hydra.python.syntax.ForStatement
-forStatementExpressions :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm [Syntax.StarExpression]
-forStatementExpressions x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-        Core.projectionFieldName = (Core.Name "expressions")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ForStatement
-forStatementForStatement :: Typed.TypedName Syntax.ForStatement
-forStatementForStatement = Typed.TypedName (Core.Name "hydra.python.syntax.ForStatement")
-
--- | DSL accessor for the targets field of hydra.python.syntax.ForStatement
-forStatementTargets :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm [Syntax.StarTarget]
-forStatementTargets x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-        Core.projectionFieldName = (Core.Name "targets")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the typeComment field of hydra.python.syntax.ForStatement
-forStatementTypeComment :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.TypeComment)
-forStatementTypeComment x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-        Core.projectionFieldName = (Core.Name "typeComment")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the async field of hydra.python.syntax.ForStatement
-forStatementWithAsync :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForStatement
-forStatementWithAsync original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "expressions"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "expressions")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            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.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the body field of hydra.python.syntax.ForStatement
-forStatementWithBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ForStatement
-forStatementWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "expressions"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "expressions")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the else field of hydra.python.syntax.ForStatement
-forStatementWithElse :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.ForStatement
-forStatementWithElse original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "expressions"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "expressions")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            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.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the expressions field of hydra.python.syntax.ForStatement
-forStatementWithExpressions :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm Syntax.ForStatement
-forStatementWithExpressions original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "expressions"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            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.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the targets field of hydra.python.syntax.ForStatement
-forStatementWithTargets :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.ForStatement
-forStatementWithTargets original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "expressions"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "expressions")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            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.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the typeComment field of hydra.python.syntax.ForStatement
-forStatementWithTypeComment :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ForStatement
-forStatementWithTypeComment original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "expressions"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "expressions")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          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.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ForStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.python.syntax.FuncTypeComment wrapper
-funcTypeComment :: Typed.TypedTerm Syntax.TypeComment -> Typed.TypedTerm Syntax.FuncTypeComment
-funcTypeComment x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.FuncTypeComment"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.FuncTypeComment
-funcTypeCommentFuncTypeComment :: Typed.TypedName Syntax.FuncTypeComment
-funcTypeCommentFuncTypeComment = Typed.TypedName (Core.Name "hydra.python.syntax.FuncTypeComment")
-
--- | DSL constructor for hydra.python.syntax.FunctionDefRaw
-functionDefRaw :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm (Maybe Syntax.Parameters) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.FuncTypeComment) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.FunctionDefRaw
-functionDefRaw async name typeParams params returnType funcTypeComment block =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Typed.unTypedTerm async)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Typed.unTypedTerm typeParams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm params)},
-        Core.Field {
-          Core.fieldName = (Core.Name "returnType"),
-          Core.fieldTerm = (Typed.unTypedTerm returnType)},
-        Core.Field {
-          Core.fieldName = (Core.Name "funcTypeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm funcTypeComment)},
-        Core.Field {
-          Core.fieldName = (Core.Name "block"),
-          Core.fieldTerm = (Typed.unTypedTerm block)}]}))
-
--- | DSL accessor for the async field of hydra.python.syntax.FunctionDefRaw
-functionDefRawAsync :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Bool
-functionDefRawAsync x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-        Core.projectionFieldName = (Core.Name "async")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the block field of hydra.python.syntax.FunctionDefRaw
-functionDefRawBlock :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.Block
-functionDefRawBlock x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-        Core.projectionFieldName = (Core.Name "block")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the funcTypeComment field of hydra.python.syntax.FunctionDefRaw
-functionDefRawFuncTypeComment :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.FuncTypeComment)
-functionDefRawFuncTypeComment x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-        Core.projectionFieldName = (Core.Name "funcTypeComment")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.FunctionDefRaw
-functionDefRawFunctionDefRaw :: Typed.TypedName Syntax.FunctionDefRaw
-functionDefRawFunctionDefRaw = Typed.TypedName (Core.Name "hydra.python.syntax.FunctionDefRaw")
-
--- | DSL accessor for the name field of hydra.python.syntax.FunctionDefRaw
-functionDefRawName :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.Name
-functionDefRawName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the params field of hydra.python.syntax.FunctionDefRaw
-functionDefRawParams :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.Parameters)
-functionDefRawParams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-        Core.projectionFieldName = (Core.Name "params")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the returnType field of hydra.python.syntax.FunctionDefRaw
-functionDefRawReturnType :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.Expression)
-functionDefRawReturnType x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-        Core.projectionFieldName = (Core.Name "returnType")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the typeParams field of hydra.python.syntax.FunctionDefRaw
-functionDefRawTypeParams :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm [Syntax.TypeParameter]
-functionDefRawTypeParams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-        Core.projectionFieldName = (Core.Name "typeParams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the async field of hydra.python.syntax.FunctionDefRaw
-functionDefRawWithAsync :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDefRaw
-functionDefRawWithAsync original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          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.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "params")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "returnType"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "returnType")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "funcTypeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "funcTypeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "block"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "block")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the block field of hydra.python.syntax.FunctionDefRaw
-functionDefRawWithBlock :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.FunctionDefRaw
-functionDefRawWithBlock original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            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.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "params")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "returnType"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "returnType")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "funcTypeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "funcTypeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "block"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the funcTypeComment field of hydra.python.syntax.FunctionDefRaw
-functionDefRawWithFuncTypeComment :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.FuncTypeComment) -> Typed.TypedTerm Syntax.FunctionDefRaw
-functionDefRawWithFuncTypeComment original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            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.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "params")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "returnType"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "returnType")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "funcTypeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "block"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "block")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.python.syntax.FunctionDefRaw
-functionDefRawWithName :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.FunctionDefRaw
-functionDefRawWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "params")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "returnType"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "returnType")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "funcTypeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "funcTypeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "block"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "block")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the params field of hydra.python.syntax.FunctionDefRaw
-functionDefRawWithParams :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.Parameters) -> Typed.TypedTerm Syntax.FunctionDefRaw
-functionDefRawWithParams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            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.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "returnType"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "returnType")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "funcTypeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "funcTypeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "block"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "block")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the returnType field of hydra.python.syntax.FunctionDefRaw
-functionDefRawWithReturnType :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.FunctionDefRaw
-functionDefRawWithReturnType original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            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.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "params")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "returnType"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "funcTypeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "funcTypeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "block"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "block")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the typeParams field of hydra.python.syntax.FunctionDefRaw
-functionDefRawWithTypeParams :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.FunctionDefRaw
-functionDefRawWithTypeParams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            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.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "params"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "params")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "returnType"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "returnType")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "funcTypeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "funcTypeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "block"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefRaw"),
-              Core.projectionFieldName = (Core.Name "block")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.FunctionDefinition
-functionDefinition :: Typed.TypedTerm (Maybe Syntax.Decorators) -> Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.FunctionDefinition
-functionDefinition decorators raw =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.FunctionDefinition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "decorators"),
-          Core.fieldTerm = (Typed.unTypedTerm decorators)},
-        Core.Field {
-          Core.fieldName = (Core.Name "raw"),
-          Core.fieldTerm = (Typed.unTypedTerm raw)}]}))
-
--- | DSL accessor for the decorators field of hydra.python.syntax.FunctionDefinition
-functionDefinitionDecorators :: Typed.TypedTerm Syntax.FunctionDefinition -> Typed.TypedTerm (Maybe Syntax.Decorators)
-functionDefinitionDecorators x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefinition"),
-        Core.projectionFieldName = (Core.Name "decorators")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.FunctionDefinition
-functionDefinitionFunctionDefinition :: Typed.TypedName Syntax.FunctionDefinition
-functionDefinitionFunctionDefinition = Typed.TypedName (Core.Name "hydra.python.syntax.FunctionDefinition")
-
--- | DSL accessor for the raw field of hydra.python.syntax.FunctionDefinition
-functionDefinitionRaw :: Typed.TypedTerm Syntax.FunctionDefinition -> Typed.TypedTerm Syntax.FunctionDefRaw
-functionDefinitionRaw x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefinition"),
-        Core.projectionFieldName = (Core.Name "raw")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the decorators field of hydra.python.syntax.FunctionDefinition
-functionDefinitionWithDecorators :: Typed.TypedTerm Syntax.FunctionDefinition -> Typed.TypedTerm (Maybe Syntax.Decorators) -> Typed.TypedTerm Syntax.FunctionDefinition
-functionDefinitionWithDecorators original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.FunctionDefinition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "decorators"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "raw"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefinition"),
-              Core.projectionFieldName = (Core.Name "raw")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the raw field of hydra.python.syntax.FunctionDefinition
-functionDefinitionWithRaw :: Typed.TypedTerm Syntax.FunctionDefinition -> Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.FunctionDefinition
-functionDefinitionWithRaw original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.FunctionDefinition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "decorators"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.FunctionDefinition"),
-              Core.projectionFieldName = (Core.Name "decorators")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "raw"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.Genexp
-genexp :: Typed.TypedTerm Syntax.GenexpHead -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Genexp
-genexp head tail =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Genexp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "head"),
-          Core.fieldTerm = (Typed.unTypedTerm head)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tail"),
-          Core.fieldTerm = (Typed.unTypedTerm tail)}]}))
-
--- | DSL name token for hydra.python.syntax.Genexp
-genexpGenexp :: Typed.TypedName Syntax.Genexp
-genexpGenexp = Typed.TypedName (Core.Name "hydra.python.syntax.Genexp")
-
--- | DSL accessor for the head field of hydra.python.syntax.Genexp
-genexpHead :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.GenexpHead
-genexpHead x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Genexp"),
-        Core.projectionFieldName = (Core.Name "head")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL injection for the assignment variant of hydra.python.syntax.GenexpHead
-genexpHeadAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.GenexpHead
-genexpHeadAssignment x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.GenexpHead"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "assignment"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the expression variant of hydra.python.syntax.GenexpHead
-genexpHeadExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.GenexpHead
-genexpHeadExpression x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.GenexpHead"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "expression"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.GenexpHead
-genexpHeadGenexpHead :: Typed.TypedName Syntax.GenexpHead
-genexpHeadGenexpHead = Typed.TypedName (Core.Name "hydra.python.syntax.GenexpHead")
-
--- | DSL accessor for the tail field of hydra.python.syntax.Genexp
-genexpTail :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.ForIfClauses
-genexpTail x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Genexp"),
-        Core.projectionFieldName = (Core.Name "tail")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the head field of hydra.python.syntax.Genexp
-genexpWithHead :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.GenexpHead -> Typed.TypedTerm Syntax.Genexp
-genexpWithHead original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Genexp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "head"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tail"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Genexp"),
-              Core.projectionFieldName = (Core.Name "tail")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tail field of hydra.python.syntax.Genexp
-genexpWithTail :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Genexp
-genexpWithTail original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Genexp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "head"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Genexp"),
-              Core.projectionFieldName = (Core.Name "head")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tail"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the expression variant of hydra.python.syntax.Group
-groupExpression :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Group
-groupExpression x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Group"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "expression"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.Group
-groupGroup :: Typed.TypedName Syntax.Group
-groupGroup = Typed.TypedName (Core.Name "hydra.python.syntax.Group")
-
--- | DSL constructor for the hydra.python.syntax.GroupPattern wrapper
-groupPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.GroupPattern
-groupPattern x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.GroupPattern"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.GroupPattern
-groupPatternGroupPattern :: Typed.TypedName Syntax.GroupPattern
-groupPatternGroupPattern = Typed.TypedName (Core.Name "hydra.python.syntax.GroupPattern")
-
--- | DSL injection for the yield variant of hydra.python.syntax.Group
-groupYield :: Typed.TypedTerm Syntax.YieldExpression -> Typed.TypedTerm Syntax.Group
-groupYield x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Group"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "yield"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.Guard wrapper
-guard :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Guard
-guard x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Guard"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Guard
-guardGuard :: Typed.TypedName Syntax.Guard
-guardGuard = Typed.TypedName (Core.Name "hydra.python.syntax.Guard")
-
--- | DSL constructor for hydra.python.syntax.IfStatement
-ifStatement :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm (Maybe Syntax.IfTail) -> Typed.TypedTerm Syntax.IfStatement
-ifStatement condition body continuation =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.IfStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "condition"),
-          Core.fieldTerm = (Typed.unTypedTerm condition)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)},
-        Core.Field {
-          Core.fieldName = (Core.Name "continuation"),
-          Core.fieldTerm = (Typed.unTypedTerm continuation)}]}))
-
--- | DSL accessor for the body field of hydra.python.syntax.IfStatement
-ifStatementBody :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Block
-ifStatementBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.IfStatement"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the condition field of hydra.python.syntax.IfStatement
-ifStatementCondition :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.NamedExpression
-ifStatementCondition x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.IfStatement"),
-        Core.projectionFieldName = (Core.Name "condition")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the continuation field of hydra.python.syntax.IfStatement
-ifStatementContinuation :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.IfTail)
-ifStatementContinuation x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.IfStatement"),
-        Core.projectionFieldName = (Core.Name "continuation")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.IfStatement
-ifStatementIfStatement :: Typed.TypedName Syntax.IfStatement
-ifStatementIfStatement = Typed.TypedName (Core.Name "hydra.python.syntax.IfStatement")
-
--- | DSL updater for the body field of hydra.python.syntax.IfStatement
-ifStatementWithBody :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.IfStatement
-ifStatementWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.IfStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "condition"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.IfStatement"),
-              Core.projectionFieldName = (Core.Name "condition")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "continuation"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.IfStatement"),
-              Core.projectionFieldName = (Core.Name "continuation")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the condition field of hydra.python.syntax.IfStatement
-ifStatementWithCondition :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.IfStatement
-ifStatementWithCondition original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.IfStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "condition"),
-          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.python.syntax.IfStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "continuation"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.IfStatement"),
-              Core.projectionFieldName = (Core.Name "continuation")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the continuation field of hydra.python.syntax.IfStatement
-ifStatementWithContinuation :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.IfTail) -> Typed.TypedTerm Syntax.IfStatement
-ifStatementWithContinuation original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.IfStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "condition"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.IfStatement"),
-              Core.projectionFieldName = (Core.Name "condition")})),
-            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.python.syntax.IfStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "continuation"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the elif variant of hydra.python.syntax.IfTail
-ifTailElif :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.IfTail
-ifTailElif x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.IfTail"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "elif"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the else variant of hydra.python.syntax.IfTail
-ifTailElse :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.IfTail
-ifTailElse x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.IfTail"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "else"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.IfTail
-ifTailIfTail :: Typed.TypedName Syntax.IfTail
-ifTailIfTail = Typed.TypedName (Core.Name "hydra.python.syntax.IfTail")
-
--- | DSL constructor for the hydra.python.syntax.ImaginaryNumber wrapper
-imaginaryNumber :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.ImaginaryNumber
-imaginaryNumber x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.ImaginaryNumber"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ImaginaryNumber
-imaginaryNumberImaginaryNumber :: Typed.TypedName Syntax.ImaginaryNumber
-imaginaryNumberImaginaryNumber = Typed.TypedName (Core.Name "hydra.python.syntax.ImaginaryNumber")
-
--- | DSL constructor for hydra.python.syntax.ImportFrom
-importFrom :: Typed.TypedTerm [Syntax.RelativeImportPrefix] -> Typed.TypedTerm (Maybe Syntax.DottedName) -> Typed.TypedTerm Syntax.ImportFromTargets -> Typed.TypedTerm Syntax.ImportFrom
-importFrom prefixes dottedName targets =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "prefixes"),
-          Core.fieldTerm = (Typed.unTypedTerm prefixes)},
-        Core.Field {
-          Core.fieldName = (Core.Name "dottedName"),
-          Core.fieldTerm = (Typed.unTypedTerm dottedName)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Typed.unTypedTerm targets)}]}))
-
--- | DSL constructor for hydra.python.syntax.ImportFromAsName
-importFromAsName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.ImportFromAsName
-importFromAsName name as =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ImportFromAsName"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Typed.unTypedTerm as)}]}))
-
--- | DSL accessor for the as field of hydra.python.syntax.ImportFromAsName
-importFromAsNameAs :: Typed.TypedTerm Syntax.ImportFromAsName -> Typed.TypedTerm (Maybe Syntax.Name)
-importFromAsNameAs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFromAsName"),
-        Core.projectionFieldName = (Core.Name "as")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ImportFromAsName
-importFromAsNameImportFromAsName :: Typed.TypedName Syntax.ImportFromAsName
-importFromAsNameImportFromAsName = Typed.TypedName (Core.Name "hydra.python.syntax.ImportFromAsName")
-
--- | DSL accessor for the name field of hydra.python.syntax.ImportFromAsName
-importFromAsNameName :: Typed.TypedTerm Syntax.ImportFromAsName -> Typed.TypedTerm Syntax.Name
-importFromAsNameName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFromAsName"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the as field of hydra.python.syntax.ImportFromAsName
-importFromAsNameWithAs :: Typed.TypedTerm Syntax.ImportFromAsName -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.ImportFromAsName
-importFromAsNameWithAs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ImportFromAsName"),
-      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.python.syntax.ImportFromAsName"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the name field of hydra.python.syntax.ImportFromAsName
-importFromAsNameWithName :: Typed.TypedTerm Syntax.ImportFromAsName -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ImportFromAsName
-importFromAsNameWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ImportFromAsName"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFromAsName"),
-              Core.projectionFieldName = (Core.Name "as")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL accessor for the dottedName field of hydra.python.syntax.ImportFrom
-importFromDottedName :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm (Maybe Syntax.DottedName)
-importFromDottedName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-        Core.projectionFieldName = (Core.Name "dottedName")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ImportFrom
-importFromImportFrom :: Typed.TypedName Syntax.ImportFrom
-importFromImportFrom = Typed.TypedName (Core.Name "hydra.python.syntax.ImportFrom")
-
--- | DSL accessor for the prefixes field of hydra.python.syntax.ImportFrom
-importFromPrefixes :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm [Syntax.RelativeImportPrefix]
-importFromPrefixes x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-        Core.projectionFieldName = (Core.Name "prefixes")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the targets field of hydra.python.syntax.ImportFrom
-importFromTargets :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm Syntax.ImportFromTargets
-importFromTargets x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-        Core.projectionFieldName = (Core.Name "targets")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ImportFromTargets
-importFromTargetsImportFromTargets :: Typed.TypedName Syntax.ImportFromTargets
-importFromTargetsImportFromTargets = Typed.TypedName (Core.Name "hydra.python.syntax.ImportFromTargets")
-
--- | DSL injection for the parens variant of hydra.python.syntax.ImportFromTargets
-importFromTargetsParens :: Typed.TypedTerm [Syntax.ImportFromAsName] -> Typed.TypedTerm Syntax.ImportFromTargets
-importFromTargetsParens x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ImportFromTargets"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "parens"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the simple variant of hydra.python.syntax.ImportFromTargets
-importFromTargetsSimple :: Typed.TypedTerm [Syntax.ImportFromAsName] -> Typed.TypedTerm Syntax.ImportFromTargets
-importFromTargetsSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ImportFromTargets"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the star variant of hydra.python.syntax.ImportFromTargets
-importFromTargetsStar :: Typed.TypedTerm Syntax.ImportFromTargets
-importFromTargetsStar =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ImportFromTargets"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "star"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL updater for the dottedName field of hydra.python.syntax.ImportFrom
-importFromWithDottedName :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm (Maybe Syntax.DottedName) -> Typed.TypedTerm Syntax.ImportFrom
-importFromWithDottedName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "prefixes"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-              Core.projectionFieldName = (Core.Name "prefixes")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "dottedName"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the prefixes field of hydra.python.syntax.ImportFrom
-importFromWithPrefixes :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm [Syntax.RelativeImportPrefix] -> Typed.TypedTerm Syntax.ImportFrom
-importFromWithPrefixes original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "prefixes"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "dottedName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-              Core.projectionFieldName = (Core.Name "dottedName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the targets field of hydra.python.syntax.ImportFrom
-importFromWithTargets :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm Syntax.ImportFromTargets -> Typed.TypedTerm Syntax.ImportFrom
-importFromWithTargets original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "prefixes"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-              Core.projectionFieldName = (Core.Name "prefixes")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "dottedName"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ImportFrom"),
-              Core.projectionFieldName = (Core.Name "dottedName")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for the hydra.python.syntax.ImportName wrapper
-importName :: Typed.TypedTerm [Syntax.DottedAsName] -> Typed.TypedTerm Syntax.ImportName
-importName x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.ImportName"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ImportName
-importNameImportName :: Typed.TypedName Syntax.ImportName
-importNameImportName = Typed.TypedName (Core.Name "hydra.python.syntax.ImportName")
-
--- | DSL injection for the from variant of hydra.python.syntax.ImportStatement
-importStatementFrom :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm Syntax.ImportStatement
-importStatementFrom x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ImportStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "from"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.ImportStatement
-importStatementImportStatement :: Typed.TypedName Syntax.ImportStatement
-importStatementImportStatement = Typed.TypedName (Core.Name "hydra.python.syntax.ImportStatement")
-
--- | DSL injection for the name variant of hydra.python.syntax.ImportStatement
-importStatementName :: Typed.TypedTerm Syntax.ImportName -> Typed.TypedTerm Syntax.ImportStatement
-importStatementName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ImportStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "name"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.Interactive wrapper
-interactive :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Interactive
-interactive x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Interactive"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Interactive
-interactiveInteractive :: Typed.TypedName Syntax.Interactive
-interactiveInteractive = Typed.TypedName (Core.Name "hydra.python.syntax.Interactive")
-
--- | DSL name token for hydra.python.syntax.Inversion
-inversionInversion :: Typed.TypedName Syntax.Inversion
-inversionInversion = Typed.TypedName (Core.Name "hydra.python.syntax.Inversion")
-
--- | DSL injection for the not variant of hydra.python.syntax.Inversion
-inversionNot :: Typed.TypedTerm Syntax.Inversion -> Typed.TypedTerm Syntax.Inversion
-inversionNot x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Inversion"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "not"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the simple variant of hydra.python.syntax.Inversion
-inversionSimple :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm Syntax.Inversion
-inversionSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Inversion"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.ItemsPattern wrapper
-itemsPattern :: Typed.TypedTerm [Syntax.KeyValuePattern] -> Typed.TypedTerm Syntax.ItemsPattern
-itemsPattern x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.ItemsPattern"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ItemsPattern
-itemsPatternItemsPattern :: Typed.TypedName Syntax.ItemsPattern
-itemsPatternItemsPattern = Typed.TypedName (Core.Name "hydra.python.syntax.ItemsPattern")
-
--- | DSL constructor for hydra.python.syntax.KeyValuePattern
-keyValuePattern :: Typed.TypedTerm Syntax.LiteralExpressionOrAttribute -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.KeyValuePattern
-keyValuePattern key value =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.KeyValuePattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "key"),
-          Core.fieldTerm = (Typed.unTypedTerm key)},
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm value)}]}))
-
--- | DSL accessor for the key field of hydra.python.syntax.KeyValuePattern
-keyValuePatternKey :: Typed.TypedTerm Syntax.KeyValuePattern -> Typed.TypedTerm Syntax.LiteralExpressionOrAttribute
-keyValuePatternKey x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.KeyValuePattern"),
-        Core.projectionFieldName = (Core.Name "key")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.KeyValuePattern
-keyValuePatternKeyValuePattern :: Typed.TypedName Syntax.KeyValuePattern
-keyValuePatternKeyValuePattern = Typed.TypedName (Core.Name "hydra.python.syntax.KeyValuePattern")
-
--- | DSL accessor for the value field of hydra.python.syntax.KeyValuePattern
-keyValuePatternValue :: Typed.TypedTerm Syntax.KeyValuePattern -> Typed.TypedTerm Syntax.Pattern
-keyValuePatternValue x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.KeyValuePattern"),
-        Core.projectionFieldName = (Core.Name "value")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the key field of hydra.python.syntax.KeyValuePattern
-keyValuePatternWithKey :: Typed.TypedTerm Syntax.KeyValuePattern -> Typed.TypedTerm Syntax.LiteralExpressionOrAttribute -> Typed.TypedTerm Syntax.KeyValuePattern
-keyValuePatternWithKey original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.KeyValuePattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "key"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.KeyValuePattern"),
-              Core.projectionFieldName = (Core.Name "value")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the value field of hydra.python.syntax.KeyValuePattern
-keyValuePatternWithValue :: Typed.TypedTerm Syntax.KeyValuePattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.KeyValuePattern
-keyValuePatternWithValue original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.KeyValuePattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "key"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.KeyValuePattern"),
-              Core.projectionFieldName = (Core.Name "key")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.KeywordPattern
-keywordPattern :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.KeywordPattern
-keywordPattern name pattern =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.KeywordPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "pattern"),
-          Core.fieldTerm = (Typed.unTypedTerm pattern)}]}))
-
--- | DSL name token for hydra.python.syntax.KeywordPattern
-keywordPatternKeywordPattern :: Typed.TypedName Syntax.KeywordPattern
-keywordPatternKeywordPattern = Typed.TypedName (Core.Name "hydra.python.syntax.KeywordPattern")
-
--- | DSL accessor for the name field of hydra.python.syntax.KeywordPattern
-keywordPatternName :: Typed.TypedTerm Syntax.KeywordPattern -> Typed.TypedTerm Syntax.Name
-keywordPatternName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.KeywordPattern"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the pattern field of hydra.python.syntax.KeywordPattern
-keywordPatternPattern :: Typed.TypedTerm Syntax.KeywordPattern -> Typed.TypedTerm Syntax.Pattern
-keywordPatternPattern x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.KeywordPattern"),
-        Core.projectionFieldName = (Core.Name "pattern")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.python.syntax.KeywordPattern
-keywordPatternWithName :: Typed.TypedTerm Syntax.KeywordPattern -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.KeywordPattern
-keywordPatternWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.KeywordPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "pattern"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.KeywordPattern"),
-              Core.projectionFieldName = (Core.Name "pattern")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the pattern field of hydra.python.syntax.KeywordPattern
-keywordPatternWithPattern :: Typed.TypedTerm Syntax.KeywordPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.KeywordPattern
-keywordPatternWithPattern original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.KeywordPattern"),
-      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.python.syntax.KeywordPattern"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "pattern"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for the hydra.python.syntax.KeywordPatterns wrapper
-keywordPatterns :: Typed.TypedTerm [Syntax.KeywordPattern] -> Typed.TypedTerm Syntax.KeywordPatterns
-keywordPatterns x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.KeywordPatterns"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.KeywordPatterns
-keywordPatternsKeywordPatterns :: Typed.TypedName Syntax.KeywordPatterns
-keywordPatternsKeywordPatterns = Typed.TypedName (Core.Name "hydra.python.syntax.KeywordPatterns")
-
--- | DSL constructor for the hydra.python.syntax.Keywords wrapper
-keywords :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm Syntax.Keywords
-keywords x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Keywords"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Keywords
-keywordsKeywords :: Typed.TypedName Syntax.Keywords
-keywordsKeywords = Typed.TypedName (Core.Name "hydra.python.syntax.Keywords")
-
--- | DSL constructor for hydra.python.syntax.Kvpair
-kvpair :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Kvpair
-kvpair key value =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Kvpair"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "key"),
-          Core.fieldTerm = (Typed.unTypedTerm key)},
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm value)}]}))
-
--- | DSL accessor for the key field of hydra.python.syntax.Kvpair
-kvpairKey :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.Expression
-kvpairKey x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Kvpair"),
-        Core.projectionFieldName = (Core.Name "key")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Kvpair
-kvpairKvpair :: Typed.TypedName Syntax.Kvpair
-kvpairKvpair = Typed.TypedName (Core.Name "hydra.python.syntax.Kvpair")
-
--- | DSL accessor for the value field of hydra.python.syntax.Kvpair
-kvpairValue :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.Expression
-kvpairValue x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Kvpair"),
-        Core.projectionFieldName = (Core.Name "value")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the key field of hydra.python.syntax.Kvpair
-kvpairWithKey :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Kvpair
-kvpairWithKey original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Kvpair"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "key"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Kvpair"),
-              Core.projectionFieldName = (Core.Name "value")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the value field of hydra.python.syntax.Kvpair
-kvpairWithValue :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Kvpair
-kvpairWithValue original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Kvpair"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "key"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Kvpair"),
-              Core.projectionFieldName = (Core.Name "key")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.Kwarg
-kwarg :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Kwarg
-kwarg name value =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Kwarg"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm value)}]}))
-
--- | DSL name token for hydra.python.syntax.Kwarg
-kwargKwarg :: Typed.TypedName Syntax.Kwarg
-kwargKwarg = Typed.TypedName (Core.Name "hydra.python.syntax.Kwarg")
-
--- | DSL accessor for the name field of hydra.python.syntax.Kwarg
-kwargName :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.Name
-kwargName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Kwarg"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL injection for the doubleStarred variant of hydra.python.syntax.KwargOrDoubleStarred
-kwargOrDoubleStarredDoubleStarred :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.KwargOrDoubleStarred
-kwargOrDoubleStarredDoubleStarred x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.KwargOrDoubleStarred"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "doubleStarred"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the kwarg variant of hydra.python.syntax.KwargOrDoubleStarred
-kwargOrDoubleStarredKwarg :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.KwargOrDoubleStarred
-kwargOrDoubleStarredKwarg x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.KwargOrDoubleStarred"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "kwarg"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.KwargOrDoubleStarred
-kwargOrDoubleStarredKwargOrDoubleStarred :: Typed.TypedName Syntax.KwargOrDoubleStarred
-kwargOrDoubleStarredKwargOrDoubleStarred = Typed.TypedName (Core.Name "hydra.python.syntax.KwargOrDoubleStarred")
-
--- | DSL injection for the kwarg variant of hydra.python.syntax.KwargOrStarred
-kwargOrStarredKwarg :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.KwargOrStarred
-kwargOrStarredKwarg x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.KwargOrStarred"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "kwarg"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.KwargOrStarred
-kwargOrStarredKwargOrStarred :: Typed.TypedName Syntax.KwargOrStarred
-kwargOrStarredKwargOrStarred = Typed.TypedName (Core.Name "hydra.python.syntax.KwargOrStarred")
-
--- | DSL injection for the starred variant of hydra.python.syntax.KwargOrStarred
-kwargOrStarredStarred :: Typed.TypedTerm Syntax.StarredExpression -> Typed.TypedTerm Syntax.KwargOrStarred
-kwargOrStarredStarred x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.KwargOrStarred"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starred"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL accessor for the value field of hydra.python.syntax.Kwarg
-kwargValue :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.Expression
-kwargValue x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Kwarg"),
-        Core.projectionFieldName = (Core.Name "value")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the name field of hydra.python.syntax.Kwarg
-kwargWithName :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Kwarg
-kwargWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Kwarg"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Kwarg"),
-              Core.projectionFieldName = (Core.Name "value")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the value field of hydra.python.syntax.Kwarg
-kwargWithValue :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Kwarg
-kwargWithValue original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Kwarg"),
-      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.python.syntax.Kwarg"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.Lambda
-lambda :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Lambda
-lambda params body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Lambda"),
-      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.python.syntax.Lambda
-lambdaBody :: Typed.TypedTerm Syntax.Lambda -> Typed.TypedTerm Syntax.Expression
-lambdaBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Lambda"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for the hydra.python.syntax.LambdaKwds wrapper
-lambdaKwds :: Typed.TypedTerm Syntax.LambdaParamNoDefault -> Typed.TypedTerm Syntax.LambdaKwds
-lambdaKwds x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.LambdaKwds"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.LambdaKwds
-lambdaKwdsLambdaKwds :: Typed.TypedName Syntax.LambdaKwds
-lambdaKwdsLambdaKwds = Typed.TypedName (Core.Name "hydra.python.syntax.LambdaKwds")
-
--- | DSL name token for hydra.python.syntax.Lambda
-lambdaLambda :: Typed.TypedName Syntax.Lambda
-lambdaLambda = Typed.TypedName (Core.Name "hydra.python.syntax.Lambda")
-
--- | DSL constructor for hydra.python.syntax.LambdaParamMaybeDefault
-lambdaParamMaybeDefault :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm Syntax.LambdaParamMaybeDefault
-lambdaParamMaybeDefault param default_ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Typed.unTypedTerm param)},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm default_)}]}))
-
--- | DSL accessor for the default field of hydra.python.syntax.LambdaParamMaybeDefault
-lambdaParamMaybeDefaultDefault :: Typed.TypedTerm Syntax.LambdaParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.Default)
-lambdaParamMaybeDefaultDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
-        Core.projectionFieldName = (Core.Name "default")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.LambdaParamMaybeDefault
-lambdaParamMaybeDefaultLambdaParamMaybeDefault :: Typed.TypedName Syntax.LambdaParamMaybeDefault
-lambdaParamMaybeDefaultLambdaParamMaybeDefault = Typed.TypedName (Core.Name "hydra.python.syntax.LambdaParamMaybeDefault")
-
--- | DSL accessor for the param field of hydra.python.syntax.LambdaParamMaybeDefault
-lambdaParamMaybeDefaultParam :: Typed.TypedTerm Syntax.LambdaParamMaybeDefault -> Typed.TypedTerm Syntax.Name
-lambdaParamMaybeDefaultParam x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
-        Core.projectionFieldName = (Core.Name "param")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the default field of hydra.python.syntax.LambdaParamMaybeDefault
-lambdaParamMaybeDefaultWithDefault :: Typed.TypedTerm Syntax.LambdaParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm Syntax.LambdaParamMaybeDefault
-lambdaParamMaybeDefaultWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
-              Core.projectionFieldName = (Core.Name "param")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the param field of hydra.python.syntax.LambdaParamMaybeDefault
-lambdaParamMaybeDefaultWithParam :: Typed.TypedTerm Syntax.LambdaParamMaybeDefault -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.LambdaParamMaybeDefault
-lambdaParamMaybeDefaultWithParam original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          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.python.syntax.LambdaParamMaybeDefault"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.python.syntax.LambdaParamNoDefault wrapper
-lambdaParamNoDefault :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.LambdaParamNoDefault
-lambdaParamNoDefault x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.LambdaParamNoDefault"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.LambdaParamNoDefault
-lambdaParamNoDefaultLambdaParamNoDefault :: Typed.TypedName Syntax.LambdaParamNoDefault
-lambdaParamNoDefaultLambdaParamNoDefault = Typed.TypedName (Core.Name "hydra.python.syntax.LambdaParamNoDefault")
-
--- | DSL constructor for hydra.python.syntax.LambdaParamWithDefault
-lambdaParamWithDefault :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm Syntax.LambdaParamWithDefault
-lambdaParamWithDefault param default_ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaParamWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Typed.unTypedTerm param)},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm default_)}]}))
-
--- | DSL accessor for the default field of hydra.python.syntax.LambdaParamWithDefault
-lambdaParamWithDefaultDefault :: Typed.TypedTerm Syntax.LambdaParamWithDefault -> Typed.TypedTerm (Maybe Syntax.Default)
-lambdaParamWithDefaultDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParamWithDefault"),
-        Core.projectionFieldName = (Core.Name "default")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.LambdaParamWithDefault
-lambdaParamWithDefaultLambdaParamWithDefault :: Typed.TypedName Syntax.LambdaParamWithDefault
-lambdaParamWithDefaultLambdaParamWithDefault = Typed.TypedName (Core.Name "hydra.python.syntax.LambdaParamWithDefault")
-
--- | DSL accessor for the param field of hydra.python.syntax.LambdaParamWithDefault
-lambdaParamWithDefaultParam :: Typed.TypedTerm Syntax.LambdaParamWithDefault -> Typed.TypedTerm Syntax.Name
-lambdaParamWithDefaultParam x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParamWithDefault"),
-        Core.projectionFieldName = (Core.Name "param")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the default field of hydra.python.syntax.LambdaParamWithDefault
-lambdaParamWithDefaultWithDefault :: Typed.TypedTerm Syntax.LambdaParamWithDefault -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm Syntax.LambdaParamWithDefault
-lambdaParamWithDefaultWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaParamWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParamWithDefault"),
-              Core.projectionFieldName = (Core.Name "param")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the param field of hydra.python.syntax.LambdaParamWithDefault
-lambdaParamWithDefaultWithParam :: Typed.TypedTerm Syntax.LambdaParamWithDefault -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.LambdaParamWithDefault
-lambdaParamWithDefaultWithParam original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaParamWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          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.python.syntax.LambdaParamWithDefault"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.LambdaParameters
-lambdaParameters :: Typed.TypedTerm (Maybe Syntax.LambdaSlashNoDefault) -> Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm [Syntax.LambdaParamWithDefault] -> Typed.TypedTerm (Maybe Syntax.LambdaStarEtc) -> Typed.TypedTerm Syntax.LambdaParameters
-lambdaParameters slashNoDefault paramNoDefault paramWithDefault starEtc =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "slashNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm slashNoDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramWithDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Typed.unTypedTerm starEtc)}]}))
-
--- | DSL name token for hydra.python.syntax.LambdaParameters
-lambdaParametersLambdaParameters :: Typed.TypedName Syntax.LambdaParameters
-lambdaParametersLambdaParameters = Typed.TypedName (Core.Name "hydra.python.syntax.LambdaParameters")
-
--- | DSL accessor for the paramNoDefault field of hydra.python.syntax.LambdaParameters
-lambdaParametersParamNoDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm [Syntax.LambdaParamNoDefault]
-lambdaParametersParamNoDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-        Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramWithDefault field of hydra.python.syntax.LambdaParameters
-lambdaParametersParamWithDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm [Syntax.LambdaParamWithDefault]
-lambdaParametersParamWithDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-        Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the slashNoDefault field of hydra.python.syntax.LambdaParameters
-lambdaParametersSlashNoDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm (Maybe Syntax.LambdaSlashNoDefault)
-lambdaParametersSlashNoDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-        Core.projectionFieldName = (Core.Name "slashNoDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the starEtc field of hydra.python.syntax.LambdaParameters
-lambdaParametersStarEtc :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm (Maybe Syntax.LambdaStarEtc)
-lambdaParametersStarEtc x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-        Core.projectionFieldName = (Core.Name "starEtc")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the paramNoDefault field of hydra.python.syntax.LambdaParameters
-lambdaParametersWithParamNoDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm Syntax.LambdaParameters
-lambdaParametersWithParamNoDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "slashNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "slashNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "starEtc")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramWithDefault field of hydra.python.syntax.LambdaParameters
-lambdaParametersWithParamWithDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm [Syntax.LambdaParamWithDefault] -> Typed.TypedTerm Syntax.LambdaParameters
-lambdaParametersWithParamWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "slashNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "slashNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "starEtc")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the slashNoDefault field of hydra.python.syntax.LambdaParameters
-lambdaParametersWithSlashNoDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm (Maybe Syntax.LambdaSlashNoDefault) -> Typed.TypedTerm Syntax.LambdaParameters
-lambdaParametersWithSlashNoDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "slashNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "starEtc")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the starEtc field of hydra.python.syntax.LambdaParameters
-lambdaParametersWithStarEtc :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm (Maybe Syntax.LambdaStarEtc) -> Typed.TypedTerm Syntax.LambdaParameters
-lambdaParametersWithStarEtc original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "slashNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "slashNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaParameters"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL accessor for the params field of hydra.python.syntax.Lambda
-lambdaParams :: Typed.TypedTerm Syntax.Lambda -> Typed.TypedTerm Syntax.LambdaParameters
-lambdaParams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Lambda"),
-        Core.projectionFieldName = (Core.Name "params")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.python.syntax.LambdaSlashNoDefault
-lambdaSlashNoDefault :: Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm Syntax.LambdaSlashNoDefault
-lambdaSlashNoDefault parameters =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaSlashNoDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "parameters"),
-          Core.fieldTerm = (Typed.unTypedTerm parameters)}]}))
-
--- | DSL name token for hydra.python.syntax.LambdaSlashNoDefault
-lambdaSlashNoDefaultLambdaSlashNoDefault :: Typed.TypedName Syntax.LambdaSlashNoDefault
-lambdaSlashNoDefaultLambdaSlashNoDefault = Typed.TypedName (Core.Name "hydra.python.syntax.LambdaSlashNoDefault")
-
--- | DSL accessor for the parameters field of hydra.python.syntax.LambdaSlashNoDefault
-lambdaSlashNoDefaultParameters :: Typed.TypedTerm Syntax.LambdaSlashNoDefault -> Typed.TypedTerm [Syntax.LambdaParamNoDefault]
-lambdaSlashNoDefaultParameters x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaSlashNoDefault"),
-        Core.projectionFieldName = (Core.Name "parameters")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the parameters field of hydra.python.syntax.LambdaSlashNoDefault
-lambdaSlashNoDefaultWithParameters :: Typed.TypedTerm Syntax.LambdaSlashNoDefault -> Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm Syntax.LambdaSlashNoDefault
-lambdaSlashNoDefaultWithParameters original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaSlashNoDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "parameters"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.LambdaSlashWithDefault
-lambdaSlashWithDefault :: Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm [Syntax.LambdaParamWithDefault] -> Typed.TypedTerm Syntax.LambdaSlashWithDefault
-lambdaSlashWithDefault paramNoDefault paramWithDefault =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaSlashWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramWithDefault)}]}))
-
--- | DSL name token for hydra.python.syntax.LambdaSlashWithDefault
-lambdaSlashWithDefaultLambdaSlashWithDefault :: Typed.TypedName Syntax.LambdaSlashWithDefault
-lambdaSlashWithDefaultLambdaSlashWithDefault = Typed.TypedName (Core.Name "hydra.python.syntax.LambdaSlashWithDefault")
-
--- | DSL accessor for the paramNoDefault field of hydra.python.syntax.LambdaSlashWithDefault
-lambdaSlashWithDefaultParamNoDefault :: Typed.TypedTerm Syntax.LambdaSlashWithDefault -> Typed.TypedTerm [Syntax.LambdaParamNoDefault]
-lambdaSlashWithDefaultParamNoDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaSlashWithDefault"),
-        Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramWithDefault field of hydra.python.syntax.LambdaSlashWithDefault
-lambdaSlashWithDefaultParamWithDefault :: Typed.TypedTerm Syntax.LambdaSlashWithDefault -> Typed.TypedTerm [Syntax.LambdaParamWithDefault]
-lambdaSlashWithDefaultParamWithDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaSlashWithDefault"),
-        Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the paramNoDefault field of hydra.python.syntax.LambdaSlashWithDefault
-lambdaSlashWithDefaultWithParamNoDefault :: Typed.TypedTerm Syntax.LambdaSlashWithDefault -> Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm Syntax.LambdaSlashWithDefault
-lambdaSlashWithDefaultWithParamNoDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaSlashWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaSlashWithDefault"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramWithDefault field of hydra.python.syntax.LambdaSlashWithDefault
-lambdaSlashWithDefaultWithParamWithDefault :: Typed.TypedTerm Syntax.LambdaSlashWithDefault -> Typed.TypedTerm [Syntax.LambdaParamWithDefault] -> Typed.TypedTerm Syntax.LambdaSlashWithDefault
-lambdaSlashWithDefaultWithParamWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.LambdaSlashWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.LambdaSlashWithDefault"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the kwds variant of hydra.python.syntax.LambdaStarEtc
-lambdaStarEtcKwds :: Typed.TypedTerm Syntax.LambdaKwds -> Typed.TypedTerm Syntax.LambdaStarEtc
-lambdaStarEtcKwds x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LambdaStarEtc"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "kwds"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.LambdaStarEtc
-lambdaStarEtcLambdaStarEtc :: Typed.TypedName Syntax.LambdaStarEtc
-lambdaStarEtcLambdaStarEtc = Typed.TypedName (Core.Name "hydra.python.syntax.LambdaStarEtc")
-
--- | DSL injection for the paramMaybeDefault variant of hydra.python.syntax.LambdaStarEtc
-lambdaStarEtcParamMaybeDefault :: Typed.TypedTerm [Syntax.LambdaParamMaybeDefault] -> Typed.TypedTerm Syntax.LambdaStarEtc
-lambdaStarEtcParamMaybeDefault x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LambdaStarEtc"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "paramMaybeDefault"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the paramNoDefault variant of hydra.python.syntax.LambdaStarEtc
-lambdaStarEtcParamNoDefault :: Typed.TypedTerm Syntax.LambdaParamNoDefault -> Typed.TypedTerm Syntax.LambdaStarEtc
-lambdaStarEtcParamNoDefault x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LambdaStarEtc"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "paramNoDefault"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the star variant of hydra.python.syntax.LambdaStarEtc
-lambdaStarEtcStar :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.LambdaStarEtc
-lambdaStarEtcStar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LambdaStarEtc"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "star"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL updater for the body field of hydra.python.syntax.Lambda
-lambdaWithBody :: Typed.TypedTerm Syntax.Lambda -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Lambda
-lambdaWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Lambda"),
-      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.python.syntax.Lambda"),
-              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.python.syntax.Lambda
-lambdaWithParams :: Typed.TypedTerm Syntax.Lambda -> Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm Syntax.Lambda
-lambdaWithParams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Lambda"),
-      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.python.syntax.Lambda"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.python.syntax.List wrapper
-list :: Typed.TypedTerm [Syntax.StarNamedExpression] -> Typed.TypedTerm Syntax.List
-list x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.List"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.List
-listList :: Typed.TypedName Syntax.List
-listList = Typed.TypedName (Core.Name "hydra.python.syntax.List")
-
--- | DSL constructor for hydra.python.syntax.Listcomp
-listcomp :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Listcomp
-listcomp expression forIfClauses =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Listcomp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm expression)},
-        Core.Field {
-          Core.fieldName = (Core.Name "forIfClauses"),
-          Core.fieldTerm = (Typed.unTypedTerm forIfClauses)}]}))
-
--- | DSL accessor for the expression field of hydra.python.syntax.Listcomp
-listcompExpression :: Typed.TypedTerm Syntax.Listcomp -> Typed.TypedTerm Syntax.NamedExpression
-listcompExpression x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Listcomp"),
-        Core.projectionFieldName = (Core.Name "expression")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the forIfClauses field of hydra.python.syntax.Listcomp
-listcompForIfClauses :: Typed.TypedTerm Syntax.Listcomp -> Typed.TypedTerm Syntax.ForIfClauses
-listcompForIfClauses x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Listcomp"),
-        Core.projectionFieldName = (Core.Name "forIfClauses")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Listcomp
-listcompListcomp :: Typed.TypedName Syntax.Listcomp
-listcompListcomp = Typed.TypedName (Core.Name "hydra.python.syntax.Listcomp")
-
--- | DSL updater for the expression field of hydra.python.syntax.Listcomp
-listcompWithExpression :: Typed.TypedTerm Syntax.Listcomp -> Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Listcomp
-listcompWithExpression original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Listcomp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "forIfClauses"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Listcomp"),
-              Core.projectionFieldName = (Core.Name "forIfClauses")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the forIfClauses field of hydra.python.syntax.Listcomp
-listcompWithForIfClauses :: Typed.TypedTerm Syntax.Listcomp -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Listcomp
-listcompWithForIfClauses original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Listcomp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Listcomp"),
-              Core.projectionFieldName = (Core.Name "expression")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "forIfClauses"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the complex variant of hydra.python.syntax.LiteralExpression
-literalExpressionComplex :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.LiteralExpression
-literalExpressionComplex x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LiteralExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "complex"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the false variant of hydra.python.syntax.LiteralExpression
-literalExpressionFalse :: Typed.TypedTerm Syntax.LiteralExpression
-literalExpressionFalse =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LiteralExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "false"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.python.syntax.LiteralExpression
-literalExpressionLiteralExpression :: Typed.TypedName Syntax.LiteralExpression
-literalExpressionLiteralExpression = Typed.TypedName (Core.Name "hydra.python.syntax.LiteralExpression")
-
--- | DSL injection for the none variant of hydra.python.syntax.LiteralExpression
-literalExpressionNone :: Typed.TypedTerm Syntax.LiteralExpression
-literalExpressionNone =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LiteralExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "none"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the number variant of hydra.python.syntax.LiteralExpression
-literalExpressionNumber :: Typed.TypedTerm Syntax.SignedNumber -> Typed.TypedTerm Syntax.LiteralExpression
-literalExpressionNumber x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LiteralExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "number"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the attribute variant of hydra.python.syntax.LiteralExpressionOrAttribute
-literalExpressionOrAttributeAttribute :: Typed.TypedTerm Syntax.Attribute -> Typed.TypedTerm Syntax.LiteralExpressionOrAttribute
-literalExpressionOrAttributeAttribute x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LiteralExpressionOrAttribute"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "attribute"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the literal variant of hydra.python.syntax.LiteralExpressionOrAttribute
-literalExpressionOrAttributeLiteral :: Typed.TypedTerm Syntax.LiteralExpression -> Typed.TypedTerm Syntax.LiteralExpressionOrAttribute
-literalExpressionOrAttributeLiteral x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LiteralExpressionOrAttribute"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "literal"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.LiteralExpressionOrAttribute
-literalExpressionOrAttributeLiteralExpressionOrAttribute :: Typed.TypedName Syntax.LiteralExpressionOrAttribute
-literalExpressionOrAttributeLiteralExpressionOrAttribute =
-    Typed.TypedName (Core.Name "hydra.python.syntax.LiteralExpressionOrAttribute")
-
--- | DSL injection for the string variant of hydra.python.syntax.LiteralExpression
-literalExpressionString :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm Syntax.LiteralExpression
-literalExpressionString x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LiteralExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "string"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the true variant of hydra.python.syntax.LiteralExpression
-literalExpressionTrue :: Typed.TypedTerm Syntax.LiteralExpression
-literalExpressionTrue =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.LiteralExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "true"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL constructor for hydra.python.syntax.MappingPattern
-mappingPattern :: Typed.TypedTerm (Maybe Syntax.ItemsPattern) -> Typed.TypedTerm (Maybe Syntax.DoubleStarPattern) -> Typed.TypedTerm Syntax.MappingPattern
-mappingPattern items doubleStar =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.MappingPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "items"),
-          Core.fieldTerm = (Typed.unTypedTerm items)},
-        Core.Field {
-          Core.fieldName = (Core.Name "doubleStar"),
-          Core.fieldTerm = (Typed.unTypedTerm doubleStar)}]}))
-
--- | DSL accessor for the doubleStar field of hydra.python.syntax.MappingPattern
-mappingPatternDoubleStar :: Typed.TypedTerm Syntax.MappingPattern -> Typed.TypedTerm (Maybe Syntax.DoubleStarPattern)
-mappingPatternDoubleStar x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.MappingPattern"),
-        Core.projectionFieldName = (Core.Name "doubleStar")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the items field of hydra.python.syntax.MappingPattern
-mappingPatternItems :: Typed.TypedTerm Syntax.MappingPattern -> Typed.TypedTerm (Maybe Syntax.ItemsPattern)
-mappingPatternItems x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.MappingPattern"),
-        Core.projectionFieldName = (Core.Name "items")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.MappingPattern
-mappingPatternMappingPattern :: Typed.TypedName Syntax.MappingPattern
-mappingPatternMappingPattern = Typed.TypedName (Core.Name "hydra.python.syntax.MappingPattern")
-
--- | DSL updater for the doubleStar field of hydra.python.syntax.MappingPattern
-mappingPatternWithDoubleStar :: Typed.TypedTerm Syntax.MappingPattern -> Typed.TypedTerm (Maybe Syntax.DoubleStarPattern) -> Typed.TypedTerm Syntax.MappingPattern
-mappingPatternWithDoubleStar original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.MappingPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "items"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.MappingPattern"),
-              Core.projectionFieldName = (Core.Name "items")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "doubleStar"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the items field of hydra.python.syntax.MappingPattern
-mappingPatternWithItems :: Typed.TypedTerm Syntax.MappingPattern -> Typed.TypedTerm (Maybe Syntax.ItemsPattern) -> Typed.TypedTerm Syntax.MappingPattern
-mappingPatternWithItems original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.MappingPattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "items"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "doubleStar"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.MappingPattern"),
-              Core.projectionFieldName = (Core.Name "doubleStar")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.MatchStatement
-matchStatement :: Typed.TypedTerm Syntax.SubjectExpression -> Typed.TypedTerm [Syntax.CaseBlock] -> Typed.TypedTerm Syntax.MatchStatement
-matchStatement subject cases =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.MatchStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Typed.unTypedTerm subject)},
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Typed.unTypedTerm cases)}]}))
-
--- | DSL accessor for the cases field of hydra.python.syntax.MatchStatement
-matchStatementCases :: Typed.TypedTerm Syntax.MatchStatement -> Typed.TypedTerm [Syntax.CaseBlock]
-matchStatementCases x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.MatchStatement"),
-        Core.projectionFieldName = (Core.Name "cases")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.MatchStatement
-matchStatementMatchStatement :: Typed.TypedName Syntax.MatchStatement
-matchStatementMatchStatement = Typed.TypedName (Core.Name "hydra.python.syntax.MatchStatement")
-
--- | DSL accessor for the subject field of hydra.python.syntax.MatchStatement
-matchStatementSubject :: Typed.TypedTerm Syntax.MatchStatement -> Typed.TypedTerm Syntax.SubjectExpression
-matchStatementSubject x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.MatchStatement"),
-        Core.projectionFieldName = (Core.Name "subject")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the cases field of hydra.python.syntax.MatchStatement
-matchStatementWithCases :: Typed.TypedTerm Syntax.MatchStatement -> Typed.TypedTerm [Syntax.CaseBlock] -> Typed.TypedTerm Syntax.MatchStatement
-matchStatementWithCases original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.MatchStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.MatchStatement"),
-              Core.projectionFieldName = (Core.Name "subject")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "cases"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the subject field of hydra.python.syntax.MatchStatement
-matchStatementWithSubject :: Typed.TypedTerm Syntax.MatchStatement -> Typed.TypedTerm Syntax.SubjectExpression -> Typed.TypedTerm Syntax.MatchStatement
-matchStatementWithSubject original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.MatchStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          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.python.syntax.MatchStatement"),
-              Core.projectionFieldName = (Core.Name "cases")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.python.syntax.MaybeSequencePattern wrapper
-maybeSequencePattern :: Typed.TypedTerm [Syntax.MaybeStarPattern] -> Typed.TypedTerm Syntax.MaybeSequencePattern
-maybeSequencePattern x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.MaybeSequencePattern"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.MaybeSequencePattern
-maybeSequencePatternMaybeSequencePattern :: Typed.TypedName Syntax.MaybeSequencePattern
-maybeSequencePatternMaybeSequencePattern = Typed.TypedName (Core.Name "hydra.python.syntax.MaybeSequencePattern")
-
--- | DSL name token for hydra.python.syntax.MaybeStarPattern
-maybeStarPatternMaybeStarPattern :: Typed.TypedName Syntax.MaybeStarPattern
-maybeStarPatternMaybeStarPattern = Typed.TypedName (Core.Name "hydra.python.syntax.MaybeStarPattern")
-
--- | DSL injection for the pattern variant of hydra.python.syntax.MaybeStarPattern
-maybeStarPatternPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.MaybeStarPattern
-maybeStarPatternPattern x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.MaybeStarPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "pattern"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the star variant of hydra.python.syntax.MaybeStarPattern
-maybeStarPatternStar :: Typed.TypedTerm Syntax.StarPattern -> Typed.TypedTerm Syntax.MaybeStarPattern
-maybeStarPatternStar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.MaybeStarPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "star"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.Module wrapper
-module_ :: Typed.TypedTerm [[Syntax.Statement]] -> Typed.TypedTerm Syntax.Module
-module_ x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Module"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Module
-moduleModule :: Typed.TypedName Syntax.Module
-moduleModule = Typed.TypedName (Core.Name "hydra.python.syntax.Module")
-
--- | DSL constructor for the hydra.python.syntax.Name wrapper
-name :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Name
-name x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Name"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Name
-nameName :: Typed.TypedName Syntax.Name
-nameName = Typed.TypedName (Core.Name "hydra.python.syntax.Name")
-
--- | DSL constructor for the hydra.python.syntax.NameOrAttribute wrapper
-nameOrAttribute :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.NameOrAttribute
-nameOrAttribute x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.NameOrAttribute"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.NameOrAttribute
-nameOrAttributeNameOrAttribute :: Typed.TypedName Syntax.NameOrAttribute
-nameOrAttributeNameOrAttribute = Typed.TypedName (Core.Name "hydra.python.syntax.NameOrAttribute")
-
--- | DSL injection for the assignment variant of hydra.python.syntax.NamedExpression
-namedExpressionAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.NamedExpression
-namedExpressionAssignment x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.NamedExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "assignment"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.NamedExpression
-namedExpressionNamedExpression :: Typed.TypedName Syntax.NamedExpression
-namedExpressionNamedExpression = Typed.TypedName (Core.Name "hydra.python.syntax.NamedExpression")
-
--- | DSL injection for the simple variant of hydra.python.syntax.NamedExpression
-namedExpressionSimple :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.NamedExpression
-namedExpressionSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.NamedExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.python.syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtc :: Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtc paramNoDefaultStarAnnotation paramMaybeDefault keywords =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefaultStarAnnotation"),
-          Core.fieldTerm = (Typed.unTypedTerm paramNoDefaultStarAnnotation)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramMaybeDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramMaybeDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywords"),
-          Core.fieldTerm = (Typed.unTypedTerm keywords)}]}))
-
--- | DSL accessor for the keywords field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtcKeywords :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords)
-noDefaultStarAnnotationStarEtcKeywords x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-        Core.projectionFieldName = (Core.Name "keywords")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtcNoDefaultStarAnnotationStarEtc :: Typed.TypedName Syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtcNoDefaultStarAnnotationStarEtc =
-    Typed.TypedName (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc")
-
--- | DSL accessor for the paramMaybeDefault field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtcParamMaybeDefault :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault]
-noDefaultStarAnnotationStarEtcParamMaybeDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-        Core.projectionFieldName = (Core.Name "paramMaybeDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramNoDefaultStarAnnotation field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtcParamNoDefaultStarAnnotation :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation
-noDefaultStarAnnotationStarEtcParamNoDefaultStarAnnotation x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-        Core.projectionFieldName = (Core.Name "paramNoDefaultStarAnnotation")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the keywords field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtcWithKeywords :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtcWithKeywords original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefaultStarAnnotation"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-              Core.projectionFieldName = (Core.Name "paramNoDefaultStarAnnotation")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramMaybeDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-              Core.projectionFieldName = (Core.Name "paramMaybeDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywords"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the paramMaybeDefault field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtcWithParamMaybeDefault :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtcWithParamMaybeDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefaultStarAnnotation"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-              Core.projectionFieldName = (Core.Name "paramNoDefaultStarAnnotation")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramMaybeDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywords"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-              Core.projectionFieldName = (Core.Name "keywords")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramNoDefaultStarAnnotation field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtcWithParamNoDefaultStarAnnotation :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc
-noDefaultStarAnnotationStarEtcWithParamNoDefaultStarAnnotation original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefaultStarAnnotation"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramMaybeDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-              Core.projectionFieldName = (Core.Name "paramMaybeDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywords"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
-              Core.projectionFieldName = (Core.Name "keywords")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.NoDefaultStarEtc
-noDefaultStarEtc :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.NoDefaultStarEtc
-noDefaultStarEtc paramNoDefault paramMaybeDefault keywords =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramMaybeDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramMaybeDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywords"),
-          Core.fieldTerm = (Typed.unTypedTerm keywords)}]}))
-
--- | DSL accessor for the keywords field of hydra.python.syntax.NoDefaultStarEtc
-noDefaultStarEtcKeywords :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords)
-noDefaultStarEtcKeywords x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-        Core.projectionFieldName = (Core.Name "keywords")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.NoDefaultStarEtc
-noDefaultStarEtcNoDefaultStarEtc :: Typed.TypedName Syntax.NoDefaultStarEtc
-noDefaultStarEtcNoDefaultStarEtc = Typed.TypedName (Core.Name "hydra.python.syntax.NoDefaultStarEtc")
-
--- | DSL accessor for the paramMaybeDefault field of hydra.python.syntax.NoDefaultStarEtc
-noDefaultStarEtcParamMaybeDefault :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault]
-noDefaultStarEtcParamMaybeDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-        Core.projectionFieldName = (Core.Name "paramMaybeDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramNoDefault field of hydra.python.syntax.NoDefaultStarEtc
-noDefaultStarEtcParamNoDefault :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm Syntax.ParamNoDefault
-noDefaultStarEtcParamNoDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-        Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the keywords field of hydra.python.syntax.NoDefaultStarEtc
-noDefaultStarEtcWithKeywords :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.NoDefaultStarEtc
-noDefaultStarEtcWithKeywords original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramMaybeDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-              Core.projectionFieldName = (Core.Name "paramMaybeDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywords"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the paramMaybeDefault field of hydra.python.syntax.NoDefaultStarEtc
-noDefaultStarEtcWithParamMaybeDefault :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm Syntax.NoDefaultStarEtc
-noDefaultStarEtcWithParamMaybeDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramMaybeDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywords"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-              Core.projectionFieldName = (Core.Name "keywords")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramNoDefault field of hydra.python.syntax.NoDefaultStarEtc
-noDefaultStarEtcWithParamNoDefault :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm Syntax.NoDefaultStarEtc
-noDefaultStarEtcWithParamNoDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramMaybeDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-              Core.projectionFieldName = (Core.Name "paramMaybeDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "keywords"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.NoDefaultStarEtc"),
-              Core.projectionFieldName = (Core.Name "keywords")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the float variant of hydra.python.syntax.Number
-numberFloat :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.Number
-numberFloat x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Number"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "float"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the imaginary variant of hydra.python.syntax.Number
-numberImaginary :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.Number
-numberImaginary x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Number"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "imaginary"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the integer variant of hydra.python.syntax.Number
-numberInteger :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.Number
-numberInteger x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Number"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "integer"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.Number
-numberNumber :: Typed.TypedName Syntax.Number
-numberNumber = Typed.TypedName (Core.Name "hydra.python.syntax.Number")
-
--- | DSL constructor for hydra.python.syntax.OpenSequencePattern
-openSequencePattern :: Typed.TypedTerm Syntax.MaybeStarPattern -> Typed.TypedTerm (Maybe Syntax.MaybeSequencePattern) -> Typed.TypedTerm Syntax.OpenSequencePattern
-openSequencePattern head tail =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.OpenSequencePattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "head"),
-          Core.fieldTerm = (Typed.unTypedTerm head)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tail"),
-          Core.fieldTerm = (Typed.unTypedTerm tail)}]}))
-
--- | DSL accessor for the head field of hydra.python.syntax.OpenSequencePattern
-openSequencePatternHead :: Typed.TypedTerm Syntax.OpenSequencePattern -> Typed.TypedTerm Syntax.MaybeStarPattern
-openSequencePatternHead x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.OpenSequencePattern"),
-        Core.projectionFieldName = (Core.Name "head")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.OpenSequencePattern
-openSequencePatternOpenSequencePattern :: Typed.TypedName Syntax.OpenSequencePattern
-openSequencePatternOpenSequencePattern = Typed.TypedName (Core.Name "hydra.python.syntax.OpenSequencePattern")
-
--- | DSL accessor for the tail field of hydra.python.syntax.OpenSequencePattern
-openSequencePatternTail :: Typed.TypedTerm Syntax.OpenSequencePattern -> Typed.TypedTerm (Maybe Syntax.MaybeSequencePattern)
-openSequencePatternTail x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.OpenSequencePattern"),
-        Core.projectionFieldName = (Core.Name "tail")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the head field of hydra.python.syntax.OpenSequencePattern
-openSequencePatternWithHead :: Typed.TypedTerm Syntax.OpenSequencePattern -> Typed.TypedTerm Syntax.MaybeStarPattern -> Typed.TypedTerm Syntax.OpenSequencePattern
-openSequencePatternWithHead original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.OpenSequencePattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "head"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tail"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.OpenSequencePattern"),
-              Core.projectionFieldName = (Core.Name "tail")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tail field of hydra.python.syntax.OpenSequencePattern
-openSequencePatternWithTail :: Typed.TypedTerm Syntax.OpenSequencePattern -> Typed.TypedTerm (Maybe Syntax.MaybeSequencePattern) -> Typed.TypedTerm Syntax.OpenSequencePattern
-openSequencePatternWithTail original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.OpenSequencePattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "head"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.OpenSequencePattern"),
-              Core.projectionFieldName = (Core.Name "head")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tail"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for the hydra.python.syntax.OrPattern wrapper
-orPattern :: Typed.TypedTerm [Syntax.ClosedPattern] -> Typed.TypedTerm Syntax.OrPattern
-orPattern x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.OrPattern"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.OrPattern
-orPatternOrPattern :: Typed.TypedName Syntax.OrPattern
-orPatternOrPattern = Typed.TypedName (Core.Name "hydra.python.syntax.OrPattern")
-
--- | DSL constructor for hydra.python.syntax.Param
-param :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Annotation) -> Typed.TypedTerm Syntax.Param
-param name annotation =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Param"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "annotation"),
-          Core.fieldTerm = (Typed.unTypedTerm annotation)}]}))
-
--- | DSL accessor for the annotation field of hydra.python.syntax.Param
-paramAnnotation :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm (Maybe Syntax.Annotation)
-paramAnnotation x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Param"),
-        Core.projectionFieldName = (Core.Name "annotation")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.python.syntax.ParamMaybeDefault
-paramMaybeDefault :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamMaybeDefault
-paramMaybeDefault param default_ typeComment =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamMaybeDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Typed.unTypedTerm param)},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm default_)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm typeComment)}]}))
-
--- | DSL accessor for the default field of hydra.python.syntax.ParamMaybeDefault
-paramMaybeDefaultDefault :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.Default)
-paramMaybeDefaultDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamMaybeDefault"),
-        Core.projectionFieldName = (Core.Name "default")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the param field of hydra.python.syntax.ParamMaybeDefault
-paramMaybeDefaultParam :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm Syntax.Param
-paramMaybeDefaultParam x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamMaybeDefault"),
-        Core.projectionFieldName = (Core.Name "param")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ParamMaybeDefault
-paramMaybeDefaultParamMaybeDefault :: Typed.TypedName Syntax.ParamMaybeDefault
-paramMaybeDefaultParamMaybeDefault = Typed.TypedName (Core.Name "hydra.python.syntax.ParamMaybeDefault")
-
--- | DSL accessor for the typeComment field of hydra.python.syntax.ParamMaybeDefault
-paramMaybeDefaultTypeComment :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment)
-paramMaybeDefaultTypeComment x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamMaybeDefault"),
-        Core.projectionFieldName = (Core.Name "typeComment")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the default field of hydra.python.syntax.ParamMaybeDefault
-paramMaybeDefaultWithDefault :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm Syntax.ParamMaybeDefault
-paramMaybeDefaultWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamMaybeDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamMaybeDefault"),
-              Core.projectionFieldName = (Core.Name "param")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamMaybeDefault"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the param field of hydra.python.syntax.ParamMaybeDefault
-paramMaybeDefaultWithParam :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.ParamMaybeDefault
-paramMaybeDefaultWithParam original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamMaybeDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          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.python.syntax.ParamMaybeDefault"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamMaybeDefault"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the typeComment field of hydra.python.syntax.ParamMaybeDefault
-paramMaybeDefaultWithTypeComment :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamMaybeDefault
-paramMaybeDefaultWithTypeComment original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamMaybeDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamMaybeDefault"),
-              Core.projectionFieldName = (Core.Name "param")})),
-            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.python.syntax.ParamMaybeDefault"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL accessor for the name field of hydra.python.syntax.Param
-paramName :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.Name
-paramName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Param"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.python.syntax.ParamNoDefault
-paramNoDefault :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamNoDefault
-paramNoDefault param typeComment =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamNoDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Typed.unTypedTerm param)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm typeComment)}]}))
-
--- | DSL accessor for the param field of hydra.python.syntax.ParamNoDefault
-paramNoDefaultParam :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm Syntax.Param
-paramNoDefaultParam x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefault"),
-        Core.projectionFieldName = (Core.Name "param")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ParamNoDefault
-paramNoDefaultParamNoDefault :: Typed.TypedName Syntax.ParamNoDefault
-paramNoDefaultParamNoDefault = Typed.TypedName (Core.Name "hydra.python.syntax.ParamNoDefault")
-
--- | DSL constructor for hydra.python.syntax.ParamNoDefaultParameters
-paramNoDefaultParameters :: Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.ParamNoDefaultParameters
-paramNoDefaultParameters paramNoDefault paramWithDefault starEtc =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramWithDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Typed.unTypedTerm starEtc)}]}))
-
--- | DSL accessor for the paramNoDefault field of hydra.python.syntax.ParamNoDefaultParameters
-paramNoDefaultParametersParamNoDefault :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault]
-paramNoDefaultParametersParamNoDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ParamNoDefaultParameters
-paramNoDefaultParametersParamNoDefaultParameters :: Typed.TypedName Syntax.ParamNoDefaultParameters
-paramNoDefaultParametersParamNoDefaultParameters =
-    Typed.TypedName (Core.Name "hydra.python.syntax.ParamNoDefaultParameters")
-
--- | DSL accessor for the paramWithDefault field of hydra.python.syntax.ParamNoDefaultParameters
-paramNoDefaultParametersParamWithDefault :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault]
-paramNoDefaultParametersParamWithDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the starEtc field of hydra.python.syntax.ParamNoDefaultParameters
-paramNoDefaultParametersStarEtc :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc)
-paramNoDefaultParametersStarEtc x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "starEtc")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the paramNoDefault field of hydra.python.syntax.ParamNoDefaultParameters
-paramNoDefaultParametersWithParamNoDefault :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm Syntax.ParamNoDefaultParameters
-paramNoDefaultParametersWithParamNoDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "starEtc")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramWithDefault field of hydra.python.syntax.ParamNoDefaultParameters
-paramNoDefaultParametersWithParamWithDefault :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.ParamNoDefaultParameters
-paramNoDefaultParametersWithParamWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "starEtc")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the starEtc field of hydra.python.syntax.ParamNoDefaultParameters
-paramNoDefaultParametersWithStarEtc :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.ParamNoDefaultParameters
-paramNoDefaultParametersWithStarEtc original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.ParamNoDefaultStarAnnotation
-paramNoDefaultStarAnnotation :: Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation
-paramNoDefaultStarAnnotation paramStarAnnotation typeComment =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramStarAnnotation"),
-          Core.fieldTerm = (Typed.unTypedTerm paramStarAnnotation)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm typeComment)}]}))
-
--- | DSL name token for hydra.python.syntax.ParamNoDefaultStarAnnotation
-paramNoDefaultStarAnnotationParamNoDefaultStarAnnotation :: Typed.TypedName Syntax.ParamNoDefaultStarAnnotation
-paramNoDefaultStarAnnotationParamNoDefaultStarAnnotation =
-    Typed.TypedName (Core.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation")
-
--- | DSL accessor for the paramStarAnnotation field of hydra.python.syntax.ParamNoDefaultStarAnnotation
-paramNoDefaultStarAnnotationParamStarAnnotation :: Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm Syntax.ParamStarAnnotation
-paramNoDefaultStarAnnotationParamStarAnnotation x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
-        Core.projectionFieldName = (Core.Name "paramStarAnnotation")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the typeComment field of hydra.python.syntax.ParamNoDefaultStarAnnotation
-paramNoDefaultStarAnnotationTypeComment :: Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm (Maybe Syntax.TypeComment)
-paramNoDefaultStarAnnotationTypeComment x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
-        Core.projectionFieldName = (Core.Name "typeComment")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the paramStarAnnotation field of hydra.python.syntax.ParamNoDefaultStarAnnotation
-paramNoDefaultStarAnnotationWithParamStarAnnotation :: Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation
-paramNoDefaultStarAnnotationWithParamStarAnnotation original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramStarAnnotation"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the typeComment field of hydra.python.syntax.ParamNoDefaultStarAnnotation
-paramNoDefaultStarAnnotationWithTypeComment :: Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation
-paramNoDefaultStarAnnotationWithTypeComment original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramStarAnnotation"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
-              Core.projectionFieldName = (Core.Name "paramStarAnnotation")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL accessor for the typeComment field of hydra.python.syntax.ParamNoDefault
-paramNoDefaultTypeComment :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment)
-paramNoDefaultTypeComment x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefault"),
-        Core.projectionFieldName = (Core.Name "typeComment")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the param field of hydra.python.syntax.ParamNoDefault
-paramNoDefaultWithParam :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.ParamNoDefault
-paramNoDefaultWithParam original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamNoDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefault"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the typeComment field of hydra.python.syntax.ParamNoDefault
-paramNoDefaultWithTypeComment :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamNoDefault
-paramNoDefaultWithTypeComment original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamNoDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamNoDefault"),
-              Core.projectionFieldName = (Core.Name "param")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL name token for hydra.python.syntax.Param
-paramParam :: Typed.TypedName Syntax.Param
-paramParam = Typed.TypedName (Core.Name "hydra.python.syntax.Param")
-
--- | DSL constructor for hydra.python.syntax.ParamStarAnnotation
-paramStarAnnotation :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.StarAnnotation -> Typed.TypedTerm Syntax.ParamStarAnnotation
-paramStarAnnotation name annotation =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamStarAnnotation"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "annotation"),
-          Core.fieldTerm = (Typed.unTypedTerm annotation)}]}))
-
--- | DSL accessor for the annotation field of hydra.python.syntax.ParamStarAnnotation
-paramStarAnnotationAnnotation :: Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm Syntax.StarAnnotation
-paramStarAnnotationAnnotation x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamStarAnnotation"),
-        Core.projectionFieldName = (Core.Name "annotation")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.python.syntax.ParamStarAnnotation
-paramStarAnnotationName :: Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm Syntax.Name
-paramStarAnnotationName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamStarAnnotation"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ParamStarAnnotation
-paramStarAnnotationParamStarAnnotation :: Typed.TypedName Syntax.ParamStarAnnotation
-paramStarAnnotationParamStarAnnotation = Typed.TypedName (Core.Name "hydra.python.syntax.ParamStarAnnotation")
-
--- | DSL updater for the annotation field of hydra.python.syntax.ParamStarAnnotation
-paramStarAnnotationWithAnnotation :: Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm Syntax.StarAnnotation -> Typed.TypedTerm Syntax.ParamStarAnnotation
-paramStarAnnotationWithAnnotation original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamStarAnnotation"),
-      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.python.syntax.ParamStarAnnotation"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "annotation"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the name field of hydra.python.syntax.ParamStarAnnotation
-paramStarAnnotationWithName :: Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ParamStarAnnotation
-paramStarAnnotationWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamStarAnnotation"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "annotation"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamStarAnnotation"),
-              Core.projectionFieldName = (Core.Name "annotation")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the annotation field of hydra.python.syntax.Param
-paramWithAnnotation :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm (Maybe Syntax.Annotation) -> Typed.TypedTerm Syntax.Param
-paramWithAnnotation original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Param"),
-      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.python.syntax.Param"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "annotation"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.ParamWithDefault
-paramWithDefault :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.Default -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamWithDefault
-paramWithDefault param default_ typeComment =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Typed.unTypedTerm param)},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm default_)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm typeComment)}]}))
-
--- | DSL accessor for the default field of hydra.python.syntax.ParamWithDefault
-paramWithDefaultDefault :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm Syntax.Default
-paramWithDefaultDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamWithDefault"),
-        Core.projectionFieldName = (Core.Name "default")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the param field of hydra.python.syntax.ParamWithDefault
-paramWithDefaultParam :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm Syntax.Param
-paramWithDefaultParam x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamWithDefault"),
-        Core.projectionFieldName = (Core.Name "param")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ParamWithDefault
-paramWithDefaultParamWithDefault :: Typed.TypedName Syntax.ParamWithDefault
-paramWithDefaultParamWithDefault = Typed.TypedName (Core.Name "hydra.python.syntax.ParamWithDefault")
-
--- | DSL constructor for hydra.python.syntax.ParamWithDefaultParameters
-paramWithDefaultParameters :: Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.ParamWithDefaultParameters
-paramWithDefaultParameters paramWithDefault starEtc =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamWithDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramWithDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Typed.unTypedTerm starEtc)}]}))
-
--- | DSL accessor for the paramWithDefault field of hydra.python.syntax.ParamWithDefaultParameters
-paramWithDefaultParametersParamWithDefault :: Typed.TypedTerm Syntax.ParamWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault]
-paramWithDefaultParametersParamWithDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamWithDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ParamWithDefaultParameters
-paramWithDefaultParametersParamWithDefaultParameters :: Typed.TypedName Syntax.ParamWithDefaultParameters
-paramWithDefaultParametersParamWithDefaultParameters =
-    Typed.TypedName (Core.Name "hydra.python.syntax.ParamWithDefaultParameters")
-
--- | DSL accessor for the starEtc field of hydra.python.syntax.ParamWithDefaultParameters
-paramWithDefaultParametersStarEtc :: Typed.TypedTerm Syntax.ParamWithDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc)
-paramWithDefaultParametersStarEtc x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamWithDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "starEtc")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the paramWithDefault field of hydra.python.syntax.ParamWithDefaultParameters
-paramWithDefaultParametersWithParamWithDefault :: Typed.TypedTerm Syntax.ParamWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.ParamWithDefaultParameters
-paramWithDefaultParametersWithParamWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamWithDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamWithDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "starEtc")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the starEtc field of hydra.python.syntax.ParamWithDefaultParameters
-paramWithDefaultParametersWithStarEtc :: Typed.TypedTerm Syntax.ParamWithDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.ParamWithDefaultParameters
-paramWithDefaultParametersWithStarEtc original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamWithDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamWithDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL accessor for the typeComment field of hydra.python.syntax.ParamWithDefault
-paramWithDefaultTypeComment :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment)
-paramWithDefaultTypeComment x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamWithDefault"),
-        Core.projectionFieldName = (Core.Name "typeComment")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the default field of hydra.python.syntax.ParamWithDefault
-paramWithDefaultWithDefault :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm Syntax.Default -> Typed.TypedTerm Syntax.ParamWithDefault
-paramWithDefaultWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamWithDefault"),
-              Core.projectionFieldName = (Core.Name "param")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamWithDefault"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the param field of hydra.python.syntax.ParamWithDefault
-paramWithDefaultWithParam :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.ParamWithDefault
-paramWithDefaultWithParam original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          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.python.syntax.ParamWithDefault"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamWithDefault"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the typeComment field of hydra.python.syntax.ParamWithDefault
-paramWithDefaultWithTypeComment :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamWithDefault
-paramWithDefaultWithTypeComment original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ParamWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "param"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ParamWithDefault"),
-              Core.projectionFieldName = (Core.Name "param")})),
-            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.python.syntax.ParamWithDefault"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the name field of hydra.python.syntax.Param
-paramWithName :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Param
-paramWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Param"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "annotation"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Param"),
-              Core.projectionFieldName = (Core.Name "annotation")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the paramNoDefault variant of hydra.python.syntax.Parameters
-parametersParamNoDefault :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm Syntax.Parameters
-parametersParamNoDefault x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Parameters"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "paramNoDefault"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the paramWithDefault variant of hydra.python.syntax.Parameters
-parametersParamWithDefault :: Typed.TypedTerm Syntax.ParamWithDefaultParameters -> Typed.TypedTerm Syntax.Parameters
-parametersParamWithDefault x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Parameters"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "paramWithDefault"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.Parameters
-parametersParameters :: Typed.TypedName Syntax.Parameters
-parametersParameters = Typed.TypedName (Core.Name "hydra.python.syntax.Parameters")
-
--- | DSL injection for the slashNoDefault variant of hydra.python.syntax.Parameters
-parametersSlashNoDefault :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm Syntax.Parameters
-parametersSlashNoDefault x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Parameters"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "slashNoDefault"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the slashWithDefault variant of hydra.python.syntax.Parameters
-parametersSlashWithDefault :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm Syntax.Parameters
-parametersSlashWithDefault x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Parameters"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "slashWithDefault"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the starEtc variant of hydra.python.syntax.Parameters
-parametersStarEtc :: Typed.TypedTerm Syntax.StarEtc -> Typed.TypedTerm Syntax.Parameters
-parametersStarEtc x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Parameters"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starEtc"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the as variant of hydra.python.syntax.Pattern
-patternAs :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Pattern
-patternAs x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Pattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "as"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.PatternCaptureTarget wrapper
-patternCaptureTarget :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.PatternCaptureTarget
-patternCaptureTarget x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.PatternCaptureTarget"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.PatternCaptureTarget
-patternCaptureTargetPatternCaptureTarget :: Typed.TypedName Syntax.PatternCaptureTarget
-patternCaptureTargetPatternCaptureTarget = Typed.TypedName (Core.Name "hydra.python.syntax.PatternCaptureTarget")
-
--- | DSL injection for the or variant of hydra.python.syntax.Pattern
-patternOr :: Typed.TypedTerm Syntax.OrPattern -> Typed.TypedTerm Syntax.Pattern
-patternOr x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Pattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "or"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.Pattern
-patternPattern :: Typed.TypedName Syntax.Pattern
-patternPattern = Typed.TypedName (Core.Name "hydra.python.syntax.Pattern")
-
--- | DSL injection for the pattern variant of hydra.python.syntax.Patterns
-patternsPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Patterns
-patternsPattern x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Patterns"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "pattern"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.Patterns
-patternsPatterns :: Typed.TypedName Syntax.Patterns
-patternsPatterns = Typed.TypedName (Core.Name "hydra.python.syntax.Patterns")
-
--- | DSL injection for the sequence variant of hydra.python.syntax.Patterns
-patternsSequence :: Typed.TypedTerm Syntax.OpenSequencePattern -> Typed.TypedTerm Syntax.Patterns
-patternsSequence x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Patterns"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "sequence"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the minus variant of hydra.python.syntax.PlusOrMinus
-plusOrMinusMinus :: Typed.TypedTerm Syntax.PlusOrMinus
-plusOrMinusMinus =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.PlusOrMinus"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "minus"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the plus variant of hydra.python.syntax.PlusOrMinus
-plusOrMinusPlus :: Typed.TypedTerm Syntax.PlusOrMinus
-plusOrMinusPlus =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.PlusOrMinus"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "plus"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.python.syntax.PlusOrMinus
-plusOrMinusPlusOrMinus :: Typed.TypedName Syntax.PlusOrMinus
-plusOrMinusPlusOrMinus = Typed.TypedName (Core.Name "hydra.python.syntax.PlusOrMinus")
-
--- | DSL injection for the assignment variant of hydra.python.syntax.PosArg
-posArgAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.PosArg
-posArgAssignment x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.PosArg"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "assignment"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the expression variant of hydra.python.syntax.PosArg
-posArgExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.PosArg
-posArgExpression x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.PosArg"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "expression"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.PosArg
-posArgPosArg :: Typed.TypedName Syntax.PosArg
-posArgPosArg = Typed.TypedName (Core.Name "hydra.python.syntax.PosArg")
-
--- | DSL injection for the starred variant of hydra.python.syntax.PosArg
-posArgStarred :: Typed.TypedTerm Syntax.StarredExpression -> Typed.TypedTerm Syntax.PosArg
-posArgStarred x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.PosArg"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starred"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.PositionalPatterns wrapper
-positionalPatterns :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.PositionalPatterns
-positionalPatterns x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.PositionalPatterns"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.PositionalPatterns
-positionalPatternsPositionalPatterns :: Typed.TypedName Syntax.PositionalPatterns
-positionalPatternsPositionalPatterns = Typed.TypedName (Core.Name "hydra.python.syntax.PositionalPatterns")
-
--- | DSL constructor for hydra.python.syntax.Power
-power :: Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm (Maybe Syntax.Factor) -> Typed.TypedTerm Syntax.Power
-power lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Power"),
-      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.python.syntax.Power
-powerLhs :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm Syntax.AwaitPrimary
-powerLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Power"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Power
-powerPower :: Typed.TypedName Syntax.Power
-powerPower = Typed.TypedName (Core.Name "hydra.python.syntax.Power")
-
--- | DSL accessor for the rhs field of hydra.python.syntax.Power
-powerRhs :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm (Maybe Syntax.Factor)
-powerRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Power"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the lhs field of hydra.python.syntax.Power
-powerWithLhs :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm Syntax.Power
-powerWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Power"),
-      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.python.syntax.Power"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.Power
-powerWithRhs :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm (Maybe Syntax.Factor) -> Typed.TypedTerm Syntax.Power
-powerWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Power"),
-      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.python.syntax.Power"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the compound variant of hydra.python.syntax.Primary
-primaryCompound :: Typed.TypedTerm Syntax.PrimaryWithRhs -> Typed.TypedTerm Syntax.Primary
-primaryCompound x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Primary"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "compound"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.Primary
-primaryPrimary :: Typed.TypedName Syntax.Primary
-primaryPrimary = Typed.TypedName (Core.Name "hydra.python.syntax.Primary")
-
--- | DSL injection for the call variant of hydra.python.syntax.PrimaryRhs
-primaryRhsCall :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm Syntax.PrimaryRhs
-primaryRhsCall x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.PrimaryRhs"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "call"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the genexp variant of hydra.python.syntax.PrimaryRhs
-primaryRhsGenexp :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.PrimaryRhs
-primaryRhsGenexp x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.PrimaryRhs"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "genexp"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.PrimaryRhs
-primaryRhsPrimaryRhs :: Typed.TypedName Syntax.PrimaryRhs
-primaryRhsPrimaryRhs = Typed.TypedName (Core.Name "hydra.python.syntax.PrimaryRhs")
-
--- | DSL injection for the project variant of hydra.python.syntax.PrimaryRhs
-primaryRhsProject :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.PrimaryRhs
-primaryRhsProject x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.PrimaryRhs"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "project"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the slices variant of hydra.python.syntax.PrimaryRhs
-primaryRhsSlices :: Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm Syntax.PrimaryRhs
-primaryRhsSlices x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.PrimaryRhs"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "slices"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the simple variant of hydra.python.syntax.Primary
-primarySimple :: Typed.TypedTerm Syntax.Atom -> Typed.TypedTerm Syntax.Primary
-primarySimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Primary"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.python.syntax.PrimaryWithRhs
-primaryWithRhs :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.PrimaryRhs -> Typed.TypedTerm Syntax.PrimaryWithRhs
-primaryWithRhs primary rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.PrimaryWithRhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Typed.unTypedTerm primary)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the primary field of hydra.python.syntax.PrimaryWithRhs
-primaryWithRhsPrimary :: Typed.TypedTerm Syntax.PrimaryWithRhs -> Typed.TypedTerm Syntax.Primary
-primaryWithRhsPrimary x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.PrimaryWithRhs"),
-        Core.projectionFieldName = (Core.Name "primary")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.PrimaryWithRhs
-primaryWithRhsPrimaryWithRhs :: Typed.TypedName Syntax.PrimaryWithRhs
-primaryWithRhsPrimaryWithRhs = Typed.TypedName (Core.Name "hydra.python.syntax.PrimaryWithRhs")
-
--- | DSL accessor for the rhs field of hydra.python.syntax.PrimaryWithRhs
-primaryWithRhsRhs :: Typed.TypedTerm Syntax.PrimaryWithRhs -> Typed.TypedTerm Syntax.PrimaryRhs
-primaryWithRhsRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.PrimaryWithRhs"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the primary field of hydra.python.syntax.PrimaryWithRhs
-primaryWithRhsWithPrimary :: Typed.TypedTerm Syntax.PrimaryWithRhs -> Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.PrimaryWithRhs
-primaryWithRhsWithPrimary original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.PrimaryWithRhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          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.python.syntax.PrimaryWithRhs"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.PrimaryWithRhs
-primaryWithRhsWithRhs :: Typed.TypedTerm Syntax.PrimaryWithRhs -> Typed.TypedTerm Syntax.PrimaryRhs -> Typed.TypedTerm Syntax.PrimaryWithRhs
-primaryWithRhsWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.PrimaryWithRhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.PrimaryWithRhs"),
-              Core.projectionFieldName = (Core.Name "primary")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the double variant of hydra.python.syntax.QuoteStyle
-quoteStyleDouble :: Typed.TypedTerm Syntax.QuoteStyle
-quoteStyleDouble =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.QuoteStyle"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "double"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.python.syntax.QuoteStyle
-quoteStyleQuoteStyle :: Typed.TypedName Syntax.QuoteStyle
-quoteStyleQuoteStyle = Typed.TypedName (Core.Name "hydra.python.syntax.QuoteStyle")
-
--- | DSL injection for the single variant of hydra.python.syntax.QuoteStyle
-quoteStyleSingle :: Typed.TypedTerm Syntax.QuoteStyle
-quoteStyleSingle =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.QuoteStyle"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "single"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the tripleDouble variant of hydra.python.syntax.QuoteStyle
-quoteStyleTripleDouble :: Typed.TypedTerm Syntax.QuoteStyle
-quoteStyleTripleDouble =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.QuoteStyle"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "tripleDouble"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the tripleSingle variant of hydra.python.syntax.QuoteStyle
-quoteStyleTripleSingle :: Typed.TypedTerm Syntax.QuoteStyle
-quoteStyleTripleSingle =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.QuoteStyle"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "tripleSingle"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL constructor for hydra.python.syntax.RaiseExpression
-raiseExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.RaiseExpression
-raiseExpression expression from =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.RaiseExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm expression)},
-        Core.Field {
-          Core.fieldName = (Core.Name "from"),
-          Core.fieldTerm = (Typed.unTypedTerm from)}]}))
-
--- | DSL accessor for the expression field of hydra.python.syntax.RaiseExpression
-raiseExpressionExpression :: Typed.TypedTerm Syntax.RaiseExpression -> Typed.TypedTerm Syntax.Expression
-raiseExpressionExpression x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.RaiseExpression"),
-        Core.projectionFieldName = (Core.Name "expression")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the from field of hydra.python.syntax.RaiseExpression
-raiseExpressionFrom :: Typed.TypedTerm Syntax.RaiseExpression -> Typed.TypedTerm (Maybe Syntax.Expression)
-raiseExpressionFrom x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.RaiseExpression"),
-        Core.projectionFieldName = (Core.Name "from")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.RaiseExpression
-raiseExpressionRaiseExpression :: Typed.TypedName Syntax.RaiseExpression
-raiseExpressionRaiseExpression = Typed.TypedName (Core.Name "hydra.python.syntax.RaiseExpression")
-
--- | DSL updater for the expression field of hydra.python.syntax.RaiseExpression
-raiseExpressionWithExpression :: Typed.TypedTerm Syntax.RaiseExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.RaiseExpression
-raiseExpressionWithExpression original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.RaiseExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "from"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.RaiseExpression"),
-              Core.projectionFieldName = (Core.Name "from")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the from field of hydra.python.syntax.RaiseExpression
-raiseExpressionWithFrom :: Typed.TypedTerm Syntax.RaiseExpression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.RaiseExpression
-raiseExpressionWithFrom original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.RaiseExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.RaiseExpression"),
-              Core.projectionFieldName = (Core.Name "expression")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "from"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for the hydra.python.syntax.RaiseStatement wrapper
-raiseStatement :: Typed.TypedTerm (Maybe Syntax.RaiseExpression) -> Typed.TypedTerm Syntax.RaiseStatement
-raiseStatement x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.RaiseStatement"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.RaiseStatement
-raiseStatementRaiseStatement :: Typed.TypedName Syntax.RaiseStatement
-raiseStatementRaiseStatement = Typed.TypedName (Core.Name "hydra.python.syntax.RaiseStatement")
-
--- | DSL injection for the float variant of hydra.python.syntax.RealNumber
-realNumberFloat :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.RealNumber
-realNumberFloat x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.RealNumber"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "float"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the integer variant of hydra.python.syntax.RealNumber
-realNumberInteger :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.RealNumber
-realNumberInteger x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.RealNumber"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "integer"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.RealNumber
-realNumberRealNumber :: Typed.TypedName Syntax.RealNumber
-realNumberRealNumber = Typed.TypedName (Core.Name "hydra.python.syntax.RealNumber")
-
--- | DSL injection for the dot variant of hydra.python.syntax.RelativeImportPrefix
-relativeImportPrefixDot :: Typed.TypedTerm Syntax.RelativeImportPrefix
-relativeImportPrefixDot =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.RelativeImportPrefix"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "dot"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the ellipsis variant of hydra.python.syntax.RelativeImportPrefix
-relativeImportPrefixEllipsis :: Typed.TypedTerm Syntax.RelativeImportPrefix
-relativeImportPrefixEllipsis =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.RelativeImportPrefix"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "ellipsis"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.python.syntax.RelativeImportPrefix
-relativeImportPrefixRelativeImportPrefix :: Typed.TypedName Syntax.RelativeImportPrefix
-relativeImportPrefixRelativeImportPrefix = Typed.TypedName (Core.Name "hydra.python.syntax.RelativeImportPrefix")
-
--- | DSL constructor for the hydra.python.syntax.ReturnStatement wrapper
-returnStatement :: Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm Syntax.ReturnStatement
-returnStatement x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.ReturnStatement"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ReturnStatement
-returnStatementReturnStatement :: Typed.TypedName Syntax.ReturnStatement
-returnStatementReturnStatement = Typed.TypedName (Core.Name "hydra.python.syntax.ReturnStatement")
-
--- | DSL injection for the list variant of hydra.python.syntax.SequencePattern
-sequencePatternList :: Typed.TypedTerm (Maybe Syntax.MaybeSequencePattern) -> Typed.TypedTerm Syntax.SequencePattern
-sequencePatternList x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SequencePattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "list"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.SequencePattern
-sequencePatternSequencePattern :: Typed.TypedName Syntax.SequencePattern
-sequencePatternSequencePattern = Typed.TypedName (Core.Name "hydra.python.syntax.SequencePattern")
-
--- | DSL injection for the tuple variant of hydra.python.syntax.SequencePattern
-sequencePatternTuple :: Typed.TypedTerm (Maybe Syntax.OpenSequencePattern) -> Typed.TypedTerm Syntax.SequencePattern
-sequencePatternTuple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SequencePattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "tuple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.Set wrapper
-set :: Typed.TypedTerm [Syntax.StarNamedExpression] -> Typed.TypedTerm Syntax.Set
-set x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Set"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Set
-setSet :: Typed.TypedName Syntax.Set
-setSet = Typed.TypedName (Core.Name "hydra.python.syntax.Set")
-
--- | DSL constructor for hydra.python.syntax.Setcomp
-setcomp :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Setcomp
-setcomp expression forIfClauses =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Setcomp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm expression)},
-        Core.Field {
-          Core.fieldName = (Core.Name "forIfClauses"),
-          Core.fieldTerm = (Typed.unTypedTerm forIfClauses)}]}))
-
--- | DSL accessor for the expression field of hydra.python.syntax.Setcomp
-setcompExpression :: Typed.TypedTerm Syntax.Setcomp -> Typed.TypedTerm Syntax.NamedExpression
-setcompExpression x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Setcomp"),
-        Core.projectionFieldName = (Core.Name "expression")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the forIfClauses field of hydra.python.syntax.Setcomp
-setcompForIfClauses :: Typed.TypedTerm Syntax.Setcomp -> Typed.TypedTerm Syntax.ForIfClauses
-setcompForIfClauses x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Setcomp"),
-        Core.projectionFieldName = (Core.Name "forIfClauses")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Setcomp
-setcompSetcomp :: Typed.TypedName Syntax.Setcomp
-setcompSetcomp = Typed.TypedName (Core.Name "hydra.python.syntax.Setcomp")
-
--- | DSL updater for the expression field of hydra.python.syntax.Setcomp
-setcompWithExpression :: Typed.TypedTerm Syntax.Setcomp -> Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Setcomp
-setcompWithExpression original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Setcomp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "forIfClauses"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Setcomp"),
-              Core.projectionFieldName = (Core.Name "forIfClauses")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the forIfClauses field of hydra.python.syntax.Setcomp
-setcompWithForIfClauses :: Typed.TypedTerm Syntax.Setcomp -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Setcomp
-setcompWithForIfClauses original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Setcomp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Setcomp"),
-              Core.projectionFieldName = (Core.Name "expression")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "forIfClauses"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.ShiftExpression
-shiftExpression :: Typed.TypedTerm (Maybe Syntax.ShiftLhs) -> Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.ShiftExpression
-shiftExpression lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ShiftExpression"),
-      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.python.syntax.ShiftExpression
-shiftExpressionLhs :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm (Maybe Syntax.ShiftLhs)
-shiftExpressionLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ShiftExpression"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.python.syntax.ShiftExpression
-shiftExpressionRhs :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.Sum
-shiftExpressionRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ShiftExpression"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ShiftExpression
-shiftExpressionShiftExpression :: Typed.TypedName Syntax.ShiftExpression
-shiftExpressionShiftExpression = Typed.TypedName (Core.Name "hydra.python.syntax.ShiftExpression")
-
--- | DSL updater for the lhs field of hydra.python.syntax.ShiftExpression
-shiftExpressionWithLhs :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm (Maybe Syntax.ShiftLhs) -> Typed.TypedTerm Syntax.ShiftExpression
-shiftExpressionWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ShiftExpression"),
-      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.python.syntax.ShiftExpression"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.ShiftExpression
-shiftExpressionWithRhs :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.ShiftExpression
-shiftExpressionWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ShiftExpression"),
-      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.python.syntax.ShiftExpression"),
-              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.python.syntax.ShiftLhs
-shiftLhs :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.ShiftOp -> Typed.TypedTerm Syntax.ShiftLhs
-shiftLhs operand operator =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ShiftLhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operand"),
-          Core.fieldTerm = (Typed.unTypedTerm operand)},
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          Core.fieldTerm = (Typed.unTypedTerm operator)}]}))
-
--- | DSL accessor for the operand field of hydra.python.syntax.ShiftLhs
-shiftLhsOperand :: Typed.TypedTerm Syntax.ShiftLhs -> Typed.TypedTerm Syntax.ShiftExpression
-shiftLhsOperand x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ShiftLhs"),
-        Core.projectionFieldName = (Core.Name "operand")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the operator field of hydra.python.syntax.ShiftLhs
-shiftLhsOperator :: Typed.TypedTerm Syntax.ShiftLhs -> Typed.TypedTerm Syntax.ShiftOp
-shiftLhsOperator x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.ShiftLhs"),
-        Core.projectionFieldName = (Core.Name "operator")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ShiftLhs
-shiftLhsShiftLhs :: Typed.TypedName Syntax.ShiftLhs
-shiftLhsShiftLhs = Typed.TypedName (Core.Name "hydra.python.syntax.ShiftLhs")
-
--- | DSL updater for the operand field of hydra.python.syntax.ShiftLhs
-shiftLhsWithOperand :: Typed.TypedTerm Syntax.ShiftLhs -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.ShiftLhs
-shiftLhsWithOperand original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ShiftLhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operand"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ShiftLhs"),
-              Core.projectionFieldName = (Core.Name "operator")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the operator field of hydra.python.syntax.ShiftLhs
-shiftLhsWithOperator :: Typed.TypedTerm Syntax.ShiftLhs -> Typed.TypedTerm Syntax.ShiftOp -> Typed.TypedTerm Syntax.ShiftLhs
-shiftLhsWithOperator original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.ShiftLhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operand"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.ShiftLhs"),
-              Core.projectionFieldName = (Core.Name "operand")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the left variant of hydra.python.syntax.ShiftOp
-shiftOpLeft :: Typed.TypedTerm Syntax.ShiftOp
-shiftOpLeft =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ShiftOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "left"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the right variant of hydra.python.syntax.ShiftOp
-shiftOpRight :: Typed.TypedTerm Syntax.ShiftOp
-shiftOpRight =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.ShiftOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "right"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.python.syntax.ShiftOp
-shiftOpShiftOp :: Typed.TypedName Syntax.ShiftOp
-shiftOpShiftOp = Typed.TypedName (Core.Name "hydra.python.syntax.ShiftOp")
-
--- | DSL injection for the number variant of hydra.python.syntax.SignedNumber
-signedNumberNumber :: Typed.TypedTerm Syntax.Number -> Typed.TypedTerm Syntax.SignedNumber
-signedNumberNumber x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SignedNumber"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "number"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the sign variant of hydra.python.syntax.SignedNumber
-signedNumberSign :: Typed.TypedTerm Syntax.PlusOrMinus -> Typed.TypedTerm Syntax.SignedNumber
-signedNumberSign x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SignedNumber"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "sign"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.SignedNumber
-signedNumberSignedNumber :: Typed.TypedName Syntax.SignedNumber
-signedNumberSignedNumber = Typed.TypedName (Core.Name "hydra.python.syntax.SignedNumber")
-
--- | DSL injection for the number variant of hydra.python.syntax.SignedRealNumber
-signedRealNumberNumber :: Typed.TypedTerm Syntax.RealNumber -> Typed.TypedTerm Syntax.SignedRealNumber
-signedRealNumberNumber x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SignedRealNumber"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "number"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the sign variant of hydra.python.syntax.SignedRealNumber
-signedRealNumberSign :: Typed.TypedTerm Syntax.PlusOrMinus -> Typed.TypedTerm Syntax.SignedRealNumber
-signedRealNumberSign x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SignedRealNumber"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "sign"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.SignedRealNumber
-signedRealNumberSignedRealNumber :: Typed.TypedName Syntax.SignedRealNumber
-signedRealNumberSignedRealNumber = Typed.TypedName (Core.Name "hydra.python.syntax.SignedRealNumber")
-
--- | DSL injection for the assert variant of hydra.python.syntax.SimpleStatement
-simpleStatementAssert :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementAssert x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "assert"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the assignment variant of hydra.python.syntax.SimpleStatement
-simpleStatementAssignment :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementAssignment x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "assignment"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the break variant of hydra.python.syntax.SimpleStatement
-simpleStatementBreak :: Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementBreak =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "break"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the continue variant of hydra.python.syntax.SimpleStatement
-simpleStatementContinue :: Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementContinue =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "continue"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the del variant of hydra.python.syntax.SimpleStatement
-simpleStatementDel :: Typed.TypedTerm Syntax.DelStatement -> Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementDel x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "del"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the global variant of hydra.python.syntax.SimpleStatement
-simpleStatementGlobal :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementGlobal x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "global"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the import variant of hydra.python.syntax.SimpleStatement
-simpleStatementImport :: Typed.TypedTerm Syntax.ImportStatement -> Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementImport x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "import"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the nonlocal variant of hydra.python.syntax.SimpleStatement
-simpleStatementNonlocal :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementNonlocal x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "nonlocal"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the pass variant of hydra.python.syntax.SimpleStatement
-simpleStatementPass :: Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementPass =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "pass"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the raise variant of hydra.python.syntax.SimpleStatement
-simpleStatementRaise :: Typed.TypedTerm Syntax.RaiseStatement -> Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementRaise x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "raise"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the return variant of hydra.python.syntax.SimpleStatement
-simpleStatementReturn :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementReturn x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "return"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.SimpleStatement
-simpleStatementSimpleStatement :: Typed.TypedName Syntax.SimpleStatement
-simpleStatementSimpleStatement = Typed.TypedName (Core.Name "hydra.python.syntax.SimpleStatement")
-
--- | DSL injection for the starExpressions variant of hydra.python.syntax.SimpleStatement
-simpleStatementStarExpressions :: Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementStarExpressions x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starExpressions"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the typeAlias variant of hydra.python.syntax.SimpleStatement
-simpleStatementTypeAlias :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementTypeAlias x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "typeAlias"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the yield variant of hydra.python.syntax.SimpleStatement
-simpleStatementYield :: Typed.TypedTerm Syntax.YieldStatement -> Typed.TypedTerm Syntax.SimpleStatement
-simpleStatementYield x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SimpleStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "yield"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.python.syntax.SimpleTypeParameter
-simpleTypeParameter :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SimpleTypeParameter
-simpleTypeParameter name bound default_ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SimpleTypeParameter"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "bound"),
-          Core.fieldTerm = (Typed.unTypedTerm bound)},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm default_)}]}))
-
--- | DSL accessor for the bound field of hydra.python.syntax.SimpleTypeParameter
-simpleTypeParameterBound :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression)
-simpleTypeParameterBound x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SimpleTypeParameter"),
-        Core.projectionFieldName = (Core.Name "bound")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the default field of hydra.python.syntax.SimpleTypeParameter
-simpleTypeParameterDefault :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression)
-simpleTypeParameterDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SimpleTypeParameter"),
-        Core.projectionFieldName = (Core.Name "default")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.python.syntax.SimpleTypeParameter
-simpleTypeParameterName :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm Syntax.Name
-simpleTypeParameterName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SimpleTypeParameter"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.SimpleTypeParameter
-simpleTypeParameterSimpleTypeParameter :: Typed.TypedName Syntax.SimpleTypeParameter
-simpleTypeParameterSimpleTypeParameter = Typed.TypedName (Core.Name "hydra.python.syntax.SimpleTypeParameter")
-
--- | DSL updater for the bound field of hydra.python.syntax.SimpleTypeParameter
-simpleTypeParameterWithBound :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SimpleTypeParameter
-simpleTypeParameterWithBound original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SimpleTypeParameter"),
-      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.python.syntax.SimpleTypeParameter"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "bound"),
-          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.python.syntax.SimpleTypeParameter"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the default field of hydra.python.syntax.SimpleTypeParameter
-simpleTypeParameterWithDefault :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SimpleTypeParameter
-simpleTypeParameterWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SimpleTypeParameter"),
-      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.python.syntax.SimpleTypeParameter"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "bound"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SimpleTypeParameter"),
-              Core.projectionFieldName = (Core.Name "bound")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the name field of hydra.python.syntax.SimpleTypeParameter
-simpleTypeParameterWithName :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SimpleTypeParameter
-simpleTypeParameterWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SimpleTypeParameter"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "bound"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SimpleTypeParameter"),
-              Core.projectionFieldName = (Core.Name "bound")})),
-            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.python.syntax.SimpleTypeParameter"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the primaryAndName variant of hydra.python.syntax.SingleSubscriptAttributeTarget
-singleSubscriptAttributeTargetPrimaryAndName :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.SingleSubscriptAttributeTarget
-singleSubscriptAttributeTargetPrimaryAndName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SingleSubscriptAttributeTarget"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "primaryAndName"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the primaryAndSlices variant of hydra.python.syntax.SingleSubscriptAttributeTarget
-singleSubscriptAttributeTargetPrimaryAndSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.SingleSubscriptAttributeTarget
-singleSubscriptAttributeTargetPrimaryAndSlices x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SingleSubscriptAttributeTarget"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "primaryAndSlices"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.SingleSubscriptAttributeTarget
-singleSubscriptAttributeTargetSingleSubscriptAttributeTarget :: Typed.TypedName Syntax.SingleSubscriptAttributeTarget
-singleSubscriptAttributeTargetSingleSubscriptAttributeTarget =
-    Typed.TypedName (Core.Name "hydra.python.syntax.SingleSubscriptAttributeTarget")
-
--- | DSL injection for the name variant of hydra.python.syntax.SingleTarget
-singleTargetName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SingleTarget
-singleTargetName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SingleTarget"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "name"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the parens variant of hydra.python.syntax.SingleTarget
-singleTargetParens :: Typed.TypedTerm Syntax.SingleTarget -> Typed.TypedTerm Syntax.SingleTarget
-singleTargetParens x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SingleTarget"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "parens"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.SingleTarget
-singleTargetSingleTarget :: Typed.TypedName Syntax.SingleTarget
-singleTargetSingleTarget = Typed.TypedName (Core.Name "hydra.python.syntax.SingleTarget")
-
--- | DSL injection for the subscriptAttributeTarget variant of hydra.python.syntax.SingleTarget
-singleTargetSubscriptAttributeTarget :: Typed.TypedTerm Syntax.SingleSubscriptAttributeTarget -> Typed.TypedTerm Syntax.SingleTarget
-singleTargetSubscriptAttributeTarget x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SingleTarget"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "subscriptAttributeTarget"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.SlashNoDefault wrapper
-slashNoDefault :: Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm Syntax.SlashNoDefault
-slashNoDefault x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.SlashNoDefault"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.python.syntax.SlashNoDefaultParameters
-slashNoDefaultParameters :: Typed.TypedTerm Syntax.SlashNoDefault -> Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.SlashNoDefaultParameters
-slashNoDefaultParameters slash paramNoDefault paramWithDefault starEtc =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "slash"),
-          Core.fieldTerm = (Typed.unTypedTerm slash)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramWithDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Typed.unTypedTerm starEtc)}]}))
-
--- | DSL accessor for the paramNoDefault field of hydra.python.syntax.SlashNoDefaultParameters
-slashNoDefaultParametersParamNoDefault :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault]
-slashNoDefaultParametersParamNoDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramWithDefault field of hydra.python.syntax.SlashNoDefaultParameters
-slashNoDefaultParametersParamWithDefault :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault]
-slashNoDefaultParametersParamWithDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the slash field of hydra.python.syntax.SlashNoDefaultParameters
-slashNoDefaultParametersSlash :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm Syntax.SlashNoDefault
-slashNoDefaultParametersSlash x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "slash")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.SlashNoDefaultParameters
-slashNoDefaultParametersSlashNoDefaultParameters :: Typed.TypedName Syntax.SlashNoDefaultParameters
-slashNoDefaultParametersSlashNoDefaultParameters =
-    Typed.TypedName (Core.Name "hydra.python.syntax.SlashNoDefaultParameters")
-
--- | DSL accessor for the starEtc field of hydra.python.syntax.SlashNoDefaultParameters
-slashNoDefaultParametersStarEtc :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc)
-slashNoDefaultParametersStarEtc x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "starEtc")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the paramNoDefault field of hydra.python.syntax.SlashNoDefaultParameters
-slashNoDefaultParametersWithParamNoDefault :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm Syntax.SlashNoDefaultParameters
-slashNoDefaultParametersWithParamNoDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "slash"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "slash")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "starEtc")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramWithDefault field of hydra.python.syntax.SlashNoDefaultParameters
-slashNoDefaultParametersWithParamWithDefault :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.SlashNoDefaultParameters
-slashNoDefaultParametersWithParamWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "slash"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "slash")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "starEtc")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the slash field of hydra.python.syntax.SlashNoDefaultParameters
-slashNoDefaultParametersWithSlash :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm Syntax.SlashNoDefault -> Typed.TypedTerm Syntax.SlashNoDefaultParameters
-slashNoDefaultParametersWithSlash original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "slash"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "starEtc")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the starEtc field of hydra.python.syntax.SlashNoDefaultParameters
-slashNoDefaultParametersWithStarEtc :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.SlashNoDefaultParameters
-slashNoDefaultParametersWithStarEtc original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "slash"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "slash")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashNoDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL name token for hydra.python.syntax.SlashNoDefault
-slashNoDefaultSlashNoDefault :: Typed.TypedName Syntax.SlashNoDefault
-slashNoDefaultSlashNoDefault = Typed.TypedName (Core.Name "hydra.python.syntax.SlashNoDefault")
-
--- | DSL constructor for hydra.python.syntax.SlashWithDefault
-slashWithDefault :: Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.SlashWithDefault
-slashWithDefault paramNoDefault paramWithDefault =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramWithDefault)}]}))
-
--- | DSL accessor for the paramNoDefault field of hydra.python.syntax.SlashWithDefault
-slashWithDefaultParamNoDefault :: Typed.TypedTerm Syntax.SlashWithDefault -> Typed.TypedTerm [Syntax.ParamNoDefault]
-slashWithDefaultParamNoDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefault"),
-        Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramWithDefault field of hydra.python.syntax.SlashWithDefault
-slashWithDefaultParamWithDefault :: Typed.TypedTerm Syntax.SlashWithDefault -> Typed.TypedTerm [Syntax.ParamWithDefault]
-slashWithDefaultParamWithDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefault"),
-        Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.python.syntax.SlashWithDefaultParameters
-slashWithDefaultParameters :: Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.SlashWithDefaultParameters
-slashWithDefaultParameters paramNoDefault paramWithDefault starEtc =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm paramWithDefault)},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Typed.unTypedTerm starEtc)}]}))
-
--- | DSL accessor for the paramNoDefault field of hydra.python.syntax.SlashWithDefaultParameters
-slashWithDefaultParametersParamNoDefault :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault]
-slashWithDefaultParametersParamNoDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the paramWithDefault field of hydra.python.syntax.SlashWithDefaultParameters
-slashWithDefaultParametersParamWithDefault :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault]
-slashWithDefaultParametersParamWithDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.SlashWithDefaultParameters
-slashWithDefaultParametersSlashWithDefaultParameters :: Typed.TypedName Syntax.SlashWithDefaultParameters
-slashWithDefaultParametersSlashWithDefaultParameters =
-    Typed.TypedName (Core.Name "hydra.python.syntax.SlashWithDefaultParameters")
-
--- | DSL accessor for the starEtc field of hydra.python.syntax.SlashWithDefaultParameters
-slashWithDefaultParametersStarEtc :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc)
-slashWithDefaultParametersStarEtc x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-        Core.projectionFieldName = (Core.Name "starEtc")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the paramNoDefault field of hydra.python.syntax.SlashWithDefaultParameters
-slashWithDefaultParametersWithParamNoDefault :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm Syntax.SlashWithDefaultParameters
-slashWithDefaultParametersWithParamNoDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "starEtc")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramWithDefault field of hydra.python.syntax.SlashWithDefaultParameters
-slashWithDefaultParametersWithParamWithDefault :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.SlashWithDefaultParameters
-slashWithDefaultParametersWithParamWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "starEtc")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the starEtc field of hydra.python.syntax.SlashWithDefaultParameters
-slashWithDefaultParametersWithStarEtc :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.SlashWithDefaultParameters
-slashWithDefaultParametersWithStarEtc original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefaultParameters"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "starEtc"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL name token for hydra.python.syntax.SlashWithDefault
-slashWithDefaultSlashWithDefault :: Typed.TypedName Syntax.SlashWithDefault
-slashWithDefaultSlashWithDefault = Typed.TypedName (Core.Name "hydra.python.syntax.SlashWithDefault")
-
--- | DSL updater for the paramNoDefault field of hydra.python.syntax.SlashWithDefault
-slashWithDefaultWithParamNoDefault :: Typed.TypedTerm Syntax.SlashWithDefault -> Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm Syntax.SlashWithDefault
-slashWithDefaultWithParamNoDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefault"),
-              Core.projectionFieldName = (Core.Name "paramWithDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the paramWithDefault field of hydra.python.syntax.SlashWithDefault
-slashWithDefaultWithParamWithDefault :: Typed.TypedTerm Syntax.SlashWithDefault -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.SlashWithDefault
-slashWithDefaultWithParamWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SlashWithDefault"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "paramNoDefault"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SlashWithDefault"),
-              Core.projectionFieldName = (Core.Name "paramNoDefault")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "paramWithDefault"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.SliceExpression
-sliceExpression :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SliceExpression
-sliceExpression start stop step =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "start"),
-          Core.fieldTerm = (Typed.unTypedTerm start)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stop"),
-          Core.fieldTerm = (Typed.unTypedTerm stop)},
-        Core.Field {
-          Core.fieldName = (Core.Name "step"),
-          Core.fieldTerm = (Typed.unTypedTerm step)}]}))
-
--- | DSL name token for hydra.python.syntax.SliceExpression
-sliceExpressionSliceExpression :: Typed.TypedName Syntax.SliceExpression
-sliceExpressionSliceExpression = Typed.TypedName (Core.Name "hydra.python.syntax.SliceExpression")
-
--- | DSL accessor for the start field of hydra.python.syntax.SliceExpression
-sliceExpressionStart :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression)
-sliceExpressionStart x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-        Core.projectionFieldName = (Core.Name "start")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the step field of hydra.python.syntax.SliceExpression
-sliceExpressionStep :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression)
-sliceExpressionStep x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-        Core.projectionFieldName = (Core.Name "step")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the stop field of hydra.python.syntax.SliceExpression
-sliceExpressionStop :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression)
-sliceExpressionStop x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-        Core.projectionFieldName = (Core.Name "stop")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the start field of hydra.python.syntax.SliceExpression
-sliceExpressionWithStart :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SliceExpression
-sliceExpressionWithStart original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "start"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "stop"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-              Core.projectionFieldName = (Core.Name "stop")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "step"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-              Core.projectionFieldName = (Core.Name "step")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the step field of hydra.python.syntax.SliceExpression
-sliceExpressionWithStep :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SliceExpression
-sliceExpressionWithStep original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "start"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-              Core.projectionFieldName = (Core.Name "start")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stop"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-              Core.projectionFieldName = (Core.Name "stop")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "step"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the stop field of hydra.python.syntax.SliceExpression
-sliceExpressionWithStop :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SliceExpression
-sliceExpressionWithStop original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "start"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-              Core.projectionFieldName = (Core.Name "start")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "stop"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "step"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SliceExpression"),
-              Core.projectionFieldName = (Core.Name "step")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the named variant of hydra.python.syntax.Slice
-sliceNamed :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Slice
-sliceNamed x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Slice"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "named"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the slice variant of hydra.python.syntax.SliceOrStarredExpression
-sliceOrStarredExpressionSlice :: Typed.TypedTerm Syntax.Slice -> Typed.TypedTerm Syntax.SliceOrStarredExpression
-sliceOrStarredExpressionSlice x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SliceOrStarredExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "slice"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.SliceOrStarredExpression
-sliceOrStarredExpressionSliceOrStarredExpression :: Typed.TypedName Syntax.SliceOrStarredExpression
-sliceOrStarredExpressionSliceOrStarredExpression =
-    Typed.TypedName (Core.Name "hydra.python.syntax.SliceOrStarredExpression")
-
--- | DSL injection for the starred variant of hydra.python.syntax.SliceOrStarredExpression
-sliceOrStarredExpressionStarred :: Typed.TypedTerm Syntax.StarredExpression -> Typed.TypedTerm Syntax.SliceOrStarredExpression
-sliceOrStarredExpressionStarred x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SliceOrStarredExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starred"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.Slice
-sliceSlice :: Typed.TypedName Syntax.Slice
-sliceSlice = Typed.TypedName (Core.Name "hydra.python.syntax.Slice")
-
--- | DSL injection for the slice_ variant of hydra.python.syntax.Slice
-sliceSlice_ :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm Syntax.Slice
-sliceSlice_ x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Slice"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "slice_"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.python.syntax.Slices
-slices :: Typed.TypedTerm Syntax.Slice -> Typed.TypedTerm [Syntax.SliceOrStarredExpression] -> Typed.TypedTerm Syntax.Slices
-slices head tail =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Slices"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "head"),
-          Core.fieldTerm = (Typed.unTypedTerm head)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tail"),
-          Core.fieldTerm = (Typed.unTypedTerm tail)}]}))
-
--- | DSL accessor for the head field of hydra.python.syntax.Slices
-slicesHead :: Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm Syntax.Slice
-slicesHead x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Slices"),
-        Core.projectionFieldName = (Core.Name "head")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Slices
-slicesSlices :: Typed.TypedName Syntax.Slices
-slicesSlices = Typed.TypedName (Core.Name "hydra.python.syntax.Slices")
-
--- | DSL accessor for the tail field of hydra.python.syntax.Slices
-slicesTail :: Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm [Syntax.SliceOrStarredExpression]
-slicesTail x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Slices"),
-        Core.projectionFieldName = (Core.Name "tail")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the head field of hydra.python.syntax.Slices
-slicesWithHead :: Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm Syntax.Slice -> Typed.TypedTerm Syntax.Slices
-slicesWithHead original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Slices"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "head"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "tail"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Slices"),
-              Core.projectionFieldName = (Core.Name "tail")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the tail field of hydra.python.syntax.Slices
-slicesWithTail :: Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm [Syntax.SliceOrStarredExpression] -> Typed.TypedTerm Syntax.Slices
-slicesWithTail original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Slices"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "head"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.Slices"),
-              Core.projectionFieldName = (Core.Name "head")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "tail"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for the hydra.python.syntax.StarAnnotation wrapper
-starAnnotation :: Typed.TypedTerm Syntax.StarExpression -> Typed.TypedTerm Syntax.StarAnnotation
-starAnnotation x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.StarAnnotation"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.StarAnnotation
-starAnnotationStarAnnotation :: Typed.TypedName Syntax.StarAnnotation
-starAnnotationStarAnnotation = Typed.TypedName (Core.Name "hydra.python.syntax.StarAnnotation")
-
--- | DSL injection for the name variant of hydra.python.syntax.StarAtom
-starAtomName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.StarAtom
-starAtomName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarAtom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "name"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.StarAtom
-starAtomStarAtom :: Typed.TypedName Syntax.StarAtom
-starAtomStarAtom = Typed.TypedName (Core.Name "hydra.python.syntax.StarAtom")
-
--- | DSL injection for the starTargetsListSeq variant of hydra.python.syntax.StarAtom
-starAtomStarTargetsListSeq :: Typed.TypedTerm (Maybe Syntax.StarTargetsListSeq) -> Typed.TypedTerm Syntax.StarAtom
-starAtomStarTargetsListSeq x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarAtom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starTargetsListSeq"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the starTargetsTupleSeq variant of hydra.python.syntax.StarAtom
-starAtomStarTargetsTupleSeq :: Typed.TypedTerm (Maybe Syntax.StarTargetsTupleSeq) -> Typed.TypedTerm Syntax.StarAtom
-starAtomStarTargetsTupleSeq x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarAtom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starTargetsTupleSeq"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the targetWithStarAtom variant of hydra.python.syntax.StarAtom
-starAtomTargetWithStarAtom :: Typed.TypedTerm Syntax.TargetWithStarAtom -> Typed.TypedTerm Syntax.StarAtom
-starAtomTargetWithStarAtom x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarAtom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "targetWithStarAtom"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the keywords variant of hydra.python.syntax.StarEtc
-starEtcKeywords :: Typed.TypedTerm Syntax.Keywords -> Typed.TypedTerm Syntax.StarEtc
-starEtcKeywords x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarEtc"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "keywords"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the starComma variant of hydra.python.syntax.StarEtc
-starEtcStarComma :: Typed.TypedTerm Syntax.CommaStarEtc -> Typed.TypedTerm Syntax.StarEtc
-starEtcStarComma x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarEtc"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starComma"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.StarEtc
-starEtcStarEtc :: Typed.TypedName Syntax.StarEtc
-starEtcStarEtc = Typed.TypedName (Core.Name "hydra.python.syntax.StarEtc")
-
--- | DSL injection for the starNoDefault variant of hydra.python.syntax.StarEtc
-starEtcStarNoDefault :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm Syntax.StarEtc
-starEtcStarNoDefault x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarEtc"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starNoDefault"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the starNoDefaultStarAnnotation variant of hydra.python.syntax.StarEtc
-starEtcStarNoDefaultStarAnnotation :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm Syntax.StarEtc
-starEtcStarNoDefaultStarAnnotation x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarEtc"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starNoDefaultStarAnnotation"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the simple variant of hydra.python.syntax.StarExpression
-starExpressionSimple :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.StarExpression
-starExpressionSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the star variant of hydra.python.syntax.StarExpression
-starExpressionStar :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.StarExpression
-starExpressionStar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "star"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.StarExpression
-starExpressionStarExpression :: Typed.TypedName Syntax.StarExpression
-starExpressionStarExpression = Typed.TypedName (Core.Name "hydra.python.syntax.StarExpression")
-
--- | DSL injection for the simple variant of hydra.python.syntax.StarNamedExpression
-starNamedExpressionSimple :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.StarNamedExpression
-starNamedExpressionSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarNamedExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the star variant of hydra.python.syntax.StarNamedExpression
-starNamedExpressionStar :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.StarNamedExpression
-starNamedExpressionStar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarNamedExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "star"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.StarNamedExpression
-starNamedExpressionStarNamedExpression :: Typed.TypedName Syntax.StarNamedExpression
-starNamedExpressionStarNamedExpression = Typed.TypedName (Core.Name "hydra.python.syntax.StarNamedExpression")
-
--- | DSL constructor for the hydra.python.syntax.StarNamedExpressions wrapper
-starNamedExpressions :: Typed.TypedTerm [Syntax.StarNamedExpression] -> Typed.TypedTerm Syntax.StarNamedExpressions
-starNamedExpressions x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.StarNamedExpressions"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.StarNamedExpressions
-starNamedExpressionsStarNamedExpressions :: Typed.TypedName Syntax.StarNamedExpressions
-starNamedExpressionsStarNamedExpressions = Typed.TypedName (Core.Name "hydra.python.syntax.StarNamedExpressions")
-
--- | DSL injection for the capture variant of hydra.python.syntax.StarPattern
-starPatternCapture :: Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.StarPattern
-starPatternCapture x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "capture"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.StarPattern
-starPatternStarPattern :: Typed.TypedName Syntax.StarPattern
-starPatternStarPattern = Typed.TypedName (Core.Name "hydra.python.syntax.StarPattern")
-
--- | DSL injection for the wildcard variant of hydra.python.syntax.StarPattern
-starPatternWildcard :: Typed.TypedTerm Syntax.StarPattern
-starPatternWildcard =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarPattern"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "wildcard"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.python.syntax.StarTarget
-starTargetStarTarget :: Typed.TypedName Syntax.StarTarget
-starTargetStarTarget = Typed.TypedName (Core.Name "hydra.python.syntax.StarTarget")
-
--- | DSL injection for the starred variant of hydra.python.syntax.StarTarget
-starTargetStarred :: Typed.TypedTerm Syntax.StarTarget -> Typed.TypedTerm Syntax.StarTarget
-starTargetStarred x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarTarget"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starred"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the unstarred variant of hydra.python.syntax.StarTarget
-starTargetUnstarred :: Typed.TypedTerm Syntax.TargetWithStarAtom -> Typed.TypedTerm Syntax.StarTarget
-starTargetUnstarred x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StarTarget"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "unstarred"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.python.syntax.StarTargetsListSeq wrapper
-starTargetsListSeq :: Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.StarTargetsListSeq
-starTargetsListSeq x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.StarTargetsListSeq"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.StarTargetsListSeq
-starTargetsListSeqStarTargetsListSeq :: Typed.TypedName Syntax.StarTargetsListSeq
-starTargetsListSeqStarTargetsListSeq = Typed.TypedName (Core.Name "hydra.python.syntax.StarTargetsListSeq")
-
--- | DSL constructor for the hydra.python.syntax.StarTargetsTupleSeq wrapper
-starTargetsTupleSeq :: Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.StarTargetsTupleSeq
-starTargetsTupleSeq x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.StarTargetsTupleSeq"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.StarTargetsTupleSeq
-starTargetsTupleSeqStarTargetsTupleSeq :: Typed.TypedName Syntax.StarTargetsTupleSeq
-starTargetsTupleSeqStarTargetsTupleSeq = Typed.TypedName (Core.Name "hydra.python.syntax.StarTargetsTupleSeq")
-
--- | DSL constructor for hydra.python.syntax.StarTypeParameter
-starTypeParameter :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.StarExpression) -> Typed.TypedTerm Syntax.StarTypeParameter
-starTypeParameter name default_ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.StarTypeParameter"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm default_)}]}))
-
--- | DSL accessor for the default field of hydra.python.syntax.StarTypeParameter
-starTypeParameterDefault :: Typed.TypedTerm Syntax.StarTypeParameter -> Typed.TypedTerm (Maybe Syntax.StarExpression)
-starTypeParameterDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.StarTypeParameter"),
-        Core.projectionFieldName = (Core.Name "default")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.python.syntax.StarTypeParameter
-starTypeParameterName :: Typed.TypedTerm Syntax.StarTypeParameter -> Typed.TypedTerm Syntax.Name
-starTypeParameterName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.StarTypeParameter"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.StarTypeParameter
-starTypeParameterStarTypeParameter :: Typed.TypedName Syntax.StarTypeParameter
-starTypeParameterStarTypeParameter = Typed.TypedName (Core.Name "hydra.python.syntax.StarTypeParameter")
-
--- | DSL updater for the default field of hydra.python.syntax.StarTypeParameter
-starTypeParameterWithDefault :: Typed.TypedTerm Syntax.StarTypeParameter -> Typed.TypedTerm (Maybe Syntax.StarExpression) -> Typed.TypedTerm Syntax.StarTypeParameter
-starTypeParameterWithDefault original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.StarTypeParameter"),
-      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.python.syntax.StarTypeParameter"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "default"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the name field of hydra.python.syntax.StarTypeParameter
-starTypeParameterWithName :: Typed.TypedTerm Syntax.StarTypeParameter -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.StarTypeParameter
-starTypeParameterWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.StarTypeParameter"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          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.python.syntax.StarTypeParameter"),
-              Core.projectionFieldName = (Core.Name "default")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.python.syntax.StarredExpression wrapper
-starredExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.StarredExpression
-starredExpression x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.StarredExpression"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.StarredExpression
-starredExpressionStarredExpression :: Typed.TypedName Syntax.StarredExpression
-starredExpressionStarredExpression = Typed.TypedName (Core.Name "hydra.python.syntax.StarredExpression")
-
--- | DSL injection for the annotated variant of hydra.python.syntax.Statement
-statementAnnotated :: Typed.TypedTerm Syntax.AnnotatedStatement -> Typed.TypedTerm Syntax.Statement
-statementAnnotated x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Statement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "annotated"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the compound variant of hydra.python.syntax.Statement
-statementCompound :: Typed.TypedTerm Syntax.CompoundStatement -> Typed.TypedTerm Syntax.Statement
-statementCompound x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Statement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "compound"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the simple variant of hydra.python.syntax.Statement
-statementSimple :: Typed.TypedTerm [Syntax.SimpleStatement] -> Typed.TypedTerm Syntax.Statement
-statementSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.Statement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.Statement
-statementStatement :: Typed.TypedName Syntax.Statement
-statementStatement = Typed.TypedName (Core.Name "hydra.python.syntax.Statement")
-
--- | DSL constructor for hydra.python.syntax.String
-string :: Typed.TypedTerm String -> Typed.TypedTerm (Maybe Syntax.StringPrefix) -> Typed.TypedTerm Syntax.QuoteStyle -> Typed.TypedTerm Syntax.String_
-string value prefix quoteStyle =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.String"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm value)},
-        Core.Field {
-          Core.fieldName = (Core.Name "prefix"),
-          Core.fieldTerm = (Typed.unTypedTerm prefix)},
-        Core.Field {
-          Core.fieldName = (Core.Name "quoteStyle"),
-          Core.fieldTerm = (Typed.unTypedTerm quoteStyle)}]}))
-
--- | DSL accessor for the prefix field of hydra.python.syntax.String
-stringPrefix :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm (Maybe Syntax.StringPrefix)
-stringPrefix x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.String"),
-        Core.projectionFieldName = (Core.Name "prefix")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL injection for the bytes variant of hydra.python.syntax.StringPrefix
-stringPrefixBytes :: Typed.TypedTerm Syntax.StringPrefix
-stringPrefixBytes =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StringPrefix"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "bytes"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the raw variant of hydra.python.syntax.StringPrefix
-stringPrefixRaw :: Typed.TypedTerm Syntax.StringPrefix
-stringPrefixRaw =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StringPrefix"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "raw"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the rawBytes variant of hydra.python.syntax.StringPrefix
-stringPrefixRawBytes :: Typed.TypedTerm Syntax.StringPrefix
-stringPrefixRawBytes =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StringPrefix"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "rawBytes"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.python.syntax.StringPrefix
-stringPrefixStringPrefix :: Typed.TypedName Syntax.StringPrefix
-stringPrefixStringPrefix = Typed.TypedName (Core.Name "hydra.python.syntax.StringPrefix")
-
--- | DSL injection for the unicode variant of hydra.python.syntax.StringPrefix
-stringPrefixUnicode :: Typed.TypedTerm Syntax.StringPrefix
-stringPrefixUnicode =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.StringPrefix"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "unicode"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL accessor for the quoteStyle field of hydra.python.syntax.String
-stringQuoteStyle :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm Syntax.QuoteStyle
-stringQuoteStyle x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.String"),
-        Core.projectionFieldName = (Core.Name "quoteStyle")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.String
-stringString :: Typed.TypedName Syntax.String_
-stringString = Typed.TypedName (Core.Name "hydra.python.syntax.String")
-
--- | DSL accessor for the value field of hydra.python.syntax.String
-stringValue :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm String
-stringValue x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.String"),
-        Core.projectionFieldName = (Core.Name "value")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the prefix field of hydra.python.syntax.String
-stringWithPrefix :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm (Maybe Syntax.StringPrefix) -> Typed.TypedTerm Syntax.String_
-stringWithPrefix original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.String"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.String"),
-              Core.projectionFieldName = (Core.Name "value")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "prefix"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "quoteStyle"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.String"),
-              Core.projectionFieldName = (Core.Name "quoteStyle")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the quoteStyle field of hydra.python.syntax.String
-stringWithQuoteStyle :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm Syntax.QuoteStyle -> Typed.TypedTerm Syntax.String_
-stringWithQuoteStyle original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.String"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.String"),
-              Core.projectionFieldName = (Core.Name "value")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "prefix"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.String"),
-              Core.projectionFieldName = (Core.Name "prefix")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "quoteStyle"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the value field of hydra.python.syntax.String
-stringWithValue :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.String_
-stringWithValue original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.String"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "value"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "prefix"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.String"),
-              Core.projectionFieldName = (Core.Name "prefix")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "quoteStyle"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.String"),
-              Core.projectionFieldName = (Core.Name "quoteStyle")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the simple variant of hydra.python.syntax.SubjectExpression
-subjectExpressionSimple :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.SubjectExpression
-subjectExpressionSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SubjectExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.SubjectExpression
-subjectExpressionSubjectExpression :: Typed.TypedName Syntax.SubjectExpression
-subjectExpressionSubjectExpression = Typed.TypedName (Core.Name "hydra.python.syntax.SubjectExpression")
-
--- | DSL injection for the tuple variant of hydra.python.syntax.SubjectExpression
-subjectExpressionTuple :: Typed.TypedTerm [Syntax.StarNamedExpression] -> Typed.TypedTerm Syntax.SubjectExpression
-subjectExpressionTuple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SubjectExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "tuple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.python.syntax.Sum
-sum :: Typed.TypedTerm (Maybe Syntax.SumLhs) -> Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.Sum
-sum lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Sum"),
-      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.python.syntax.Sum
-sumLhs :: Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm (Maybe Syntax.SumLhs)
-sumLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Sum"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.python.syntax.SumLhs
-sumLhs2 :: Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.SumOp -> Typed.TypedTerm Syntax.SumLhs
-sumLhs2 operand operator =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SumLhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operand"),
-          Core.fieldTerm = (Typed.unTypedTerm operand)},
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          Core.fieldTerm = (Typed.unTypedTerm operator)}]}))
-
--- | DSL accessor for the operand field of hydra.python.syntax.SumLhs
-sumLhsOperand :: Typed.TypedTerm Syntax.SumLhs -> Typed.TypedTerm Syntax.Sum
-sumLhsOperand x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SumLhs"),
-        Core.projectionFieldName = (Core.Name "operand")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the operator field of hydra.python.syntax.SumLhs
-sumLhsOperator :: Typed.TypedTerm Syntax.SumLhs -> Typed.TypedTerm Syntax.SumOp
-sumLhsOperator x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.SumLhs"),
-        Core.projectionFieldName = (Core.Name "operator")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.SumLhs
-sumLhsSumLhs :: Typed.TypedName Syntax.SumLhs
-sumLhsSumLhs = Typed.TypedName (Core.Name "hydra.python.syntax.SumLhs")
-
--- | DSL updater for the operand field of hydra.python.syntax.SumLhs
-sumLhsWithOperand :: Typed.TypedTerm Syntax.SumLhs -> Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.SumLhs
-sumLhsWithOperand original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SumLhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operand"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SumLhs"),
-              Core.projectionFieldName = (Core.Name "operator")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the operator field of hydra.python.syntax.SumLhs
-sumLhsWithOperator :: Typed.TypedTerm Syntax.SumLhs -> Typed.TypedTerm Syntax.SumOp -> Typed.TypedTerm Syntax.SumLhs
-sumLhsWithOperator original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.SumLhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operand"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.SumLhs"),
-              Core.projectionFieldName = (Core.Name "operand")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the add variant of hydra.python.syntax.SumOp
-sumOpAdd :: Typed.TypedTerm Syntax.SumOp
-sumOpAdd =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SumOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "add"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the sub variant of hydra.python.syntax.SumOp
-sumOpSub :: Typed.TypedTerm Syntax.SumOp
-sumOpSub =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.SumOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "sub"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.python.syntax.SumOp
-sumOpSumOp :: Typed.TypedName Syntax.SumOp
-sumOpSumOp = Typed.TypedName (Core.Name "hydra.python.syntax.SumOp")
-
--- | DSL accessor for the rhs field of hydra.python.syntax.Sum
-sumRhs :: Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.Term
-sumRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Sum"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Sum
-sumSum :: Typed.TypedName Syntax.Sum
-sumSum = Typed.TypedName (Core.Name "hydra.python.syntax.Sum")
-
--- | DSL updater for the lhs field of hydra.python.syntax.Sum
-sumWithLhs :: Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm (Maybe Syntax.SumLhs) -> Typed.TypedTerm Syntax.Sum
-sumWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Sum"),
-      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.python.syntax.Sum"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.Sum
-sumWithRhs :: Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.Sum
-sumWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Sum"),
-      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.python.syntax.Sum"),
-              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.python.syntax.TPrimaryAndArguments
-tPrimaryAndArguments :: Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm (Maybe Syntax.Args) -> Typed.TypedTerm Syntax.TPrimaryAndArguments
-tPrimaryAndArguments primary arguments =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndArguments"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Typed.unTypedTerm primary)},
-        Core.Field {
-          Core.fieldName = (Core.Name "arguments"),
-          Core.fieldTerm = (Typed.unTypedTerm arguments)}]}))
-
--- | DSL accessor for the arguments field of hydra.python.syntax.TPrimaryAndArguments
-tPrimaryAndArgumentsArguments :: Typed.TypedTerm Syntax.TPrimaryAndArguments -> Typed.TypedTerm (Maybe Syntax.Args)
-tPrimaryAndArgumentsArguments x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndArguments"),
-        Core.projectionFieldName = (Core.Name "arguments")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the primary field of hydra.python.syntax.TPrimaryAndArguments
-tPrimaryAndArgumentsPrimary :: Typed.TypedTerm Syntax.TPrimaryAndArguments -> Typed.TypedTerm Syntax.TPrimary
-tPrimaryAndArgumentsPrimary x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndArguments"),
-        Core.projectionFieldName = (Core.Name "primary")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.TPrimaryAndArguments
-tPrimaryAndArgumentsTPrimaryAndArguments :: Typed.TypedName Syntax.TPrimaryAndArguments
-tPrimaryAndArgumentsTPrimaryAndArguments = Typed.TypedName (Core.Name "hydra.python.syntax.TPrimaryAndArguments")
-
--- | DSL updater for the arguments field of hydra.python.syntax.TPrimaryAndArguments
-tPrimaryAndArgumentsWithArguments :: Typed.TypedTerm Syntax.TPrimaryAndArguments -> Typed.TypedTerm (Maybe Syntax.Args) -> Typed.TypedTerm Syntax.TPrimaryAndArguments
-tPrimaryAndArgumentsWithArguments original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndArguments"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndArguments"),
-              Core.projectionFieldName = (Core.Name "primary")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "arguments"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the primary field of hydra.python.syntax.TPrimaryAndArguments
-tPrimaryAndArgumentsWithPrimary :: Typed.TypedTerm Syntax.TPrimaryAndArguments -> Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.TPrimaryAndArguments
-tPrimaryAndArgumentsWithPrimary original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndArguments"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "arguments"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndArguments"),
-              Core.projectionFieldName = (Core.Name "arguments")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.TPrimaryAndGenexp
-tPrimaryAndGenexp :: Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.TPrimaryAndGenexp
-tPrimaryAndGenexp primary genexp =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndGenexp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Typed.unTypedTerm primary)},
-        Core.Field {
-          Core.fieldName = (Core.Name "genexp"),
-          Core.fieldTerm = (Typed.unTypedTerm genexp)}]}))
-
--- | DSL accessor for the genexp field of hydra.python.syntax.TPrimaryAndGenexp
-tPrimaryAndGenexpGenexp :: Typed.TypedTerm Syntax.TPrimaryAndGenexp -> Typed.TypedTerm Syntax.Genexp
-tPrimaryAndGenexpGenexp x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndGenexp"),
-        Core.projectionFieldName = (Core.Name "genexp")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the primary field of hydra.python.syntax.TPrimaryAndGenexp
-tPrimaryAndGenexpPrimary :: Typed.TypedTerm Syntax.TPrimaryAndGenexp -> Typed.TypedTerm Syntax.TPrimary
-tPrimaryAndGenexpPrimary x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndGenexp"),
-        Core.projectionFieldName = (Core.Name "primary")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.TPrimaryAndGenexp
-tPrimaryAndGenexpTPrimaryAndGenexp :: Typed.TypedName Syntax.TPrimaryAndGenexp
-tPrimaryAndGenexpTPrimaryAndGenexp = Typed.TypedName (Core.Name "hydra.python.syntax.TPrimaryAndGenexp")
-
--- | DSL updater for the genexp field of hydra.python.syntax.TPrimaryAndGenexp
-tPrimaryAndGenexpWithGenexp :: Typed.TypedTerm Syntax.TPrimaryAndGenexp -> Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.TPrimaryAndGenexp
-tPrimaryAndGenexpWithGenexp original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndGenexp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndGenexp"),
-              Core.projectionFieldName = (Core.Name "primary")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "genexp"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the primary field of hydra.python.syntax.TPrimaryAndGenexp
-tPrimaryAndGenexpWithPrimary :: Typed.TypedTerm Syntax.TPrimaryAndGenexp -> Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.TPrimaryAndGenexp
-tPrimaryAndGenexpWithPrimary original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndGenexp"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "genexp"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndGenexp"),
-              Core.projectionFieldName = (Core.Name "genexp")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.TPrimaryAndName
-tPrimaryAndName :: Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TPrimaryAndName
-tPrimaryAndName primary name =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndName"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Typed.unTypedTerm primary)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))
-
--- | DSL accessor for the name field of hydra.python.syntax.TPrimaryAndName
-tPrimaryAndNameName :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.Name
-tPrimaryAndNameName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndName"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the primary field of hydra.python.syntax.TPrimaryAndName
-tPrimaryAndNamePrimary :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.TPrimary
-tPrimaryAndNamePrimary x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndName"),
-        Core.projectionFieldName = (Core.Name "primary")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.TPrimaryAndName
-tPrimaryAndNameTPrimaryAndName :: Typed.TypedName Syntax.TPrimaryAndName
-tPrimaryAndNameTPrimaryAndName = Typed.TypedName (Core.Name "hydra.python.syntax.TPrimaryAndName")
-
--- | DSL updater for the name field of hydra.python.syntax.TPrimaryAndName
-tPrimaryAndNameWithName :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TPrimaryAndName
-tPrimaryAndNameWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndName"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndName"),
-              Core.projectionFieldName = (Core.Name "primary")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the primary field of hydra.python.syntax.TPrimaryAndName
-tPrimaryAndNameWithPrimary :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.TPrimaryAndName
-tPrimaryAndNameWithPrimary original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndName"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          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.python.syntax.TPrimaryAndName"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.python.syntax.TPrimaryAndSlices
-tPrimaryAndSlices :: Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm Syntax.TPrimaryAndSlices
-tPrimaryAndSlices primary slices =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndSlices"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Typed.unTypedTerm primary)},
-        Core.Field {
-          Core.fieldName = (Core.Name "slices"),
-          Core.fieldTerm = (Typed.unTypedTerm slices)}]}))
-
--- | DSL accessor for the primary field of hydra.python.syntax.TPrimaryAndSlices
-tPrimaryAndSlicesPrimary :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.TPrimary
-tPrimaryAndSlicesPrimary x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndSlices"),
-        Core.projectionFieldName = (Core.Name "primary")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the slices field of hydra.python.syntax.TPrimaryAndSlices
-tPrimaryAndSlicesSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.Slices
-tPrimaryAndSlicesSlices x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndSlices"),
-        Core.projectionFieldName = (Core.Name "slices")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.TPrimaryAndSlices
-tPrimaryAndSlicesTPrimaryAndSlices :: Typed.TypedName Syntax.TPrimaryAndSlices
-tPrimaryAndSlicesTPrimaryAndSlices = Typed.TypedName (Core.Name "hydra.python.syntax.TPrimaryAndSlices")
-
--- | DSL updater for the primary field of hydra.python.syntax.TPrimaryAndSlices
-tPrimaryAndSlicesWithPrimary :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.TPrimaryAndSlices
-tPrimaryAndSlicesWithPrimary original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndSlices"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "slices"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndSlices"),
-              Core.projectionFieldName = (Core.Name "slices")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the slices field of hydra.python.syntax.TPrimaryAndSlices
-tPrimaryAndSlicesWithSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm Syntax.TPrimaryAndSlices
-tPrimaryAndSlicesWithSlices original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndSlices"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "primary"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TPrimaryAndSlices"),
-              Core.projectionFieldName = (Core.Name "primary")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "slices"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the atom variant of hydra.python.syntax.TPrimary
-tPrimaryAtom :: Typed.TypedTerm Syntax.Atom -> Typed.TypedTerm Syntax.TPrimary
-tPrimaryAtom x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TPrimary"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "atom"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the primaryAndArguments variant of hydra.python.syntax.TPrimary
-tPrimaryPrimaryAndArguments :: Typed.TypedTerm Syntax.TPrimaryAndArguments -> Typed.TypedTerm Syntax.TPrimary
-tPrimaryPrimaryAndArguments x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TPrimary"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "primaryAndArguments"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the primaryAndGenexp variant of hydra.python.syntax.TPrimary
-tPrimaryPrimaryAndGenexp :: Typed.TypedTerm Syntax.TPrimaryAndGenexp -> Typed.TypedTerm Syntax.TPrimary
-tPrimaryPrimaryAndGenexp x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TPrimary"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "primaryAndGenexp"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the primaryAndName variant of hydra.python.syntax.TPrimary
-tPrimaryPrimaryAndName :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.TPrimary
-tPrimaryPrimaryAndName x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TPrimary"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "primaryAndName"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the primaryAndSlices variant of hydra.python.syntax.TPrimary
-tPrimaryPrimaryAndSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.TPrimary
-tPrimaryPrimaryAndSlices x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TPrimary"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "primaryAndSlices"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.TPrimary
-tPrimaryTPrimary :: Typed.TypedName Syntax.TPrimary
-tPrimaryTPrimary = Typed.TypedName (Core.Name "hydra.python.syntax.TPrimary")
-
--- | DSL injection for the atom variant of hydra.python.syntax.TargetWithStarAtom
-targetWithStarAtomAtom :: Typed.TypedTerm Syntax.StarAtom -> Typed.TypedTerm Syntax.TargetWithStarAtom
-targetWithStarAtomAtom x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TargetWithStarAtom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "atom"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the project variant of hydra.python.syntax.TargetWithStarAtom
-targetWithStarAtomProject :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.TargetWithStarAtom
-targetWithStarAtomProject x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TargetWithStarAtom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "project"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the slices variant of hydra.python.syntax.TargetWithStarAtom
-targetWithStarAtomSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.TargetWithStarAtom
-targetWithStarAtomSlices x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TargetWithStarAtom"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "slices"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.TargetWithStarAtom
-targetWithStarAtomTargetWithStarAtom :: Typed.TypedName Syntax.TargetWithStarAtom
-targetWithStarAtomTargetWithStarAtom = Typed.TypedName (Core.Name "hydra.python.syntax.TargetWithStarAtom")
-
--- | DSL constructor for hydra.python.syntax.Term
-term :: Typed.TypedTerm (Maybe Syntax.TermLhs) -> Typed.TypedTerm Syntax.Factor -> Typed.TypedTerm Syntax.Term
-term lhs rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Term"),
-      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.python.syntax.Term
-termLhs :: Typed.TypedTerm Syntax.Term -> Typed.TypedTerm (Maybe Syntax.TermLhs)
-termLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Term"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.python.syntax.TermLhs
-termLhs2 :: Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.TermOp -> Typed.TypedTerm Syntax.TermLhs
-termLhs2 operand operator =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TermLhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operand"),
-          Core.fieldTerm = (Typed.unTypedTerm operand)},
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          Core.fieldTerm = (Typed.unTypedTerm operator)}]}))
-
--- | DSL accessor for the operand field of hydra.python.syntax.TermLhs
-termLhsOperand :: Typed.TypedTerm Syntax.TermLhs -> Typed.TypedTerm Syntax.Term
-termLhsOperand x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TermLhs"),
-        Core.projectionFieldName = (Core.Name "operand")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the operator field of hydra.python.syntax.TermLhs
-termLhsOperator :: Typed.TypedTerm Syntax.TermLhs -> Typed.TypedTerm Syntax.TermOp
-termLhsOperator x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TermLhs"),
-        Core.projectionFieldName = (Core.Name "operator")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.TermLhs
-termLhsTermLhs :: Typed.TypedName Syntax.TermLhs
-termLhsTermLhs = Typed.TypedName (Core.Name "hydra.python.syntax.TermLhs")
-
--- | DSL updater for the operand field of hydra.python.syntax.TermLhs
-termLhsWithOperand :: Typed.TypedTerm Syntax.TermLhs -> Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.TermLhs
-termLhsWithOperand original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TermLhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operand"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TermLhs"),
-              Core.projectionFieldName = (Core.Name "operator")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the operator field of hydra.python.syntax.TermLhs
-termLhsWithOperator :: Typed.TypedTerm Syntax.TermLhs -> Typed.TypedTerm Syntax.TermOp -> Typed.TypedTerm Syntax.TermLhs
-termLhsWithOperator original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TermLhs"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "operand"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TermLhs"),
-              Core.projectionFieldName = (Core.Name "operand")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "operator"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the div variant of hydra.python.syntax.TermOp
-termOpDiv :: Typed.TypedTerm Syntax.TermOp
-termOpDiv =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TermOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "div"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the floordiv variant of hydra.python.syntax.TermOp
-termOpFloordiv :: Typed.TypedTerm Syntax.TermOp
-termOpFloordiv =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TermOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "floordiv"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the matmul variant of hydra.python.syntax.TermOp
-termOpMatmul :: Typed.TypedTerm Syntax.TermOp
-termOpMatmul =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TermOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "matmul"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the mod variant of hydra.python.syntax.TermOp
-termOpMod :: Typed.TypedTerm Syntax.TermOp
-termOpMod =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TermOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "mod"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the mul variant of hydra.python.syntax.TermOp
-termOpMul :: Typed.TypedTerm Syntax.TermOp
-termOpMul =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TermOp"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "mul"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.python.syntax.TermOp
-termOpTermOp :: Typed.TypedName Syntax.TermOp
-termOpTermOp = Typed.TypedName (Core.Name "hydra.python.syntax.TermOp")
-
--- | DSL accessor for the rhs field of hydra.python.syntax.Term
-termRhs :: Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.Factor
-termRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.Term"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Term
-termTerm :: Typed.TypedName Syntax.Term
-termTerm = Typed.TypedName (Core.Name "hydra.python.syntax.Term")
-
--- | DSL updater for the lhs field of hydra.python.syntax.Term
-termWithLhs :: Typed.TypedTerm Syntax.Term -> Typed.TypedTerm (Maybe Syntax.TermLhs) -> Typed.TypedTerm Syntax.Term
-termWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Term"),
-      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.python.syntax.Term"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.Term
-termWithRhs :: Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.Factor -> Typed.TypedTerm Syntax.Term
-termWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.Term"),
-      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.python.syntax.Term"),
-              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.python.syntax.TryExceptStarStatement
-tryExceptStarStatement :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm [Syntax.ExceptStarBlock] -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStarStatement
-tryExceptStarStatement body excepts else_ finally =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)},
-        Core.Field {
-          Core.fieldName = (Core.Name "excepts"),
-          Core.fieldTerm = (Typed.unTypedTerm excepts)},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Typed.unTypedTerm else_)},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Typed.unTypedTerm finally)}]}))
-
--- | DSL accessor for the body field of hydra.python.syntax.TryExceptStarStatement
-tryExceptStarStatementBody :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm Syntax.Block
-tryExceptStarStatementBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the else field of hydra.python.syntax.TryExceptStarStatement
-tryExceptStarStatementElse :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm (Maybe Syntax.Block)
-tryExceptStarStatementElse x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-        Core.projectionFieldName = (Core.Name "else")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the excepts field of hydra.python.syntax.TryExceptStarStatement
-tryExceptStarStatementExcepts :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm [Syntax.ExceptStarBlock]
-tryExceptStarStatementExcepts x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-        Core.projectionFieldName = (Core.Name "excepts")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the finally field of hydra.python.syntax.TryExceptStarStatement
-tryExceptStarStatementFinally :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm (Maybe Syntax.Block)
-tryExceptStarStatementFinally x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-        Core.projectionFieldName = (Core.Name "finally")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.TryExceptStarStatement
-tryExceptStarStatementTryExceptStarStatement :: Typed.TypedName Syntax.TryExceptStarStatement
-tryExceptStarStatementTryExceptStarStatement = Typed.TypedName (Core.Name "hydra.python.syntax.TryExceptStarStatement")
-
--- | DSL updater for the body field of hydra.python.syntax.TryExceptStarStatement
-tryExceptStarStatementWithBody :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryExceptStarStatement
-tryExceptStarStatementWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "excepts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "excepts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "finally")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the else field of hydra.python.syntax.TryExceptStarStatement
-tryExceptStarStatementWithElse :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStarStatement
-tryExceptStarStatementWithElse original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-      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.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "excepts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "excepts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "finally")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the excepts field of hydra.python.syntax.TryExceptStarStatement
-tryExceptStarStatementWithExcepts :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm [Syntax.ExceptStarBlock] -> Typed.TypedTerm Syntax.TryExceptStarStatement
-tryExceptStarStatementWithExcepts original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-      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.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "excepts"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "finally")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the finally field of hydra.python.syntax.TryExceptStarStatement
-tryExceptStarStatementWithFinally :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStarStatement
-tryExceptStarStatementWithFinally original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-      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.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "excepts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "excepts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStarStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.TryExceptStatement
-tryExceptStatement :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm [Syntax.ExceptBlock] -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStatement
-tryExceptStatement body excepts else_ finally =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)},
-        Core.Field {
-          Core.fieldName = (Core.Name "excepts"),
-          Core.fieldTerm = (Typed.unTypedTerm excepts)},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Typed.unTypedTerm else_)},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Typed.unTypedTerm finally)}]}))
-
--- | DSL accessor for the body field of hydra.python.syntax.TryExceptStatement
-tryExceptStatementBody :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm Syntax.Block
-tryExceptStatementBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the else field of hydra.python.syntax.TryExceptStatement
-tryExceptStatementElse :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm (Maybe Syntax.Block)
-tryExceptStatementElse x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-        Core.projectionFieldName = (Core.Name "else")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the excepts field of hydra.python.syntax.TryExceptStatement
-tryExceptStatementExcepts :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm [Syntax.ExceptBlock]
-tryExceptStatementExcepts x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-        Core.projectionFieldName = (Core.Name "excepts")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the finally field of hydra.python.syntax.TryExceptStatement
-tryExceptStatementFinally :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm (Maybe Syntax.Block)
-tryExceptStatementFinally x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-        Core.projectionFieldName = (Core.Name "finally")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.TryExceptStatement
-tryExceptStatementTryExceptStatement :: Typed.TypedName Syntax.TryExceptStatement
-tryExceptStatementTryExceptStatement = Typed.TypedName (Core.Name "hydra.python.syntax.TryExceptStatement")
-
--- | DSL updater for the body field of hydra.python.syntax.TryExceptStatement
-tryExceptStatementWithBody :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryExceptStatement
-tryExceptStatementWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "excepts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "excepts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "finally")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the else field of hydra.python.syntax.TryExceptStatement
-tryExceptStatementWithElse :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStatement
-tryExceptStatementWithElse original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-      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.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "excepts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "excepts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "finally")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the excepts field of hydra.python.syntax.TryExceptStatement
-tryExceptStatementWithExcepts :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm [Syntax.ExceptBlock] -> Typed.TypedTerm Syntax.TryExceptStatement
-tryExceptStatementWithExcepts original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-      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.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "excepts"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "finally")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the finally field of hydra.python.syntax.TryExceptStatement
-tryExceptStatementWithFinally :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStatement
-tryExceptStatementWithFinally original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-      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.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "excepts"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "excepts")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryExceptStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.TryFinallyStatement
-tryFinallyStatement :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryFinallyStatement
-tryFinallyStatement body finally =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryFinallyStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Typed.unTypedTerm finally)}]}))
-
--- | DSL accessor for the body field of hydra.python.syntax.TryFinallyStatement
-tryFinallyStatementBody :: Typed.TypedTerm Syntax.TryFinallyStatement -> Typed.TypedTerm Syntax.Block
-tryFinallyStatementBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryFinallyStatement"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the finally field of hydra.python.syntax.TryFinallyStatement
-tryFinallyStatementFinally :: Typed.TypedTerm Syntax.TryFinallyStatement -> Typed.TypedTerm Syntax.Block
-tryFinallyStatementFinally x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryFinallyStatement"),
-        Core.projectionFieldName = (Core.Name "finally")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.TryFinallyStatement
-tryFinallyStatementTryFinallyStatement :: Typed.TypedName Syntax.TryFinallyStatement
-tryFinallyStatementTryFinallyStatement = Typed.TypedName (Core.Name "hydra.python.syntax.TryFinallyStatement")
-
--- | DSL updater for the body field of hydra.python.syntax.TryFinallyStatement
-tryFinallyStatementWithBody :: Typed.TypedTerm Syntax.TryFinallyStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryFinallyStatement
-tryFinallyStatementWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryFinallyStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TryFinallyStatement"),
-              Core.projectionFieldName = (Core.Name "finally")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the finally field of hydra.python.syntax.TryFinallyStatement
-tryFinallyStatementWithFinally :: Typed.TypedTerm Syntax.TryFinallyStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryFinallyStatement
-tryFinallyStatementWithFinally original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TryFinallyStatement"),
-      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.python.syntax.TryFinallyStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "finally"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the except variant of hydra.python.syntax.TryStatement
-tryStatementExcept :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm Syntax.TryStatement
-tryStatementExcept x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TryStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "except"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the exceptStar variant of hydra.python.syntax.TryStatement
-tryStatementExceptStar :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm Syntax.TryStatement
-tryStatementExceptStar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TryStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "exceptStar"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the finally variant of hydra.python.syntax.TryStatement
-tryStatementFinally :: Typed.TypedTerm Syntax.TryFinallyStatement -> Typed.TypedTerm Syntax.TryStatement
-tryStatementFinally x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TryStatement"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "finally"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.TryStatement
-tryStatementTryStatement :: Typed.TypedName Syntax.TryStatement
-tryStatementTryStatement = Typed.TypedName (Core.Name "hydra.python.syntax.TryStatement")
-
--- | DSL constructor for the hydra.python.syntax.Tuple wrapper
-tuple :: Typed.TypedTerm [Syntax.StarNamedExpression] -> Typed.TypedTerm Syntax.Tuple
-tuple x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.Tuple"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.Tuple
-tupleTuple :: Typed.TypedName Syntax.Tuple
-tupleTuple = Typed.TypedName (Core.Name "hydra.python.syntax.Tuple")
-
--- | DSL constructor for hydra.python.syntax.TypeAlias
-typeAlias :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeAlias
-typeAlias name typeParams expression =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TypeAlias"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Typed.unTypedTerm typeParams)},
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm expression)}]}))
-
--- | DSL accessor for the expression field of hydra.python.syntax.TypeAlias
-typeAliasExpression :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm Syntax.Expression
-typeAliasExpression x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypeAlias"),
-        Core.projectionFieldName = (Core.Name "expression")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.python.syntax.TypeAlias
-typeAliasName :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm Syntax.Name
-typeAliasName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypeAlias"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.TypeAlias
-typeAliasTypeAlias :: Typed.TypedName Syntax.TypeAlias
-typeAliasTypeAlias = Typed.TypedName (Core.Name "hydra.python.syntax.TypeAlias")
-
--- | DSL accessor for the typeParams field of hydra.python.syntax.TypeAlias
-typeAliasTypeParams :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm [Syntax.TypeParameter]
-typeAliasTypeParams x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypeAlias"),
-        Core.projectionFieldName = (Core.Name "typeParams")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the expression field of hydra.python.syntax.TypeAlias
-typeAliasWithExpression :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeAlias
-typeAliasWithExpression original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TypeAlias"),
-      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.python.syntax.TypeAlias"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypeAlias"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the name field of hydra.python.syntax.TypeAlias
-typeAliasWithName :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TypeAlias
-typeAliasWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TypeAlias"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypeAlias"),
-              Core.projectionFieldName = (Core.Name "typeParams")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypeAlias"),
-              Core.projectionFieldName = (Core.Name "expression")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the typeParams field of hydra.python.syntax.TypeAlias
-typeAliasWithTypeParams :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.TypeAlias
-typeAliasWithTypeParams original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TypeAlias"),
-      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.python.syntax.TypeAlias"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeParams"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypeAlias"),
-              Core.projectionFieldName = (Core.Name "expression")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.python.syntax.TypeComment wrapper
-typeComment :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.TypeComment
-typeComment x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.TypeComment"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.TypeComment
-typeCommentTypeComment :: Typed.TypedName Syntax.TypeComment
-typeCommentTypeComment = Typed.TypedName (Core.Name "hydra.python.syntax.TypeComment")
-
--- | DSL injection for the doubleStarredExpression variant of hydra.python.syntax.TypeExpression
-typeExpressionDoubleStarredExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeExpression
-typeExpressionDoubleStarredExpression x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TypeExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "doubleStarredExpression"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the expression variant of hydra.python.syntax.TypeExpression
-typeExpressionExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeExpression
-typeExpressionExpression x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TypeExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "expression"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the starredExpression variant of hydra.python.syntax.TypeExpression
-typeExpressionStarredExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeExpression
-typeExpressionStarredExpression x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TypeExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "starredExpression"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.TypeExpression
-typeExpressionTypeExpression :: Typed.TypedName Syntax.TypeExpression
-typeExpressionTypeExpression = Typed.TypedName (Core.Name "hydra.python.syntax.TypeExpression")
-
--- | DSL injection for the doubleStar variant of hydra.python.syntax.TypeParameter
-typeParameterDoubleStar :: Typed.TypedTerm Syntax.DoubleStarTypeParameter -> Typed.TypedTerm Syntax.TypeParameter
-typeParameterDoubleStar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TypeParameter"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "doubleStar"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the simple variant of hydra.python.syntax.TypeParameter
-typeParameterSimple :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm Syntax.TypeParameter
-typeParameterSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TypeParameter"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the star variant of hydra.python.syntax.TypeParameter
-typeParameterStar :: Typed.TypedTerm Syntax.StarTypeParameter -> Typed.TypedTerm Syntax.TypeParameter
-typeParameterStar x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.TypeParameter"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "star"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.TypeParameter
-typeParameterTypeParameter :: Typed.TypedName Syntax.TypeParameter
-typeParameterTypeParameter = Typed.TypedName (Core.Name "hydra.python.syntax.TypeParameter")
-
--- | DSL constructor for hydra.python.syntax.TypedAssignment
-typedAssignment :: Typed.TypedTerm Syntax.SingleTarget -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.AnnotatedRhs) -> Typed.TypedTerm Syntax.TypedAssignment
-typedAssignment lhs type_ rhs =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TypedAssignment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm lhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "type"),
-          Core.fieldTerm = (Typed.unTypedTerm type_)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))
-
--- | DSL accessor for the lhs field of hydra.python.syntax.TypedAssignment
-typedAssignmentLhs :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm Syntax.SingleTarget
-typedAssignmentLhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypedAssignment"),
-        Core.projectionFieldName = (Core.Name "lhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the rhs field of hydra.python.syntax.TypedAssignment
-typedAssignmentRhs :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm (Maybe Syntax.AnnotatedRhs)
-typedAssignmentRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypedAssignment"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the type field of hydra.python.syntax.TypedAssignment
-typedAssignmentType :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm Syntax.Expression
-typedAssignmentType x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypedAssignment"),
-        Core.projectionFieldName = (Core.Name "type")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.TypedAssignment
-typedAssignmentTypedAssignment :: Typed.TypedName Syntax.TypedAssignment
-typedAssignmentTypedAssignment = Typed.TypedName (Core.Name "hydra.python.syntax.TypedAssignment")
-
--- | DSL updater for the lhs field of hydra.python.syntax.TypedAssignment
-typedAssignmentWithLhs :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm Syntax.SingleTarget -> Typed.TypedTerm Syntax.TypedAssignment
-typedAssignmentWithLhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TypedAssignment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "type"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypedAssignment"),
-              Core.projectionFieldName = (Core.Name "type")})),
-            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.python.syntax.TypedAssignment"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the rhs field of hydra.python.syntax.TypedAssignment
-typedAssignmentWithRhs :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm (Maybe Syntax.AnnotatedRhs) -> Typed.TypedTerm Syntax.TypedAssignment
-typedAssignmentWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TypedAssignment"),
-      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.python.syntax.TypedAssignment"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "type"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.TypedAssignment"),
-              Core.projectionFieldName = (Core.Name "type")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the type field of hydra.python.syntax.TypedAssignment
-typedAssignmentWithType :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypedAssignment
-typedAssignmentWithType original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.TypedAssignment"),
-      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.python.syntax.TypedAssignment"),
-              Core.projectionFieldName = (Core.Name "lhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "type"),
-          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.python.syntax.TypedAssignment"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL accessor for the body of hydra.python.syntax.Annotation
-unAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.Expression
-unAnnotation x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Annotation")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Attribute
-unAttribute :: Typed.TypedTerm Syntax.Attribute -> Typed.TypedTerm [Syntax.Name]
-unAttribute x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Attribute")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.CapturePattern
-unCapturePattern :: Typed.TypedTerm Syntax.CapturePattern -> Typed.TypedTerm Syntax.PatternCaptureTarget
-unCapturePattern x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.CapturePattern")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Conjunction
-unConjunction :: Typed.TypedTerm Syntax.Conjunction -> Typed.TypedTerm [Syntax.Inversion]
-unConjunction x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Conjunction")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Decorators
-unDecorators :: Typed.TypedTerm Syntax.Decorators -> Typed.TypedTerm [Syntax.NamedExpression]
-unDecorators x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Decorators")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Default
-unDefault :: Typed.TypedTerm Syntax.Default -> Typed.TypedTerm Syntax.Expression
-unDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Default")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.DelStatement
-unDelStatement :: Typed.TypedTerm Syntax.DelStatement -> Typed.TypedTerm Syntax.DelTargets
-unDelStatement x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.DelStatement")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.DelTargets
-unDelTargets :: Typed.TypedTerm Syntax.DelTargets -> Typed.TypedTerm [Syntax.DelTarget]
-unDelTargets x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.DelTargets")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Dict
-unDict :: Typed.TypedTerm Syntax.Dict -> Typed.TypedTerm [Syntax.DoubleStarredKvpair]
-unDict x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Dict")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Disjunction
-unDisjunction :: Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm [Syntax.Conjunction]
-unDisjunction x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Disjunction")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.DottedName
-unDottedName :: Typed.TypedTerm Syntax.DottedName -> Typed.TypedTerm [Syntax.Name]
-unDottedName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.DottedName")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.DoubleStarPattern
-unDoubleStarPattern :: Typed.TypedTerm Syntax.DoubleStarPattern -> Typed.TypedTerm Syntax.PatternCaptureTarget
-unDoubleStarPattern x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.DoubleStarPattern")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Eval
-unEval :: Typed.TypedTerm Syntax.Eval -> Typed.TypedTerm [Syntax.Expression]
-unEval x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Eval")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.File
-unFile :: Typed.TypedTerm Syntax.File -> Typed.TypedTerm [Syntax.Statement]
-unFile x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.File")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.ForIfClauses
-unForIfClauses :: Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm [Syntax.ForIfClause]
-unForIfClauses x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.ForIfClauses")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.FuncTypeComment
-unFuncTypeComment :: Typed.TypedTerm Syntax.FuncTypeComment -> Typed.TypedTerm Syntax.TypeComment
-unFuncTypeComment x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.FuncTypeComment")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.GroupPattern
-unGroupPattern :: Typed.TypedTerm Syntax.GroupPattern -> Typed.TypedTerm Syntax.Pattern
-unGroupPattern x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.GroupPattern")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Guard
-unGuard :: Typed.TypedTerm Syntax.Guard -> Typed.TypedTerm Syntax.NamedExpression
-unGuard x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Guard")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.ImaginaryNumber
-unImaginaryNumber :: Typed.TypedTerm Syntax.ImaginaryNumber -> Typed.TypedTerm Double
-unImaginaryNumber x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.ImaginaryNumber")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.ImportName
-unImportName :: Typed.TypedTerm Syntax.ImportName -> Typed.TypedTerm [Syntax.DottedAsName]
-unImportName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.ImportName")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Interactive
-unInteractive :: Typed.TypedTerm Syntax.Interactive -> Typed.TypedTerm Syntax.Statement
-unInteractive x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Interactive")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.ItemsPattern
-unItemsPattern :: Typed.TypedTerm Syntax.ItemsPattern -> Typed.TypedTerm [Syntax.KeyValuePattern]
-unItemsPattern x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.ItemsPattern")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.KeywordPatterns
-unKeywordPatterns :: Typed.TypedTerm Syntax.KeywordPatterns -> Typed.TypedTerm [Syntax.KeywordPattern]
-unKeywordPatterns x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.KeywordPatterns")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Keywords
-unKeywords :: Typed.TypedTerm Syntax.Keywords -> Typed.TypedTerm Syntax.ParamNoDefault
-unKeywords x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Keywords")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.LambdaKwds
-unLambdaKwds :: Typed.TypedTerm Syntax.LambdaKwds -> Typed.TypedTerm Syntax.LambdaParamNoDefault
-unLambdaKwds x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.LambdaKwds")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.LambdaParamNoDefault
-unLambdaParamNoDefault :: Typed.TypedTerm Syntax.LambdaParamNoDefault -> Typed.TypedTerm Syntax.Name
-unLambdaParamNoDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.LambdaParamNoDefault")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.List
-unList :: Typed.TypedTerm Syntax.List -> Typed.TypedTerm [Syntax.StarNamedExpression]
-unList x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.List")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.MaybeSequencePattern
-unMaybeSequencePattern :: Typed.TypedTerm Syntax.MaybeSequencePattern -> Typed.TypedTerm [Syntax.MaybeStarPattern]
-unMaybeSequencePattern x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.MaybeSequencePattern")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Module
-unModule :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm [[Syntax.Statement]]
-unModule x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Module")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Name
-unName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm String
-unName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Name")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.NameOrAttribute
-unNameOrAttribute :: Typed.TypedTerm Syntax.NameOrAttribute -> Typed.TypedTerm [Syntax.Name]
-unNameOrAttribute x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.NameOrAttribute")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.OrPattern
-unOrPattern :: Typed.TypedTerm Syntax.OrPattern -> Typed.TypedTerm [Syntax.ClosedPattern]
-unOrPattern x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.OrPattern")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.PatternCaptureTarget
-unPatternCaptureTarget :: Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.Name
-unPatternCaptureTarget x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.PatternCaptureTarget")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.PositionalPatterns
-unPositionalPatterns :: Typed.TypedTerm Syntax.PositionalPatterns -> Typed.TypedTerm [Syntax.Pattern]
-unPositionalPatterns x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.PositionalPatterns")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.RaiseStatement
-unRaiseStatement :: Typed.TypedTerm Syntax.RaiseStatement -> Typed.TypedTerm (Maybe Syntax.RaiseExpression)
-unRaiseStatement x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.RaiseStatement")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.ReturnStatement
-unReturnStatement :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm [Syntax.StarExpression]
-unReturnStatement x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.ReturnStatement")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Set
-unSet :: Typed.TypedTerm Syntax.Set -> Typed.TypedTerm [Syntax.StarNamedExpression]
-unSet x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Set")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.SlashNoDefault
-unSlashNoDefault :: Typed.TypedTerm Syntax.SlashNoDefault -> Typed.TypedTerm [Syntax.ParamNoDefault]
-unSlashNoDefault x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.SlashNoDefault")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.StarAnnotation
-unStarAnnotation :: Typed.TypedTerm Syntax.StarAnnotation -> Typed.TypedTerm Syntax.StarExpression
-unStarAnnotation x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.StarAnnotation")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.StarNamedExpressions
-unStarNamedExpressions :: Typed.TypedTerm Syntax.StarNamedExpressions -> Typed.TypedTerm [Syntax.StarNamedExpression]
-unStarNamedExpressions x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.StarNamedExpressions")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.StarTargetsListSeq
-unStarTargetsListSeq :: Typed.TypedTerm Syntax.StarTargetsListSeq -> Typed.TypedTerm [Syntax.StarTarget]
-unStarTargetsListSeq x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.StarTargetsListSeq")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.StarTargetsTupleSeq
-unStarTargetsTupleSeq :: Typed.TypedTerm Syntax.StarTargetsTupleSeq -> Typed.TypedTerm [Syntax.StarTarget]
-unStarTargetsTupleSeq x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.StarTargetsTupleSeq")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.StarredExpression
-unStarredExpression :: Typed.TypedTerm Syntax.StarredExpression -> Typed.TypedTerm Syntax.Expression
-unStarredExpression x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.StarredExpression")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.Tuple
-unTuple :: Typed.TypedTerm Syntax.Tuple -> Typed.TypedTerm [Syntax.StarNamedExpression]
-unTuple x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.Tuple")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.TypeComment
-unTypeComment :: Typed.TypedTerm Syntax.TypeComment -> Typed.TypedTerm String
-unTypeComment x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.TypeComment")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.ValuePattern
-unValuePattern :: Typed.TypedTerm Syntax.ValuePattern -> Typed.TypedTerm Syntax.Attribute
-unValuePattern x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.ValuePattern")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.python.syntax.YieldStatement
-unYieldStatement :: Typed.TypedTerm Syntax.YieldStatement -> Typed.TypedTerm Syntax.YieldExpression
-unYieldStatement x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.python.syntax.YieldStatement")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL constructor for hydra.python.syntax.UntypedAssignment
-untypedAssignment :: Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.AnnotatedRhs -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.UntypedAssignment
-untypedAssignment targets rhs typeComment =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.UntypedAssignment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Typed.unTypedTerm targets)},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm rhs)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm typeComment)}]}))
-
--- | DSL accessor for the rhs field of hydra.python.syntax.UntypedAssignment
-untypedAssignmentRhs :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm Syntax.AnnotatedRhs
-untypedAssignmentRhs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.UntypedAssignment"),
-        Core.projectionFieldName = (Core.Name "rhs")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the targets field of hydra.python.syntax.UntypedAssignment
-untypedAssignmentTargets :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm [Syntax.StarTarget]
-untypedAssignmentTargets x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.UntypedAssignment"),
-        Core.projectionFieldName = (Core.Name "targets")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the typeComment field of hydra.python.syntax.UntypedAssignment
-untypedAssignmentTypeComment :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm (Maybe Syntax.TypeComment)
-untypedAssignmentTypeComment x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.UntypedAssignment"),
-        Core.projectionFieldName = (Core.Name "typeComment")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.UntypedAssignment
-untypedAssignmentUntypedAssignment :: Typed.TypedName Syntax.UntypedAssignment
-untypedAssignmentUntypedAssignment = Typed.TypedName (Core.Name "hydra.python.syntax.UntypedAssignment")
-
--- | DSL updater for the rhs field of hydra.python.syntax.UntypedAssignment
-untypedAssignmentWithRhs :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm Syntax.AnnotatedRhs -> Typed.TypedTerm Syntax.UntypedAssignment
-untypedAssignmentWithRhs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.UntypedAssignment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.UntypedAssignment"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "rhs"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.UntypedAssignment"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the targets field of hydra.python.syntax.UntypedAssignment
-untypedAssignmentWithTargets :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.UntypedAssignment
-untypedAssignmentWithTargets original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.UntypedAssignment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          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.python.syntax.UntypedAssignment"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.UntypedAssignment"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the typeComment field of hydra.python.syntax.UntypedAssignment
-untypedAssignmentWithTypeComment :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.UntypedAssignment
-untypedAssignmentWithTypeComment original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.UntypedAssignment"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "targets"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.UntypedAssignment"),
-              Core.projectionFieldName = (Core.Name "targets")})),
-            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.python.syntax.UntypedAssignment"),
-              Core.projectionFieldName = (Core.Name "rhs")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for the hydra.python.syntax.ValuePattern wrapper
-valuePattern :: Typed.TypedTerm Syntax.Attribute -> Typed.TypedTerm Syntax.ValuePattern
-valuePattern x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.ValuePattern"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.ValuePattern
-valuePatternValuePattern :: Typed.TypedName Syntax.ValuePattern
-valuePatternValuePattern = Typed.TypedName (Core.Name "hydra.python.syntax.ValuePattern")
-
--- | DSL constructor for hydra.python.syntax.WhileStatement
-whileStatement :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.WhileStatement
-whileStatement condition body else_ =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WhileStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "condition"),
-          Core.fieldTerm = (Typed.unTypedTerm condition)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Typed.unTypedTerm else_)}]}))
-
--- | DSL accessor for the body field of hydra.python.syntax.WhileStatement
-whileStatementBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Block
-whileStatementBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.WhileStatement"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the condition field of hydra.python.syntax.WhileStatement
-whileStatementCondition :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.NamedExpression
-whileStatementCondition x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.WhileStatement"),
-        Core.projectionFieldName = (Core.Name "condition")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the else field of hydra.python.syntax.WhileStatement
-whileStatementElse :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm (Maybe Syntax.Block)
-whileStatementElse x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.WhileStatement"),
-        Core.projectionFieldName = (Core.Name "else")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.WhileStatement
-whileStatementWhileStatement :: Typed.TypedName Syntax.WhileStatement
-whileStatementWhileStatement = Typed.TypedName (Core.Name "hydra.python.syntax.WhileStatement")
-
--- | DSL updater for the body field of hydra.python.syntax.WhileStatement
-whileStatementWithBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.WhileStatement
-whileStatementWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WhileStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "condition"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WhileStatement"),
-              Core.projectionFieldName = (Core.Name "condition")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WhileStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the condition field of hydra.python.syntax.WhileStatement
-whileStatementWithCondition :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.WhileStatement
-whileStatementWithCondition original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WhileStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "condition"),
-          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.python.syntax.WhileStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WhileStatement"),
-              Core.projectionFieldName = (Core.Name "else")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the else field of hydra.python.syntax.WhileStatement
-whileStatementWithElse :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.WhileStatement
-whileStatementWithElse original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WhileStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "condition"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WhileStatement"),
-              Core.projectionFieldName = (Core.Name "condition")})),
-            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.python.syntax.WhileStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "else"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.python.syntax.WithItem
-withItem :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.StarTarget) -> Typed.TypedTerm Syntax.WithItem
-withItem expression as =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WithItem"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm expression)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Typed.unTypedTerm as)}]}))
-
--- | DSL accessor for the as field of hydra.python.syntax.WithItem
-withItemAs :: Typed.TypedTerm Syntax.WithItem -> Typed.TypedTerm (Maybe Syntax.StarTarget)
-withItemAs x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithItem"),
-        Core.projectionFieldName = (Core.Name "as")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the expression field of hydra.python.syntax.WithItem
-withItemExpression :: Typed.TypedTerm Syntax.WithItem -> Typed.TypedTerm Syntax.Expression
-withItemExpression x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithItem"),
-        Core.projectionFieldName = (Core.Name "expression")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the as field of hydra.python.syntax.WithItem
-withItemWithAs :: Typed.TypedTerm Syntax.WithItem -> Typed.TypedTerm (Maybe Syntax.StarTarget) -> Typed.TypedTerm Syntax.WithItem
-withItemWithAs original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WithItem"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithItem"),
-              Core.projectionFieldName = (Core.Name "expression")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the expression field of hydra.python.syntax.WithItem
-withItemWithExpression :: Typed.TypedTerm Syntax.WithItem -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.WithItem
-withItemWithExpression original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WithItem"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "expression"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "as"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithItem"),
-              Core.projectionFieldName = (Core.Name "as")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL name token for hydra.python.syntax.WithItem
-withItemWithItem :: Typed.TypedName Syntax.WithItem
-withItemWithItem = Typed.TypedName (Core.Name "hydra.python.syntax.WithItem")
-
--- | DSL constructor for hydra.python.syntax.WithStatement
-withStatement :: Typed.TypedTerm Bool -> Typed.TypedTerm [Syntax.WithItem] -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.WithStatement
-withStatement async items typeComment body =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Typed.unTypedTerm async)},
-        Core.Field {
-          Core.fieldName = (Core.Name "items"),
-          Core.fieldTerm = (Typed.unTypedTerm items)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Typed.unTypedTerm typeComment)},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))
-
--- | DSL accessor for the async field of hydra.python.syntax.WithStatement
-withStatementAsync :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm Bool
-withStatementAsync x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-        Core.projectionFieldName = (Core.Name "async")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body field of hydra.python.syntax.WithStatement
-withStatementBody :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm Syntax.Block
-withStatementBody x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-        Core.projectionFieldName = (Core.Name "body")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the items field of hydra.python.syntax.WithStatement
-withStatementItems :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm [Syntax.WithItem]
-withStatementItems x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-        Core.projectionFieldName = (Core.Name "items")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the typeComment field of hydra.python.syntax.WithStatement
-withStatementTypeComment :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm (Maybe Syntax.TypeComment)
-withStatementTypeComment x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-        Core.projectionFieldName = (Core.Name "typeComment")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the async field of hydra.python.syntax.WithStatement
-withStatementWithAsync :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.WithStatement
-withStatementWithAsync original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "items"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "items")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            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.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the body field of hydra.python.syntax.WithStatement
-withStatementWithBody :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.WithStatement
-withStatementWithBody original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "items"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "items")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "body"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the items field of hydra.python.syntax.WithStatement
-withStatementWithItems :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm [Syntax.WithItem] -> Typed.TypedTerm Syntax.WithStatement
-withStatementWithItems original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "items"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "typeComment")})),
-            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.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL name token for hydra.python.syntax.WithStatement
-withStatementWithStatement :: Typed.TypedName Syntax.WithStatement
-withStatementWithStatement = Typed.TypedName (Core.Name "hydra.python.syntax.WithStatement")
-
--- | DSL updater for the typeComment field of hydra.python.syntax.WithStatement
-withStatementWithTypeComment :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.WithStatement
-withStatementWithTypeComment original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "async"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "async")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "items"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "items")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "typeComment"),
-          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.python.syntax.WithStatement"),
-              Core.projectionFieldName = (Core.Name "body")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the from variant of hydra.python.syntax.YieldExpression
-yieldExpressionFrom :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.YieldExpression
-yieldExpressionFrom x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.YieldExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "from"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the simple variant of hydra.python.syntax.YieldExpression
-yieldExpressionSimple :: Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm Syntax.YieldExpression
-yieldExpressionSimple x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.python.syntax.YieldExpression"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "simple"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.python.syntax.YieldExpression
-yieldExpressionYieldExpression :: Typed.TypedName Syntax.YieldExpression
-yieldExpressionYieldExpression = Typed.TypedName (Core.Name "hydra.python.syntax.YieldExpression")
-
--- | DSL constructor for the hydra.python.syntax.YieldStatement wrapper
-yieldStatement :: Typed.TypedTerm Syntax.YieldExpression -> Typed.TypedTerm Syntax.YieldStatement
-yieldStatement x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.python.syntax.YieldStatement"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.python.syntax.YieldStatement
-yieldStatementYieldStatement :: Typed.TypedName Syntax.YieldStatement
-yieldStatementYieldStatement = Typed.TypedName (Core.Name "hydra.python.syntax.YieldStatement")
diff --git a/src/main/haskell/Hydra/Dsl/Python/Utils.hs b/src/main/haskell/Hydra/Dsl/Python/Utils.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Dsl/Python/Utils.hs
+++ /dev/null
@@ -1,561 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | DSL functions for hydra.python.utils
-
-module Hydra.Dsl.Python.Utils where
-
-import qualified Hydra.Analysis as Analysis
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Classes as Classes
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Dsl.Python.Environment as PythonEnvironment
-import qualified Hydra.Dsl.Python.Names as PythonNames
-import qualified Hydra.Dsl.Python.Syntax as PythonSyntax
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Errors as Errors
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Json.Model as Model
-import qualified Hydra.Packaging as Packaging
-import qualified Hydra.Parsing as Parsing
-import qualified Hydra.Paths as Paths
-import qualified Hydra.Python.Environment as Environment
-import qualified Hydra.Python.Names as Names
-import qualified Hydra.Python.Serde as Serde
-import qualified Hydra.Python.Syntax as Syntax
-import qualified Hydra.Python.Utils as Utils
-import qualified Hydra.Query as Query
-import qualified Hydra.Relational as Relational
-import qualified Hydra.Serialization as Serialization
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-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
-
--- | DSL reference to hydra.python.utils.annotatedExpression
-annotatedExpression :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression
-annotatedExpression arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.annotatedExpression")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.annotatedStatement
-annotatedStatement :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Statement
-annotatedStatement arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.annotatedStatement")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.assignment
-assignment :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.AnnotatedRhs -> Typed.TypedTerm Syntax.Statement
-assignment arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.assignment")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.assignmentStatement
-assignmentStatement :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
-assignmentStatement arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.assignmentStatement")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.castTo
-castTo :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression
-castTo arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.castTo")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.commentStatement
-commentStatement :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Statement
-commentStatement arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.commentStatement")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.decimalVariantMethods
-decimalVariantMethods :: Typed.TypedTerm [Syntax.Statement]
-decimalVariantMethods = Typed.TypedTerm (Core.TermVariable (Core.Name "hydra.python.utils.decimalVariantMethods"))
-
--- | DSL reference to hydra.python.utils.decodePyComparisonToPyAwaitPrimary
-decodePyComparisonToPyAwaitPrimary :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm (Maybe Syntax.Primary)
-decodePyComparisonToPyAwaitPrimary arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.decodePyComparisonToPyAwaitPrimary")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.decodePyConjunctionToPyPrimary
-decodePyConjunctionToPyPrimary :: Typed.TypedTerm Syntax.Conjunction -> Typed.TypedTerm (Maybe Syntax.Primary)
-decodePyConjunctionToPyPrimary arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.decodePyConjunctionToPyPrimary")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.decodePyExpressionToPyPrimary
-decodePyExpressionToPyPrimary :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.Primary)
-decodePyExpressionToPyPrimary arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.decodePyExpressionToPyPrimary")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.decodePyInversionToPyPrimary
-decodePyInversionToPyPrimary :: Typed.TypedTerm Syntax.Inversion -> Typed.TypedTerm (Maybe Syntax.Primary)
-decodePyInversionToPyPrimary arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.decodePyInversionToPyPrimary")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.decodePyPowerToPyPrimary
-decodePyPowerToPyPrimary :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm (Maybe Syntax.Primary)
-decodePyPowerToPyPrimary arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.decodePyPowerToPyPrimary")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.dottedAssignmentStatement
-dottedAssignmentStatement :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
-dottedAssignmentStatement arg0 arg1 arg2 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermApplication (Core.Application {
-          Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.dottedAssignmentStatement")),
-          Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-        Core.applicationArgument = (Typed.unTypedTerm arg1)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg2)}))
-
--- | DSL reference to hydra.python.utils.doubleQuotedString
-doubleQuotedString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Expression
-doubleQuotedString arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.doubleQuotedString")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.findNamespaces
-findNamespaces :: Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm [Packaging.Definition] -> Typed.TypedTerm (Util.ModuleNames Syntax.DottedName)
-findNamespaces arg0 arg1 arg2 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermApplication (Core.Application {
-          Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.findNamespaces")),
-          Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-        Core.applicationArgument = (Typed.unTypedTerm arg1)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg2)}))
-
--- | DSL reference to hydra.python.utils.functionCall
-functionCall :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression
-functionCall arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.functionCall")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.getItemParams
-getItemParams :: Typed.TypedTerm Syntax.Parameters
-getItemParams = Typed.TypedTerm (Core.TermVariable (Core.Name "hydra.python.utils.getItemParams"))
-
--- | DSL reference to hydra.python.utils.indentedBlock
-indentedBlock :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm [[Syntax.Statement]] -> Typed.TypedTerm Syntax.Block
-indentedBlock arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.indentedBlock")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.nameAndParams
-nameAndParams :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression
-nameAndParams arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.nameAndParams")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.newtypeStatement
-newtypeStatement :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
-newtypeStatement arg0 arg1 arg2 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermApplication (Core.Application {
-          Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.newtypeStatement")),
-          Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-        Core.applicationArgument = (Typed.unTypedTerm arg1)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg2)}))
-
--- | DSL reference to hydra.python.utils.orExpression
-orExpression :: Typed.TypedTerm [Syntax.Primary] -> Typed.TypedTerm Syntax.Expression
-orExpression arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.orExpression")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.primaryAndParams
-primaryAndParams :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression
-primaryAndParams arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.primaryAndParams")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.primaryWithExpressionSlices
-primaryWithExpressionSlices :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Primary
-primaryWithExpressionSlices arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.primaryWithExpressionSlices")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.primaryWithRhs
-primaryWithRhs :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.PrimaryRhs -> Typed.TypedTerm Syntax.Primary
-primaryWithRhs arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.primaryWithRhs")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.primaryWithSlices
-primaryWithSlices :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.Slice -> Typed.TypedTerm [Syntax.SliceOrStarredExpression] -> Typed.TypedTerm Syntax.Primary
-primaryWithSlices arg0 arg1 arg2 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermApplication (Core.Application {
-          Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.primaryWithSlices")),
-          Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-        Core.applicationArgument = (Typed.unTypedTerm arg1)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg2)}))
-
--- | DSL reference to hydra.python.utils.projectFromExpression
-projectFromExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression
-projectFromExpression arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.projectFromExpression")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.pyAssignmentToPyStatement
-pyAssignmentToPyStatement :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.Statement
-pyAssignmentToPyStatement arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyAssignmentToPyStatement")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyAtomToPyExpression
-pyAtomToPyExpression :: Typed.TypedTerm Syntax.Atom -> Typed.TypedTerm Syntax.Expression
-pyAtomToPyExpression arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyAtomToPyExpression")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyBitwiseOrToPyConjunction
-pyBitwiseOrToPyConjunction :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.Conjunction
-pyBitwiseOrToPyConjunction arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyBitwiseOrToPyConjunction")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyBitwiseOrToPyExpression
-pyBitwiseOrToPyExpression :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.Expression
-pyBitwiseOrToPyExpression arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyBitwiseOrToPyExpression")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyClassDefinitionToPyStatement
-pyClassDefinitionToPyStatement :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.Statement
-pyClassDefinitionToPyStatement arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyClassDefinitionToPyStatement")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyClosedPatternToPyPatterns
-pyClosedPatternToPyPatterns :: Typed.TypedTerm Syntax.ClosedPattern -> Typed.TypedTerm Syntax.Patterns
-pyClosedPatternToPyPatterns arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyClosedPatternToPyPatterns")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyConjunctionToPyExpression
-pyConjunctionToPyExpression :: Typed.TypedTerm Syntax.Conjunction -> Typed.TypedTerm Syntax.Expression
-pyConjunctionToPyExpression arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyConjunctionToPyExpression")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyExpressionToBitwiseOr
-pyExpressionToBitwiseOr :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BitwiseOr
-pyExpressionToBitwiseOr arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyExpressionToBitwiseOr")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyExpressionToDisjunction
-pyExpressionToDisjunction :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Disjunction
-pyExpressionToDisjunction arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyExpressionToDisjunction")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyExpressionToPyAnnotatedRhs
-pyExpressionToPyAnnotatedRhs :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AnnotatedRhs
-pyExpressionToPyAnnotatedRhs arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyExpressionToPyAnnotatedRhs")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyExpressionToPyPrimary
-pyExpressionToPyPrimary :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Primary
-pyExpressionToPyPrimary arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyExpressionToPyPrimary")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyExpressionToPySimpleStatement
-pyExpressionToPySimpleStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SimpleStatement
-pyExpressionToPySimpleStatement arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyExpressionToPySimpleStatement")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyExpressionToPySlice
-pyExpressionToPySlice :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Slice
-pyExpressionToPySlice arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyExpressionToPySlice")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyExpressionToPyStarNamedExpression
-pyExpressionToPyStarNamedExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.StarNamedExpression
-pyExpressionToPyStarNamedExpression arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyExpressionToPyStarNamedExpression")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyExpressionToPyStatement
-pyExpressionToPyStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
-pyExpressionToPyStatement arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyExpressionToPyStatement")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyExpressionsToPyArgs
-pyExpressionsToPyArgs :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Args
-pyExpressionsToPyArgs arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyExpressionsToPyArgs")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyList
-pyList :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.List
-pyList arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyList")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyNameToPyExpression
-pyNameToPyExpression :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression
-pyNameToPyExpression arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyNameToPyExpression")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyNameToPyNamedExpression
-pyNameToPyNamedExpression :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.NamedExpression
-pyNameToPyNamedExpression arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyNameToPyNamedExpression")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyNameToPyPrimary
-pyNameToPyPrimary :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Primary
-pyNameToPyPrimary arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyNameToPyPrimary")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyNameToPyStarTarget
-pyNameToPyStarTarget :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.StarTarget
-pyNameToPyStarTarget arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyNameToPyStarTarget")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyNameToPyTypeParameter
-pyNameToPyTypeParameter :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TypeParameter
-pyNameToPyTypeParameter arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyNameToPyTypeParameter")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyNone
-pyNone :: Typed.TypedTerm Syntax.Name
-pyNone = Typed.TypedTerm (Core.TermVariable (Core.Name "hydra.python.utils.pyNone"))
-
--- | DSL reference to hydra.python.utils.pyPrimaryToPyBitwiseOr
-pyPrimaryToPyBitwiseOr :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.BitwiseOr
-pyPrimaryToPyBitwiseOr arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyPrimaryToPyBitwiseOr")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyPrimaryToPyBitwiseXor
-pyPrimaryToPyBitwiseXor :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.BitwiseXor
-pyPrimaryToPyBitwiseXor arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyPrimaryToPyBitwiseXor")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyPrimaryToPyConjunction
-pyPrimaryToPyConjunction :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.Conjunction
-pyPrimaryToPyConjunction arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyPrimaryToPyConjunction")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyPrimaryToPyExpression
-pyPrimaryToPyExpression :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.Expression
-pyPrimaryToPyExpression arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyPrimaryToPyExpression")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pyPrimaryToPySlice
-pyPrimaryToPySlice :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.Slice
-pyPrimaryToPySlice arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pyPrimaryToPySlice")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.pySimpleStatementToPyStatement
-pySimpleStatementToPyStatement :: Typed.TypedTerm Syntax.SimpleStatement -> Typed.TypedTerm Syntax.Statement
-pySimpleStatementToPyStatement arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.pySimpleStatementToPyStatement")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.raiseAssertionError
-raiseAssertionError :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Statement
-raiseAssertionError arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.raiseAssertionError")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.raiseTypeError
-raiseTypeError :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Statement
-raiseTypeError arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.raiseTypeError")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.returnSingle
-returnSingle :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
-returnSingle arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.returnSingle")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.selfOnlyParams
-selfOnlyParams :: Typed.TypedTerm Syntax.Parameters
-selfOnlyParams = Typed.TypedTerm (Core.TermVariable (Core.Name "hydra.python.utils.selfOnlyParams"))
-
--- | DSL reference to hydra.python.utils.selfOtherParams
-selfOtherParams :: Typed.TypedTerm Syntax.Parameters
-selfOtherParams = Typed.TypedTerm (Core.TermVariable (Core.Name "hydra.python.utils.selfOtherParams"))
-
--- | DSL reference to hydra.python.utils.singleQuotedString
-singleQuotedString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Expression
-singleQuotedString arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.singleQuotedString")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.stringToPyExpression
-stringToPyExpression :: Typed.TypedTerm Syntax.QuoteStyle -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.Expression
-stringToPyExpression arg0 arg1 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.stringToPyExpression")),
-        Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg1)}))
-
--- | DSL reference to hydra.python.utils.targetPythonVersion
-targetPythonVersion :: Typed.TypedTerm Environment.PythonVersion
-targetPythonVersion = Typed.TypedTerm (Core.TermVariable (Core.Name "hydra.python.utils.targetPythonVersion"))
-
--- | DSL reference to hydra.python.utils.tripleQuotedString
-tripleQuotedString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Expression
-tripleQuotedString arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.tripleQuotedString")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
-
--- | DSL reference to hydra.python.utils.typeAliasStatement
-typeAliasStatement :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
-typeAliasStatement arg0 arg1 arg2 arg3 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermApplication (Core.Application {
-          Core.applicationFunction = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.typeAliasStatement")),
-            Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-          Core.applicationArgument = (Typed.unTypedTerm arg1)})),
-        Core.applicationArgument = (Typed.unTypedTerm arg2)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg3)}))
-
--- | DSL reference to hydra.python.utils.typeAliasStatement310
-typeAliasStatement310 :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm t0 -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
-typeAliasStatement310 arg0 arg1 arg2 arg3 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermApplication (Core.Application {
-          Core.applicationFunction = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.typeAliasStatement310")),
-            Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-          Core.applicationArgument = (Typed.unTypedTerm arg1)})),
-        Core.applicationArgument = (Typed.unTypedTerm arg2)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg3)}))
-
--- | DSL reference to hydra.python.utils.unionTypeClassStatements310
-unionTypeClassStatements310 :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm [Syntax.Statement]
-unionTypeClassStatements310 arg0 arg1 arg2 arg3 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermApplication (Core.Application {
-        Core.applicationFunction = (Core.TermApplication (Core.Application {
-          Core.applicationFunction = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.unionTypeClassStatements310")),
-            Core.applicationArgument = (Typed.unTypedTerm arg0)})),
-          Core.applicationArgument = (Typed.unTypedTerm arg1)})),
-        Core.applicationArgument = (Typed.unTypedTerm arg2)})),
-      Core.applicationArgument = (Typed.unTypedTerm arg3)}))
-
--- | DSL reference to hydra.python.utils.unitVariantMethods
-unitVariantMethods :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Statement]
-unitVariantMethods arg0 =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.python.utils.unitVariantMethods")),
-      Core.applicationArgument = (Typed.unTypedTerm arg0)}))
diff --git a/src/main/haskell/Hydra/Python/Coder.hs b/src/main/haskell/Hydra/Python/Coder.hs
--- a/src/main/haskell/Hydra/Python/Coder.hs
+++ b/src/main/haskell/Hydra/Python/Coder.hs
@@ -4,2976 +4,2977 @@
 
 module Hydra.Python.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.Checking as Checking
-import qualified Hydra.Classes as Classes
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Dependencies as Dependencies
-import qualified Hydra.Environment as Environment
-import qualified Hydra.Error.Checking as ErrorChecking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.Packaging as ErrorPackaging
-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.Python.Environment as PythonEnvironment
-import qualified Hydra.Python.Names as PythonNames
-import qualified Hydra.Python.Serde as Serde
-import qualified Hydra.Python.Syntax as Syntax
-import qualified Hydra.Python.Utils as Utils
-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.Rewriting as Rewriting
-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.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-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
-import qualified Data.Map as M
-import qualified Data.Set as S
-
--- | Analyze a function term with Python-specific Graph management
-analyzePythonFunction :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Core.Term -> Either t0 (Typing.FunctionStructure PythonEnvironment.PythonEnvironment)
-analyzePythonFunction cx env term =
-    Analysis.analyzeFunctionTermWith cx pythonBindingMetadata pythonEnvironmentGetGraph pythonEnvironmentSetGraph env term
-
--- | Escape a builder setter name that would collide with build()/builder()/self
-builderSetterName :: PythonEnvironment.PythonEnvironment -> Core.Name -> String
-builderSetterName env fname =
-
-      let base = Syntax.unName (PythonNames.encodeFieldName env fname)
-      in (Logic.ifElse (Logic.or (Equality.equal base "build") (Logic.or (Equality.equal base "builder") (Equality.equal base "self"))) (Strings.concat2 base "_") base)
-
--- | Encode a single case (Field) into a CaseBlock for a match statement
-caseBlockToExpr :: t0 -> PythonEnvironment.PythonEnvironment -> Core.Name -> [Core.FieldType] -> Bool -> (PythonEnvironment.PythonEnvironment -> Core.Term -> Either t1 [Syntax.Statement]) -> Core.CaseAlternative -> Either t1 Syntax.CaseBlock
-caseBlockToExpr cx env tname rowType isEnum encodeBody field =
-
-      let fname = Core.caseAlternativeName field
-          fterm = Core.caseAlternativeHandler field
-          stripped = Strip.deannotateAndDetypeTerm fterm
-          effectiveLambda =
-                  case stripped of
-                    Core.TermLambda v0 -> v0
-                    _ ->
-                      let syntheticVar = Core.Name "_matchValue"
-                      in Core.Lambda {
-                        Core.lambdaParameter = syntheticVar,
-                        Core.lambdaDomain = Nothing,
-                        Core.lambdaBody = (Core.TermApplication (Core.Application {
-                          Core.applicationFunction = stripped,
-                          Core.applicationArgument = (Core.TermVariable syntheticVar)}))}
-          v = Core.lambdaParameter effectiveLambda
-          rawBody = Core.lambdaBody effectiveLambda
-          isUnitVariant = isVariantUnitType rowType fname
-          effectiveBody = Logic.ifElse isUnitVariant (eliminateUnitVar v rawBody) rawBody
-          shouldCapture =
-                  Logic.not (Logic.or isUnitVariant (Logic.or (Variables.isFreeVariableInTerm v rawBody) (Predicates.isUnitTerm rawBody)))
-          env2 = pythonEnvironmentSetGraph (Scoping.extendGraphForLambda (pythonEnvironmentGetGraph env) effectiveLambda) env
-          pyVariantName = deconflictVariantName True env2 tname fname (PythonEnvironment.pythonEnvironmentGraph env2)
-          pattern = variantClosedPattern env2 tname fname pyVariantName rowType isEnum v shouldCapture
-      in (Eithers.bind (encodeBody env2 effectiveBody) (\stmts ->
-        let pyBody = Utils.indentedBlock Nothing [
-              stmts]
-        in (Right (Syntax.CaseBlock {
-          Syntax.caseBlockPatterns = (Utils.pyClosedPatternToPyPatterns pattern),
-          Syntax.caseBlockGuard = Nothing,
-          Syntax.caseBlockBody = pyBody}))))
-
--- | Create a class pattern for a unit variant (no value captured)
-classVariantPatternUnit :: Syntax.Name -> Syntax.ClosedPattern
-classVariantPatternUnit pyVariantName =
-    Syntax.ClosedPatternClass (Syntax.ClassPattern {
-      Syntax.classPatternNameOrAttribute = (Syntax.NameOrAttribute [
-        pyVariantName]),
-      Syntax.classPatternPositionalPatterns = Nothing,
-      Syntax.classPatternKeywordPatterns = Nothing})
-
--- | Create a class pattern for a variant with captured value
-classVariantPatternWithCapture :: PythonEnvironment.PythonEnvironment -> Syntax.Name -> Core.Name -> Syntax.ClosedPattern
-classVariantPatternWithCapture env pyVariantName varName =
-
-      let pyVarNameAttr = Syntax.NameOrAttribute [
-            pyVariantName]
-          capturePattern =
-                  Syntax.ClosedPatternCapture (Syntax.CapturePattern (Syntax.PatternCaptureTarget (PythonNames.encodeName False Util.CaseConventionLowerSnake env varName)))
-          keywordPattern =
-                  Syntax.KeywordPattern {
-                    Syntax.keywordPatternName = (Syntax.Name "value"),
-                    Syntax.keywordPatternPattern = (Syntax.PatternOr (Syntax.OrPattern [
-                      capturePattern]))}
-      in (Syntax.ClosedPatternClass (Syntax.ClassPattern {
-        Syntax.classPatternNameOrAttribute = pyVarNameAttr,
-        Syntax.classPatternPositionalPatterns = Nothing,
-        Syntax.classPatternKeywordPatterns = (Just (Syntax.KeywordPatterns [
-          keywordPattern]))}))
-
--- | Collect type variables from a type
-collectTypeVariables :: S.Set Core.Name -> Core.Type -> S.Set Core.Name
-collectTypeVariables initial typ =
-    case (Strip.deannotateType typ) of
-      Core.TypeForall v0 ->
-        let v = Core.forallTypeParameter v0
-            body = Core.forallTypeBody v0
-        in (collectTypeVariables (Sets.insert v initial) body)
-      _ ->
-        let freeVars = Variables.freeVariablesInType typ
-            isTypeVar = \n -> isTypeVariableName n
-            filteredList = Lists.filter isTypeVar (Sets.toList freeVars)
-        in (Sets.union initial (Sets.fromList filteredList))
-
--- | Conditionally include a symbol name based on a boolean flag
-condImportSymbol :: t0 -> Bool -> Maybe t0
-condImportSymbol name flag = Logic.ifElse flag (Just name) Nothing
-
--- | Create a @dataclass(frozen=True) decorator
-dataclassDecorator :: Syntax.NamedExpression
-dataclassDecorator =
-    Syntax.NamedExpressionSimple (Utils.pyPrimaryToPyExpression (Utils.primaryWithRhs (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "dataclass"))) (Syntax.PrimaryRhsCall (Syntax.Args {
-      Syntax.argsPositional = [],
-      Syntax.argsKwargOrStarred = [
-        Syntax.KwargOrStarredKwarg (Syntax.Kwarg {
-          Syntax.kwargName = (Syntax.Name "frozen"),
-          Syntax.kwargValue = (Utils.pyAtomToPyExpression Syntax.AtomTrue)})],
-      Syntax.argsKwargOrDoubleStarred = []}))))
-
--- | Deconflict a variant name to avoid collisions with type names
-deconflictVariantName :: Bool -> PythonEnvironment.PythonEnvironment -> Core.Name -> Core.Name -> Graph.Graph -> Syntax.Name
-deconflictVariantName isQualified env unionName fname g =
-
-      let candidateHydraName = Core.Name (Strings.concat2 (Core.unName unionName) (Formatting.capitalize (Core.unName fname)))
-          termCollision = Maps.member candidateHydraName (Graph.graphBoundTerms g)
-          typeCollision = Maps.member candidateHydraName (Graph.graphSchemaTypes g)
-          collision = Logic.or termCollision typeCollision
-      in (Logic.ifElse collision (Syntax.Name (Strings.concat2 (Syntax.unName (PythonNames.variantName isQualified env unionName fname)) "_")) (PythonNames.variantName isQualified env unionName fname))
-
--- | Rewrite case statements to avoid variable name collisions
-deduplicateCaseVariables :: [Core.CaseAlternative] -> [Core.CaseAlternative]
-deduplicateCaseVariables cases_ =
-
-      let rewriteCase =
-              \state -> \field ->
-                let countByName = Pairs.first state
-                    done = Pairs.second state
-                    fname = Core.caseAlternativeName field
-                    fterm = Core.caseAlternativeHandler field
-                in case (Strip.deannotateAndDetypeTerm fterm) of
-                  Core.TermLambda v0 ->
-                    let v = Core.lambdaParameter v0
-                        mdom = Core.lambdaDomain v0
-                        body = Core.lambdaBody v0
-                    in (Optionals.match (Maps.lookup v countByName) (Maps.insert v 1 countByName, (Lists.cons field done)) (\count ->
-                      let count2 = Math.add count 1
-                          v2 = Core.Name (Strings.concat2 (Core.unName v) (Literals.printInt32 count2))
-                          newBody = Reduction.alphaConvert v v2 body
-                          newLam =
-                                  Core.Lambda {
-                                    Core.lambdaParameter = v2,
-                                    Core.lambdaDomain = mdom,
-                                    Core.lambdaBody = newBody}
-                          newTerm = Core.TermLambda newLam
-                          newField =
-                                  Core.CaseAlternative {
-                                    Core.caseAlternativeName = fname,
-                                    Core.caseAlternativeHandler = newTerm}
-                      in (Maps.insert v count2 countByName, (Lists.cons newField done))))
-                  _ -> (countByName, (Lists.cons field done))
-          result = Lists.foldl rewriteCase (Maps.empty, []) cases_
-      in (Lists.reverse (Pairs.second result))
-
--- | Recursively dig through forall types to find wrap types
-digForWrap :: Bool -> PythonEnvironment.PythonModuleMetadata -> Core.Type -> PythonEnvironment.PythonModuleMetadata
-digForWrap isTermAnnot meta typ =
-    case (Strip.deannotateType typ) of
-      Core.TypeForall v0 -> digForWrap isTermAnnot meta (Core.forallTypeBody v0)
-      Core.TypeWrap _ -> Logic.ifElse isTermAnnot meta (setMetaUsesNode meta True)
-      _ -> meta
-
--- | Substitute unit for a variable in a term (for unit variant case handling)
-eliminateUnitVar :: Core.Name -> Core.Term -> Core.Term
-eliminateUnitVar v term0 =
-
-      let rewriteField =
-              \rewrite -> \fld -> Core.Field {
-                Core.fieldName = (Core.fieldName fld),
-                Core.fieldTerm = (rewrite (Core.fieldTerm fld))}
-          rewriteCaseAlternative =
-                  \rewrite -> \alt -> Core.CaseAlternative {
-                    Core.caseAlternativeName = (Core.caseAlternativeName alt),
-                    Core.caseAlternativeHandler = (rewrite (Core.caseAlternativeHandler alt))}
-          rewriteBinding =
-                  \rewrite -> \bnd -> Core.Binding {
-                    Core.bindingName = (Core.bindingName bnd),
-                    Core.bindingTerm = (rewrite (Core.bindingTerm bnd)),
-                    Core.bindingTypeScheme = (Core.bindingTypeScheme bnd)}
-          rewrite =
-                  \recurse -> \term -> case (Strip.deannotateAndDetypeTerm term) of
-                    Core.TermVariable v0 -> Logic.ifElse (Equality.equal v0 v) Core.TermUnit term
-                    Core.TermAnnotated v0 -> Core.TermAnnotated (Core.AnnotatedTerm {
-                      Core.annotatedTermBody = (recurse (Core.annotatedTermBody v0)),
-                      Core.annotatedTermAnnotation = (Core.annotatedTermAnnotation v0)})
-                    Core.TermApplication v0 -> Core.TermApplication (Core.Application {
-                      Core.applicationFunction = (recurse (Core.applicationFunction v0)),
-                      Core.applicationArgument = (recurse (Core.applicationArgument v0))})
-                    Core.TermLambda v0 -> Logic.ifElse (Equality.equal (Core.lambdaParameter v0) v) term (Core.TermLambda (Core.Lambda {
-                      Core.lambdaParameter = (Core.lambdaParameter v0),
-                      Core.lambdaDomain = (Core.lambdaDomain v0),
-                      Core.lambdaBody = (recurse (Core.lambdaBody v0))}))
-                    Core.TermCases v0 -> Core.TermCases (Core.CaseStatement {
-                      Core.caseStatementTypeName = (Core.caseStatementTypeName v0),
-                      Core.caseStatementDefault = (Optionals.map recurse (Core.caseStatementDefault v0)),
-                      Core.caseStatementCases = (Lists.map (rewriteCaseAlternative recurse) (Core.caseStatementCases v0))})
-                    Core.TermLet v0 -> Core.TermLet (Core.Let {
-                      Core.letBindings = (Lists.map (rewriteBinding recurse) (Core.letBindings v0)),
-                      Core.letBody = (recurse (Core.letBody v0))})
-                    Core.TermList v0 -> Core.TermList (Lists.map recurse v0)
-                    Core.TermMap v0 -> Core.TermMap (Maps.fromList (Lists.map (\kv -> (recurse (Pairs.first kv), (recurse (Pairs.second kv)))) (Maps.toList v0)))
-                    Core.TermRecord v0 -> Core.TermRecord (Core.Record {
-                      Core.recordTypeName = (Core.recordTypeName v0),
-                      Core.recordFields = (Lists.map (rewriteField recurse) (Core.recordFields v0))})
-                    Core.TermSet v0 -> Core.TermSet (Sets.map recurse v0)
-                    Core.TermInject v0 -> Core.TermInject (Core.Injection {
-                      Core.injectionTypeName = (Core.injectionTypeName v0),
-                      Core.injectionField = (rewriteField recurse (Core.injectionField v0))})
-                    Core.TermOptional v0 -> Core.TermOptional (Optionals.map recurse v0)
-                    Core.TermPair v0 -> Core.TermPair (recurse (Pairs.first v0), (recurse (Pairs.second v0)))
-                    Core.TermWrap v0 -> Core.TermWrap (Core.WrappedTerm {
-                      Core.wrappedTermTypeName = (Core.wrappedTermTypeName v0),
-                      Core.wrappedTermBody = (recurse (Core.wrappedTermBody v0))})
-                    Core.TermEither v0 -> Core.TermEither (Eithers.bimap recurse recurse v0)
-                    Core.TermTypeApplication v0 -> Core.TermTypeApplication (Core.TypeApplicationTerm {
-                      Core.typeApplicationTermBody = (recurse (Core.typeApplicationTermBody v0)),
-                      Core.typeApplicationTermType = (Core.typeApplicationTermType v0)})
-                    Core.TermTypeLambda v0 -> Core.TermTypeLambda (Core.TypeLambda {
-                      Core.typeLambdaParameter = (Core.typeLambdaParameter v0),
-                      Core.typeLambdaBody = (recurse (Core.typeLambdaBody v0))})
-                    _ -> term
-          go = \term -> rewrite go term
-      in (go term0)
-
--- | Create an initial empty metadata record with given namespaces
-emptyMetadata :: Util.ModuleNames Syntax.DottedName -> PythonEnvironment.PythonModuleMetadata
-emptyMetadata ns =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = ns,
-      PythonEnvironment.pythonModuleMetadataTypeVariables = Sets.empty,
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = False,
-      PythonEnvironment.pythonModuleMetadataUsesCallable = False,
-      PythonEnvironment.pythonModuleMetadataUsesCast = False,
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = False,
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = False,
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = False,
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = False,
-      PythonEnvironment.pythonModuleMetadataUsesEither = False,
-      PythonEnvironment.pythonModuleMetadataUsesEnum = False,
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = False,
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = False,
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = False,
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = False,
-      PythonEnvironment.pythonModuleMetadataUsesJust = False,
-      PythonEnvironment.pythonModuleMetadataUsesLeft = False,
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = False,
-      PythonEnvironment.pythonModuleMetadataUsesName = False,
-      PythonEnvironment.pythonModuleMetadataUsesNode = False,
-      PythonEnvironment.pythonModuleMetadataUsesNothing = False,
-      PythonEnvironment.pythonModuleMetadataUsesRight = False,
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = False}
-
--- | Encode a function application to a Python expression
-encodeApplication :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Core.Application -> Either Errors.Error Syntax.Expression
-encodeApplication cx env app =
-
-      let g = pythonEnvironmentGetGraph env
-          term = Core.TermApplication app
-          gathered = Analysis.gatherArgs term []
-          fun = Pairs.first gathered
-          args = Pairs.second gathered
-          knownArity = termArityWithPrimitives g fun
-          arity = Ordering.max knownArity (Lists.length args)
-      in (Eithers.bind (Eithers.mapList (\t -> encodeTermInline cx env False t) args) (\pargs ->
-        let hargs = Lists.take arity pargs
-            rargs = Lists.drop arity pargs
-        in (Eithers.bind (encodeApplicationInner cx env fun hargs rargs) (\result ->
-          let lhs = Pairs.first result
-              remainingRargs = Pairs.second result
-              pyapp = Lists.foldl (\t -> \a -> Utils.functionCall (Utils.pyExpressionToPyPrimary t) [
-                    a]) lhs remainingRargs
-          in (Right pyapp)))))
-
--- | Inner helper for encodeApplication
-encodeApplicationInner :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Core.Term -> [Syntax.Expression] -> [Syntax.Expression] -> Either Errors.Error (Syntax.Expression, [Syntax.Expression])
-encodeApplicationInner cx env fun hargs rargs =
-
-      let firstArg = Optionals.withDefault (Utils.pyNameToPyExpression (Syntax.Name "")) (Lists.head hargs)
-          restArgs = Lists.drop 1 hargs
-          withRest = \e -> Logic.ifElse (Lists.isEmpty restArgs) e (Utils.functionCall (Utils.pyExpressionToPyPrimary e) restArgs)
-          defaultCase =
-                  Eithers.bind (encodeTermInline cx env False fun) (\pfun -> Right (Utils.functionCall (Utils.pyExpressionToPyPrimary pfun) hargs, rargs))
-      in case (Strip.deannotateAndDetypeTerm fun) of
-        Core.TermProject v0 ->
-          let fname = Core.projectionFieldName v0
-              fieldExpr = Utils.projectFromExpression firstArg (PythonNames.encodeFieldName env fname)
-          in (Right (withRest fieldExpr, rargs))
-        Core.TermCases v0 -> Eithers.bind (encodeUnionEliminationInline cx env v0 firstArg) (\inlineExpr -> Right (withRest inlineExpr, rargs))
-        Core.TermUnwrap _ ->
-          let valueExpr = Utils.projectFromExpression firstArg (Syntax.Name "value")
-              allArgs = Lists.concat2 restArgs rargs
-          in (Logic.ifElse (Lists.isEmpty allArgs) (Right (valueExpr, [])) (Right (Utils.functionCall (Utils.pyExpressionToPyPrimary valueExpr) allArgs, [])))
-        Core.TermLambda _ -> Eithers.bind (encodeTermInline cx env False fun) (\pfun -> Right (Utils.functionCall (Utils.pyExpressionToPyPrimary pfun) hargs, rargs))
-        Core.TermVariable v0 ->
-          let g = pythonEnvironmentGetGraph env
-              allArgs = Lists.concat2 hargs rargs
-              inlineVars = PythonEnvironment.pythonEnvironmentInlineVariables env
-          in (Optionals.match (Maps.lookup v0 (Graph.graphPrimitives g)) (Optionals.match (Lexical.lookupBinding g v0) (Eithers.bind (encodeVariable cx env v0 hargs) (\expr -> Right (expr, rargs))) (\el -> Optionals.match (Core.bindingTypeScheme el) (Eithers.bind (encodeVariable cx env v0 hargs) (\expr -> Right (expr, rargs))) (\ts ->
-            let elArity = Arity.typeSchemeArity ts
-                consumeCount = Ordering.min elArity (Lists.length allArgs)
-                consumedArgs = Lists.take consumeCount allArgs
-                remainingArgs = Lists.drop consumeCount allArgs
-            in (Logic.ifElse (Lists.isEmpty consumedArgs) (Eithers.bind (encodeVariable cx env v0 []) (\expr -> Right (expr, rargs))) (Logic.ifElse (Sets.member v0 inlineVars) (Right (
-              Utils.functionCall (Utils.pyExpressionToPyPrimary (lazyDotGet (PythonNames.termVariableReference env v0))) consumedArgs,
-              remainingArgs)) (Right (
-              Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionLowerSnake env v0)) consumedArgs,
-              remainingArgs))))))) (\_prim ->
-            let wrappedArgs = wrapLazyArguments g v0 hargs
-            in (Eithers.bind (encodeVariable cx env v0 wrappedArgs) (\expr -> Right (expr, rargs)))))
-        _ -> defaultCase
-
--- | Encode an application type to Python expression
-encodeApplicationType :: PythonEnvironment.PythonEnvironment -> Core.ApplicationType -> Either t0 Syntax.Expression
-encodeApplicationType env at =
-
-      let gatherParams =
-              \t -> \ps -> case (Strip.deannotateType t) of
-                Core.TypeApplication v0 -> gatherParams (Core.applicationTypeFunction v0) (Lists.cons (Core.applicationTypeArgument v0) ps)
-                Core.TypeAnnotated _ -> (t, ps)
-                Core.TypeEffect _ -> (t, ps)
-                Core.TypeFunction _ -> (t, ps)
-                Core.TypeForall _ -> (t, ps)
-                Core.TypeList _ -> (t, ps)
-                Core.TypeLiteral _ -> (t, ps)
-                Core.TypeMap _ -> (t, ps)
-                Core.TypeOptional _ -> (t, ps)
-                Core.TypeEither _ -> (t, ps)
-                Core.TypePair _ -> (t, ps)
-                Core.TypeRecord _ -> (t, ps)
-                Core.TypeSet _ -> (t, ps)
-                Core.TypeUnion _ -> (t, ps)
-                Core.TypeUnit -> (t, ps)
-                Core.TypeVariable _ -> (t, ps)
-                Core.TypeVoid -> (t, ps)
-                Core.TypeWrap _ -> (t, ps)
-          bodyAndArgs = gatherParams (Core.TypeApplication at) []
-          body = Pairs.first bodyAndArgs
-          args = Pairs.second bodyAndArgs
-      in (Eithers.bind (encodeType env body) (\pyBody -> Eithers.bind (Eithers.mapList (encodeType env) args) (\pyArgs -> Right (Utils.primaryAndParams (Utils.pyExpressionToPyPrimary pyBody) pyArgs))))
-
--- | Encode a binding as a Python statement (function definition or assignment)
-encodeBindingAs :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Core.Binding -> Either Errors.Error Syntax.Statement
-encodeBindingAs cx env binding =
-
-      let name1 = Core.bindingName binding
-          term1 = Core.bindingTerm binding
-          mts = Core.bindingTypeScheme binding
-          fname = PythonNames.encodeName True Util.CaseConventionLowerSnake env name1
-      in (Optionals.match mts (
-        let gathered = gatherLambdas term1
-            lambdaParams = Pairs.first gathered
-            innerBody = Pairs.second gathered
-            mcsa = isCaseStatementApplication innerBody
-        in (Optionals.match mcsa (
-          let mcs = extractCaseElimination term1
-          in (Optionals.match mcs (Eithers.bind (encodeTermMultiline cx env term1) (\stmts -> Optionals.match (Lists.head stmts) (Left (Errors.ErrorOther (Errors.OtherError "encodeTermMultiline returned no statements"))) (\x -> Right x))) (\cs ->
-            let tname = Core.caseStatementTypeName cs
-                dflt = Core.caseStatementDefault cs
-                cases_ = Core.caseStatementCases cs
-            in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
-              let isEnum = Predicates.isEnumRowType rt
-                  isFull = isCasesFull rt cases_
-                  innerParam =
-                          Syntax.Param {
-                            Syntax.paramName = (Syntax.Name "x"),
-                            Syntax.paramAnnotation = Nothing}
-                  param =
-                          Syntax.ParamNoDefault {
-                            Syntax.paramNoDefaultParam = innerParam,
-                            Syntax.paramNoDefaultTypeComment = Nothing}
-                  params =
-                          Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
-                            Syntax.paramNoDefaultParametersParamNoDefault = [
-                              param],
-                            Syntax.paramNoDefaultParametersParamWithDefault = [],
-                            Syntax.paramNoDefaultParametersStarEtc = Nothing})
-              in (Eithers.bind (Eithers.mapList (caseBlockToExpr cx env tname rt isEnum (\e -> \t -> encodeTermMultiline cx e t)) cases_) (\pyCases -> Eithers.bind (encodeDefaultCaseBlock (\t -> encodeTermInline cx env False t) isFull dflt tname) (\pyDflt ->
-                let subj = Syntax.SubjectExpressionSimple (Syntax.NamedExpressionSimple (Utils.pyNameToPyExpression (Syntax.Name "x")))
-                    allCases = Lists.concat2 pyCases pyDflt
-                    matchStmt =
-                            Syntax.StatementCompound (Syntax.CompoundStatementMatch (Syntax.MatchStatement {
-                              Syntax.matchStatementSubject = subj,
-                              Syntax.matchStatementCases = allCases}))
-                    body = Utils.indentedBlock Nothing [
-                          [
-                            matchStmt]]
-                    funcDefRaw =
-                            Syntax.FunctionDefRaw {
-                              Syntax.functionDefRawAsync = False,
-                              Syntax.functionDefRawName = fname,
-                              Syntax.functionDefRawTypeParams = [],
-                              Syntax.functionDefRawParams = (Just params),
-                              Syntax.functionDefRawReturnType = Nothing,
-                              Syntax.functionDefRawFuncTypeComment = Nothing,
-                              Syntax.functionDefRawBlock = body}
-                in (Right (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
-                  Syntax.functionDefinitionDecorators = Nothing,
-                  Syntax.functionDefinitionRaw = funcDefRaw})))))))))))) (\csa -> Logic.ifElse (Lists.isEmpty lambdaParams) (
-          let mcs = extractCaseElimination term1
-          in (Optionals.match mcs (Eithers.bind (encodeTermMultiline cx env term1) (\stmts -> Optionals.match (Lists.head stmts) (Left (Errors.ErrorOther (Errors.OtherError "encodeTermMultiline returned no statements"))) (\x -> Right x))) (\cs ->
-            let tname = Core.caseStatementTypeName cs
-                dflt = Core.caseStatementDefault cs
-                cases_ = Core.caseStatementCases cs
-            in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
-              let isEnum = Predicates.isEnumRowType rt
-                  isFull = isCasesFull rt cases_
-                  innerParam =
-                          Syntax.Param {
-                            Syntax.paramName = (Syntax.Name "x"),
-                            Syntax.paramAnnotation = Nothing}
-                  param =
-                          Syntax.ParamNoDefault {
-                            Syntax.paramNoDefaultParam = innerParam,
-                            Syntax.paramNoDefaultTypeComment = Nothing}
-                  params =
-                          Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
-                            Syntax.paramNoDefaultParametersParamNoDefault = [
-                              param],
-                            Syntax.paramNoDefaultParametersParamWithDefault = [],
-                            Syntax.paramNoDefaultParametersStarEtc = Nothing})
-              in (Eithers.bind (Eithers.mapList (caseBlockToExpr cx env tname rt isEnum (\e -> \t -> encodeTermMultiline cx e t)) cases_) (\pyCases -> Eithers.bind (encodeDefaultCaseBlock (\t -> encodeTermInline cx env False t) isFull dflt tname) (\pyDflt ->
-                let subj = Syntax.SubjectExpressionSimple (Syntax.NamedExpressionSimple (Utils.pyNameToPyExpression (Syntax.Name "x")))
-                    allCases = Lists.concat2 pyCases pyDflt
-                    matchStmt =
-                            Syntax.StatementCompound (Syntax.CompoundStatementMatch (Syntax.MatchStatement {
-                              Syntax.matchStatementSubject = subj,
-                              Syntax.matchStatementCases = allCases}))
-                    body = Utils.indentedBlock Nothing [
-                          [
-                            matchStmt]]
-                    funcDefRaw =
-                            Syntax.FunctionDefRaw {
-                              Syntax.functionDefRawAsync = False,
-                              Syntax.functionDefRawName = fname,
-                              Syntax.functionDefRawTypeParams = [],
-                              Syntax.functionDefRawParams = (Just params),
-                              Syntax.functionDefRawReturnType = Nothing,
-                              Syntax.functionDefRawFuncTypeComment = Nothing,
-                              Syntax.functionDefRawBlock = body}
-                in (Right (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
-                  Syntax.functionDefinitionDecorators = Nothing,
-                  Syntax.functionDefinitionRaw = funcDefRaw})))))))))))) (
-          let tname = Pairs.first csa
-              rest1 = Pairs.second csa
-              dflt = Pairs.first rest1
-              rest2 = Pairs.second rest1
-              cases_ = Pairs.first rest2
-          in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
-            let isEnum = Predicates.isEnumRowType rt
-                isFull = isCasesFull rt cases_
-                capturedVarNames = Optionals.withDefault [] (Lists.init lambdaParams)
-                matchLambdaParam = Optionals.withDefault (Core.Name "") (Lists.last lambdaParams)
-                capturedParams =
-                        Lists.map (\n -> Syntax.ParamNoDefault {
-                          Syntax.paramNoDefaultParam = Syntax.Param {
-                            Syntax.paramName = (PythonNames.encodeName False Util.CaseConventionLowerSnake env n),
-                            Syntax.paramAnnotation = Nothing},
-                          Syntax.paramNoDefaultTypeComment = Nothing}) capturedVarNames
-                matchArgName = PythonNames.encodeName False Util.CaseConventionLowerSnake env matchLambdaParam
-                matchParam =
-                        Syntax.ParamNoDefault {
-                          Syntax.paramNoDefaultParam = Syntax.Param {
-                            Syntax.paramName = matchArgName,
-                            Syntax.paramAnnotation = Nothing},
-                          Syntax.paramNoDefaultTypeComment = Nothing}
-                allParams = Lists.concat2 capturedParams [
-                      matchParam]
-                params =
-                        Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
-                          Syntax.paramNoDefaultParametersParamNoDefault = allParams,
-                          Syntax.paramNoDefaultParametersParamWithDefault = [],
-                          Syntax.paramNoDefaultParametersStarEtc = Nothing})
-                envWithParams = extendEnvWithLambdaParams env term1
-            in (Eithers.bind (Eithers.mapList (caseBlockToExpr cx envWithParams tname rt isEnum (\e -> \t -> encodeTermMultiline cx e t)) cases_) (\pyCases -> Eithers.bind (encodeDefaultCaseBlock (\t -> encodeTermInline cx envWithParams False t) isFull dflt tname) (\pyDflt ->
-              let subj = Syntax.SubjectExpressionSimple (Syntax.NamedExpressionSimple (Utils.pyNameToPyExpression matchArgName))
-                  allCases = Lists.concat2 pyCases pyDflt
-                  matchStmt =
-                          Syntax.StatementCompound (Syntax.CompoundStatementMatch (Syntax.MatchStatement {
-                            Syntax.matchStatementSubject = subj,
-                            Syntax.matchStatementCases = allCases}))
-                  body = Utils.indentedBlock Nothing [
-                        [
-                          matchStmt]]
-                  funcDefRaw =
-                          Syntax.FunctionDefRaw {
-                            Syntax.functionDefRawAsync = False,
-                            Syntax.functionDefRawName = fname,
-                            Syntax.functionDefRawTypeParams = [],
-                            Syntax.functionDefRawParams = (Just params),
-                            Syntax.functionDefRawReturnType = Nothing,
-                            Syntax.functionDefRawFuncTypeComment = Nothing,
-                            Syntax.functionDefRawBlock = body}
-              in (Right (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
-                Syntax.functionDefinitionDecorators = Nothing,
-                Syntax.functionDefinitionRaw = funcDefRaw}))))))))))))) (\ts -> Eithers.bind (Annotations.getTermDescription cx (pythonEnvironmentGetGraph env) term1) (\comment ->
-        let normComment = Optionals.map Formatting.normalizeComment comment
-        in (encodeTermAssignment cx env False name1 term1 ts normComment))))
-
--- | Encode a binding as a walrus operator assignment
-encodeBindingAsAssignment :: Typing.InferenceContext -> Bool -> PythonEnvironment.PythonEnvironment -> Core.Binding -> Either Errors.Error Syntax.NamedExpression
-encodeBindingAsAssignment cx allowThunking env binding =
-
-      let name = Core.bindingName binding
-          term = Core.bindingTerm binding
-          mts = Core.bindingTypeScheme binding
-          pyName = PythonNames.encodeName False Util.CaseConventionLowerSnake env name
-      in (Eithers.bind (encodeTermInline cx env False term) (\pbody ->
-        let tc = PythonEnvironment.pythonEnvironmentGraph env
-            isComplexVar = Predicates.isComplexVariable tc name
-            termIsComplex = Predicates.isComplexTerm tc term
-            isTrivial = Predicates.isTrivialTerm term
-            needsThunk =
-                    Logic.ifElse isTrivial False (Optionals.match mts (Logic.and allowThunking (Logic.or isComplexVar termIsComplex)) (\ts -> Logic.and allowThunking (Logic.and (Equality.equal (Arity.typeSchemeArity ts) 0) (Logic.or isComplexVar termIsComplex))))
-            pterm = makeLazy pbody
-        in (Right (Syntax.NamedExpressionAssignment (Syntax.AssignmentExpression {
-          Syntax.assignmentExpressionName = pyName,
-          Syntax.assignmentExpressionExpression = pterm})))))
-
--- | Encode bindings as function definitions
-encodeBindingsAsDefs :: t0 -> (t0 -> t1 -> Either t2 t3) -> [t1] -> Either t2 [t3]
-encodeBindingsAsDefs env encodeBinding bindings = Eithers.mapList (encodeBinding env) bindings
-
--- | Encode the default (wildcard) case block for a match statement
-encodeDefaultCaseBlock :: (t0 -> Either t1 Syntax.Expression) -> Bool -> Maybe t0 -> Core.Name -> Either t1 [Syntax.CaseBlock]
-encodeDefaultCaseBlock termToExpr isFull mdflt tname =
-    Eithers.bind (Optionals.match mdflt (Right (Logic.ifElse isFull (Utils.raiseAssertionError "Unreachable: all variants handled") (Utils.raiseTypeError (Strings.concat2 "Unsupported " (Names.localNameOf tname))))) (\d -> Eithers.bind (termToExpr d) (\pyexpr -> Right (Utils.returnSingle pyexpr)))) (\stmt ->
-      let patterns = Utils.pyClosedPatternToPyPatterns Syntax.ClosedPatternWildcard
-          body = Utils.indentedBlock Nothing [
-                [
-                  stmt]]
-      in (Right [
-        Syntax.CaseBlock {
-          Syntax.caseBlockPatterns = patterns,
-          Syntax.caseBlockGuard = Nothing,
-          Syntax.caseBlockBody = body}]))
-
--- | Encode a definition (term or type) to Python statements
-encodeDefinition :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Packaging.Definition -> Either Errors.Error [[Syntax.Statement]]
-encodeDefinition cx env def_ =
-    case def_ of
-      Packaging.DefinitionTerm v0 ->
-        let name = Packaging.termDefinitionName v0
-            term = Packaging.termDefinitionBody v0
-            typ =
-                    Optionals.match (Packaging.termDefinitionSignature v0) (Core.TypeScheme {
-                      Core.typeSchemeVariables = [],
-                      Core.typeSchemeBody = (Core.TypeVariable (Core.Name "hydra.core.Unit")),
-                      Core.typeSchemeConstraints = Maps.empty}) (\sig -> Scoping.termSignatureToTypeScheme sig)
-        in (Eithers.bind (Annotations.getTermDescription cx (pythonEnvironmentGetGraph env) term) (\comment ->
-          let normComment = Optionals.map Formatting.normalizeComment comment
-          in (Eithers.bind (encodeTermAssignment cx env True name term typ normComment) (\stmt -> Right [
-            [
-              stmt]]))))
-      Packaging.DefinitionType v0 ->
-        let name = Packaging.typeDefinitionName v0
-            typ = Core.typeSchemeBody (Packaging.typeDefinitionBody v0)
-        in (Eithers.bind (Annotations.getTypeDescription cx (pythonEnvironmentGetGraph env) typ) (\comment ->
-          let normComment = Optionals.map Formatting.normalizeComment comment
-          in (encodeTypeAssignment cx env name typ normComment)))
-
--- | Encode an enum value assignment statement with optional comment
-encodeEnumValueAssignment :: t0 -> PythonEnvironment.PythonEnvironment -> Core.FieldType -> Either Errors.Error [Syntax.Statement]
-encodeEnumValueAssignment cx env fieldType =
-
-      let fname = Core.fieldTypeName fieldType
-          ftype = Core.fieldTypeType fieldType
-      in (Eithers.bind (Annotations.getTypeDescription cx (pythonEnvironmentGetGraph env) ftype) (\mcomment ->
-        let pyName = PythonNames.encodeEnumValue env fname
-            fnameStr = Core.unName fname
-            pyValue =
-                    Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionPascal env (Core.Name "hydra.core.Name"))) [
-                      Utils.doubleQuotedString fnameStr]
-            assignStmt = Utils.assignmentStatement pyName pyValue
-        in (Right (Optionals.match mcomment [
-          assignStmt] (\c -> [
-          assignStmt,
-          (Utils.pyExpressionToPyStatement (Utils.tripleQuotedString c))])))))
-
--- | Encode a field (name-value pair) to a Python (Name, Expression) pair
-encodeField :: t0 -> PythonEnvironment.PythonEnvironment -> Core.Field -> (Core.Term -> Either t1 t2) -> Either t1 (Syntax.Name, t2)
-encodeField cx env field termToExpr =
-
-      let fname = Core.fieldName field
-          fterm = Core.fieldTerm field
-      in (Eithers.bind (termToExpr fterm) (\pterm -> Right (PythonNames.encodeFieldName env fname, pterm)))
-
--- | Encode a field type for record definitions (field: type annotation)
-encodeFieldType :: t0 -> PythonEnvironment.PythonEnvironment -> Core.FieldType -> Either Errors.Error Syntax.Statement
-encodeFieldType cx env fieldType =
-
-      let fname = Core.fieldTypeName fieldType
-          ftype = Core.fieldTypeType fieldType
-      in (Eithers.bind (Annotations.getTypeDescription cx (pythonEnvironmentGetGraph env) ftype) (\comment ->
-        let pyName = Syntax.SingleTargetName (PythonNames.encodeFieldName env fname)
-        in (Eithers.bind (encodeType env ftype) (\pyType ->
-          let annotatedPyType = Utils.annotatedExpression comment pyType
-          in (Right (Utils.pyAssignmentToPyStatement (Syntax.AssignmentTyped (Syntax.TypedAssignment {
-            Syntax.typedAssignmentLhs = pyName,
-            Syntax.typedAssignmentType = annotatedPyType,
-            Syntax.typedAssignmentRhs = Nothing}))))))))
-
--- | Encode a float value to a Python expression
-encodeFloatValue :: Core.FloatValue -> Either t0 Syntax.Expression
-encodeFloatValue fv =
-    case fv of
-      Core.FloatValueFloat32 v0 -> encodeFloatValueEncodeFloat32 v0
-      Core.FloatValueFloat64 v0 -> encodeFloatValueEncodeFloat64 v0
-
-encodeFloatValueEncodeFloat32 :: Float -> Either t0 Syntax.Expression
-encodeFloatValueEncodeFloat32 v =
-
-      let s = Literals.printFloat32 v
-      in (Logic.ifElse (Equality.equal s "NaN") (Right (encodeFloatValuePySpecialFloat "nan")) (Logic.ifElse (Equality.equal s "Infinity") (Right (encodeFloatValuePySpecialFloat "inf")) (Logic.ifElse (Equality.equal s "-Infinity") (Right (encodeFloatValuePySpecialFloat "-inf")) (Right (Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberFloat (Literals.float32ToFloat64 v))))))))
-
-encodeFloatValueEncodeFloat64 :: Double -> Either t0 Syntax.Expression
-encodeFloatValueEncodeFloat64 v =
-
-      let s = Literals.printFloat64 v
-      in (Logic.ifElse (Equality.equal s "NaN") (Right (encodeFloatValuePySpecialFloat "nan")) (Logic.ifElse (Equality.equal s "Infinity") (Right (encodeFloatValuePySpecialFloat "inf")) (Logic.ifElse (Equality.equal s "-Infinity") (Right (encodeFloatValuePySpecialFloat "-inf")) (Logic.ifElse (Equality.equal s "-0.0") (Right (encodeFloatValuePySpecialFloat "-0.0")) (Right (Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberFloat v))))))))
-
-encodeFloatValuePySpecialFloat :: String -> Syntax.Expression
-encodeFloatValuePySpecialFloat value =
-    Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "float")) [
-      Utils.singleQuotedString value]
-
--- | Encode a forall type to Python expression
-encodeForallType :: PythonEnvironment.PythonEnvironment -> Core.ForallType -> Either t0 Syntax.Expression
-encodeForallType env lt =
-
-      let gatherParams =
-              \t -> \ps -> case (Strip.deannotateType t) of
-                Core.TypeForall v0 -> gatherParams (Core.forallTypeBody v0) (Lists.cons (Core.forallTypeParameter v0) ps)
-                Core.TypeAnnotated _ -> (t, (Lists.reverse ps))
-                Core.TypeApplication _ -> (t, (Lists.reverse ps))
-                Core.TypeEffect _ -> (t, (Lists.reverse ps))
-                Core.TypeFunction _ -> (t, (Lists.reverse ps))
-                Core.TypeList _ -> (t, (Lists.reverse ps))
-                Core.TypeLiteral _ -> (t, (Lists.reverse ps))
-                Core.TypeMap _ -> (t, (Lists.reverse ps))
-                Core.TypeOptional _ -> (t, (Lists.reverse ps))
-                Core.TypeEither _ -> (t, (Lists.reverse ps))
-                Core.TypePair _ -> (t, (Lists.reverse ps))
-                Core.TypeRecord _ -> (t, (Lists.reverse ps))
-                Core.TypeSet _ -> (t, (Lists.reverse ps))
-                Core.TypeUnion _ -> (t, (Lists.reverse ps))
-                Core.TypeUnit -> (t, (Lists.reverse ps))
-                Core.TypeVariable _ -> (t, (Lists.reverse ps))
-                Core.TypeVoid -> (t, (Lists.reverse ps))
-                Core.TypeWrap _ -> (t, (Lists.reverse ps))
-          bodyAndParams = gatherParams (Core.TypeForall lt) []
-          body = Pairs.first bodyAndParams
-          params = Pairs.second bodyAndParams
-      in (Eithers.bind (encodeType env body) (\pyBody -> Right (Utils.primaryAndParams (Utils.pyExpressionToPyPrimary pyBody) (Lists.map (\n -> Syntax.ExpressionSimple (Syntax.Disjunction [
-        Syntax.Conjunction [
-          Syntax.InversionSimple (Syntax.Comparison {
-            Syntax.comparisonLhs = Syntax.BitwiseOr {
-              Syntax.bitwiseOrLhs = Nothing,
-              Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
-                Syntax.bitwiseXorLhs = Nothing,
-                Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
-                  Syntax.bitwiseAndLhs = Nothing,
-                  Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
-                    Syntax.shiftExpressionLhs = Nothing,
-                    Syntax.shiftExpressionRhs = Syntax.Sum {
-                      Syntax.sumLhs = Nothing,
-                      Syntax.sumRhs = Syntax.Term {
-                        Syntax.termLhs = Nothing,
-                        Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
-                          Syntax.powerLhs = Syntax.AwaitPrimary {
-                            Syntax.awaitPrimaryAwait = False,
-                            Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name (Core.unName n))))},
-                          Syntax.powerRhs = Nothing}))}}}}}},
-            Syntax.comparisonRhs = []})]])) params))))
-
--- | Encode a function type to Python Callable expression
-encodeFunctionType :: PythonEnvironment.PythonEnvironment -> Core.FunctionType -> Either t0 Syntax.Expression
-encodeFunctionType env ft =
-
-      let gatherParams =
-              \rdoms -> \ftype ->
-                let innerCod = Core.functionTypeCodomain ftype
-                    dom = Core.functionTypeDomain ftype
-                in case (Strip.deannotateType innerCod) of
-                  Core.TypeFunction v0 -> gatherParams (Lists.cons dom rdoms) v0
-                  Core.TypeAnnotated _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeApplication _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeEffect _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeForall _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeList _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeLiteral _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeMap _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeOptional _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeEither _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypePair _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeRecord _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeSet _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeUnion _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeUnit -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeVariable _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeVoid -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-                  Core.TypeWrap _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
-          domsAndCod = gatherParams [] ft
-          doms = Pairs.first domsAndCod
-          cod = Pairs.second domsAndCod
-      in (Eithers.bind (Eithers.mapList (encodeType env) doms) (\pydoms -> Eithers.bind (encodeType env cod) (\pycod -> Right (Utils.pyPrimaryToPyExpression (Utils.primaryWithSlices (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Callable"))) (Utils.pyPrimaryToPySlice (Syntax.PrimarySimple (Syntax.AtomList (Utils.pyList pydoms)))) [
-        Syntax.SliceOrStarredExpressionSlice (Utils.pyExpressionToPySlice pycod)])))))
-
--- | Encode an integer value to a Python expression
-encodeIntegerValue :: Core.IntegerValue -> Either t0 Syntax.Expression
-encodeIntegerValue iv =
-
-      let toPyInt = \n -> Right (Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberInteger n)))
-      in case iv of
-        Core.IntegerValueBigint v0 -> toPyInt v0
-        Core.IntegerValueInt8 v0 -> toPyInt (Literals.int8ToBigint v0)
-        Core.IntegerValueInt16 v0 -> toPyInt (Literals.int16ToBigint v0)
-        Core.IntegerValueInt32 v0 -> toPyInt (Literals.int32ToBigint v0)
-        Core.IntegerValueInt64 v0 -> toPyInt (Literals.int64ToBigint v0)
-        Core.IntegerValueUint8 v0 -> toPyInt (Literals.uint8ToBigint v0)
-        Core.IntegerValueUint16 v0 -> toPyInt (Literals.uint16ToBigint v0)
-        Core.IntegerValueUint32 v0 -> toPyInt (Literals.uint32ToBigint v0)
-        Core.IntegerValueUint64 v0 -> toPyInt (Literals.uint64ToBigint v0)
-
--- | Encode a literal value to a Python expression
-encodeLiteral :: Core.Literal -> Either t0 Syntax.Expression
-encodeLiteral lit =
-    case lit of
-      Core.LiteralBinary v0 ->
-        let byteValues = Literals.binaryToBytes v0
-        in (Right (Utils.functionCall (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "bytes"))) [
-          Utils.pyAtomToPyExpression (Syntax.AtomList (Utils.pyList (Lists.map (\byteVal -> Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberInteger (Literals.int32ToBigint byteVal)))) byteValues)))]))
-      Core.LiteralBoolean v0 -> Right (Utils.pyAtomToPyExpression (Logic.ifElse v0 Syntax.AtomTrue Syntax.AtomFalse))
-      Core.LiteralDecimal v0 -> Right (Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "Decimal")) [
-        Utils.singleQuotedString (Literals.printDecimal v0)])
-      Core.LiteralFloat v0 -> encodeFloatValue v0
-      Core.LiteralInteger v0 -> encodeIntegerValue v0
-      Core.LiteralString v0 -> Right (Utils.stringToPyExpression Syntax.QuoteStyleDouble v0)
-
--- | Encode a literal type to a Python type expression
-encodeLiteralType :: Core.LiteralType -> Either t0 Syntax.Expression
-encodeLiteralType lt =
-
-      let findName =
-              case lt of
-                Core.LiteralTypeBinary -> "bytes"
-                Core.LiteralTypeBoolean -> "bool"
-                Core.LiteralTypeDecimal -> "Decimal"
-                Core.LiteralTypeFloat v0 -> case v0 of
-                  Core.FloatTypeFloat32 -> "float"
-                  Core.FloatTypeFloat64 -> "float"
-                Core.LiteralTypeInteger _ -> "int"
-                Core.LiteralTypeString -> "str"
-      in (Right (Syntax.ExpressionSimple (Syntax.Disjunction [
-        Syntax.Conjunction [
-          Syntax.InversionSimple (Syntax.Comparison {
-            Syntax.comparisonLhs = Syntax.BitwiseOr {
-              Syntax.bitwiseOrLhs = Nothing,
-              Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
-                Syntax.bitwiseXorLhs = Nothing,
-                Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
-                  Syntax.bitwiseAndLhs = Nothing,
-                  Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
-                    Syntax.shiftExpressionLhs = Nothing,
-                    Syntax.shiftExpressionRhs = Syntax.Sum {
-                      Syntax.sumLhs = Nothing,
-                      Syntax.sumRhs = Syntax.Term {
-                        Syntax.termLhs = Nothing,
-                        Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
-                          Syntax.powerLhs = Syntax.AwaitPrimary {
-                            Syntax.awaitPrimaryAwait = False,
-                            Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name findName)))},
-                          Syntax.powerRhs = Nothing}))}}}}}},
-            Syntax.comparisonRhs = []})]])))
-
--- | Generate name constants for a type as class-level attributes
-encodeNameConstants :: PythonEnvironment.PythonEnvironment -> Core.Name -> [Core.FieldType] -> [Syntax.Statement]
-encodeNameConstants env name fields =
-
-      let toStmt =
-              \pair -> Utils.assignmentStatement (Pairs.first pair) (Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionPascal env (Core.Name "hydra.core.Name"))) [
-                Utils.doubleQuotedString (Core.unName (Pairs.second pair))])
-          namePair = (PythonNames.encodeConstantForTypeName env name, name)
-          fieldPairs =
-                  Lists.map (\field -> (PythonNames.encodeConstantForFieldName env name (Core.fieldTypeName field), (Core.fieldTypeName field))) fields
-      in (Lists.map toStmt (Lists.cons namePair fieldPairs))
-
--- | Encode a Hydra module to a Python module AST, given the on-disk overlay-existence set (#630) driving emission-time primitive-reference redirects
-encodePythonModule :: S.Set String -> Typing.InferenceContext -> Graph.Graph -> Packaging.Module -> [Packaging.Definition] -> Either Errors.Error Syntax.Module
-encodePythonModule overlaySubs cx g mod defs0 =
-
-      let defs = Environment.reorderDefs defs0
-          meta0 = gatherMetadata overlaySubs (Packaging.moduleName mod) defs
-          namespaces0 = PythonEnvironment.pythonModuleMetadataNamespaces meta0
-          env0 = initialEnvironment namespaces0 g overlaySubs
-          isTypeMod = isTypeModuleCheck defs0
-      in (withDefinitions env0 defs (\env -> Eithers.bind (Eithers.map (\xs -> Lists.concat xs) (Eithers.mapList (\d -> encodeDefinition cx env d) defs)) (\defStmts ->
-        let meta2 = Logic.ifElse (Logic.and (Logic.not isTypeMod) useInlineTypeParams) (setMetaUsesTypeVar meta0 False) meta0
-            meta =
-                    Logic.ifElse (Logic.and isTypeMod (Equality.equal targetPythonVersion PythonEnvironment.PythonVersionPython310)) (setMetaUsesTypeAlias meta2 True) meta2
-            namespaces = PythonEnvironment.pythonModuleMetadataNamespaces meta0
-            commentStmts =
-                    Optionals.match (Optionals.map Formatting.normalizeComment (Optionals.bind (Packaging.moduleMetadata mod) (\em -> Packaging.entityMetadataDescription em))) [] (\c -> [
-                      Utils.commentStatement c])
-            importStmts = moduleImports namespaces meta
-            tvars =
-                    Logic.ifElse (Logic.or isTypeMod (Logic.not useInlineTypeParams)) (PythonEnvironment.pythonModuleMetadataTypeVariables meta) Sets.empty
-            tvarStmts = Lists.map (\tv -> tvarStatement (PythonNames.encodeTypeVariable tv)) (Sets.toList tvars)
-            body =
-                    Lists.filter (\group -> Logic.not (Lists.isEmpty group)) (Lists.concat [
-                      [
-                        commentStmts,
-                        importStmts,
-                        tvarStmts],
-                      defStmts])
-        in (Right (Syntax.Module body)))))
-
--- | Encode a record type as a Python dataclass
-encodeRecordType :: t0 -> PythonEnvironment.PythonEnvironment -> Core.Name -> [Core.FieldType] -> Maybe String -> Either Errors.Error Syntax.Statement
-encodeRecordType cx env name rowType comment =
-    Eithers.bind (Eithers.mapList (encodeFieldType cx env) rowType) (\pyFields ->
-      let constStmts = encodeNameConstants env name rowType
-          withMethods = Lists.map (recordWithMethod env) rowType
-          boundVars = PythonEnvironment.pythonEnvironmentBoundTypeVariables env
-          tparamList = Pairs.first boundVars
-          mGenericArg = genericArg tparamList
-          args = Optionals.match mGenericArg Nothing (\a -> Just (Utils.pyExpressionsToPyArgs [
-                a]))
-          decs = Just (Syntax.Decorators [
-                dataclassDecorator])
-          pyName = PythonNames.encodeName False Util.CaseConventionPascal env name
-          noTypeParams = []
-      in (Eithers.bind (recordBuilderClass env name rowType args) (\builderStmts ->
-        let body =
-                Utils.indentedBlock comment [
-                  pyFields,
-                  constStmts,
-                  withMethods,
-                  builderStmts]
-        in (Right (Utils.pyClassDefinitionToPyStatement (Syntax.ClassDefinition {
-          Syntax.classDefinitionDecorators = decs,
-          Syntax.classDefinitionName = pyName,
-          Syntax.classDefinitionTypeParams = noTypeParams,
-          Syntax.classDefinitionArguments = args,
-          Syntax.classDefinitionBody = body}))))))
-
--- | Encode a term assignment to a Python statement
-encodeTermAssignment :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Bool -> Core.Name -> Core.Term -> Core.TypeScheme -> Maybe String -> Either Errors.Error Syntax.Statement
-encodeTermAssignment cx env topLevel name term ts comment =
-    Eithers.bind (analyzePythonFunction cx env term) (\fs ->
-      let tparams = Typing.functionStructureTypeParams fs
-          params = Typing.functionStructureParams fs
-          bindings = Typing.functionStructureBindings fs
-          body = Typing.functionStructureBody fs
-          domsRaw = Typing.functionStructureDomains fs
-          sigTermSig = Scoping.typeSchemeToTermSignature ts
-          sigParamTypes = Lists.map (\p -> Typing.parameterType p) (Typing.termSignatureParameters sigTermSig)
-          sigResult = Typing.termSignatureResult sigTermSig
-          sigCod = Typing.resultType sigResult
-          doms = fillDomsFromSignature domsRaw sigParamTypes
-          mcod = Just sigCod
-          env2 = Typing.functionStructureEnvironment fs
-          tc = PythonEnvironment.pythonEnvironmentGraph env2
-          binding =
-                  Core.Binding {
-                    Core.bindingName = name,
-                    Core.bindingTerm = term,
-                    Core.bindingTypeScheme = (Just ts)}
-          isComplex = Predicates.isComplexBinding tc binding
-          isTrivial = Predicates.isTrivialTerm term
-      in (Logic.ifElse (Logic.and isComplex (Logic.not isTrivial)) (Logic.ifElse (Logic.and (Logic.not topLevel) (Lists.isEmpty params)) (Eithers.bind (encodeTermInline cx env2 False term) (\bodyExpr ->
-        let pyName = PythonNames.encodeName False Util.CaseConventionLowerSnake env2 name
-            lazyExpr = makeLazy bodyExpr
-        in (Right (Utils.annotatedStatement comment (Utils.assignmentStatement pyName lazyExpr))))) (Eithers.bind (Eithers.mapList (encodeBindingAs cx env2) bindings) (\bindingStmts -> functionDefinitionToExpr cx env2 name tparams params body doms mcod comment bindingStmts))) (Eithers.bind (encodeTermInline cx env2 False body) (\bodyExpr ->
-        let pyName = PythonNames.encodeName False Util.CaseConventionLowerSnake env2 name
-        in (Right (Utils.annotatedStatement comment (Utils.assignmentStatement pyName bodyExpr)))))))
-
--- | Encode a term to a Python expression (inline form)
-encodeTermInline :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Bool -> Core.Term -> Either Errors.Error Syntax.Expression
-encodeTermInline cx env noCast term =
-
-      let encode = \t -> encodeTermInline cx env False t
-          stripTypeApps =
-                  \t -> case t of
-                    Core.TermAnnotated v0 -> stripTypeApps (Core.annotatedTermBody v0)
-                    Core.TermTypeApplication v0 -> stripTypeApps (Core.typeApplicationTermBody v0)
-                    _ -> t
-          withCast =
-                  \pyexp -> Logic.ifElse (Logic.or noCast (PythonEnvironment.pythonEnvironmentSkipCasts env)) (Right pyexp) (
-                    let tc = PythonEnvironment.pythonEnvironmentGraph env
-                        mtyp = Eithers.map (\_r -> Pairs.first _r) (Checking.typeOf cx tc [] term)
-                    in (Eithers.either (\_ -> Right pyexp) (\typ -> Eithers.either (\_ -> Right pyexp) (\pytyp -> Right (Utils.castTo pytyp pyexp)) (encodeType env typ)) mtyp))
-      in case (Strip.deannotateAndDetypeTerm term) of
-        Core.TermApplication v0 -> encodeApplication cx env v0
-        Core.TermEither v0 -> Eithers.either (\t1 -> Eithers.bind (encode t1) (\pyexp -> withCast (Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "Left")) [
-          pyexp]))) (\t1 -> Eithers.bind (encode t1) (\pyexp -> withCast (Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "Right")) [
-          pyexp]))) v0
-        Core.TermLambda v0 -> Eithers.bind (analyzePythonFunction cx env (Core.TermLambda v0)) (\fs ->
-          let params = Typing.functionStructureParams fs
-              bindings = Typing.functionStructureBindings fs
-              innerBody = Typing.functionStructureBody fs
-              innerEnv0 = Typing.functionStructureEnvironment fs
-              bindingNames = Lists.map (\b -> Core.bindingName b) bindings
-              innerEnv =
-                      PythonEnvironment.PythonEnvironment {
-                        PythonEnvironment.pythonEnvironmentNamespaces = (PythonEnvironment.pythonEnvironmentNamespaces innerEnv0),
-                        PythonEnvironment.pythonEnvironmentBoundTypeVariables = (PythonEnvironment.pythonEnvironmentBoundTypeVariables innerEnv0),
-                        PythonEnvironment.pythonEnvironmentGraph = (PythonEnvironment.pythonEnvironmentGraph innerEnv0),
-                        PythonEnvironment.pythonEnvironmentNullaryBindings = (PythonEnvironment.pythonEnvironmentNullaryBindings innerEnv0),
-                        PythonEnvironment.pythonEnvironmentVersion = (PythonEnvironment.pythonEnvironmentVersion innerEnv0),
-                        PythonEnvironment.pythonEnvironmentSkipCasts = (PythonEnvironment.pythonEnvironmentSkipCasts innerEnv0),
-                        PythonEnvironment.pythonEnvironmentInlineVariables = (Sets.union (Sets.fromList bindingNames) (PythonEnvironment.pythonEnvironmentInlineVariables innerEnv0)),
-                        PythonEnvironment.pythonEnvironmentOverlaySubs = (PythonEnvironment.pythonEnvironmentOverlaySubs innerEnv0)}
-          in (Eithers.bind (encodeTermInline cx innerEnv False innerBody) (\pbody ->
-            let pparams = Lists.map (PythonNames.encodeName False Util.CaseConventionLowerSnake innerEnv) params
-            in (Logic.ifElse (Lists.isEmpty bindings) (Right (makeUncurriedLambda pparams pbody)) (Eithers.bind (Eithers.mapList (encodeBindingAsAssignment cx False innerEnv) bindings) (\pbindingExprs ->
-              let pbindingStarExprs = Lists.map (\ne -> Syntax.StarNamedExpressionSimple ne) pbindingExprs
-                  pbodyStarExpr = Utils.pyExpressionToPyStarNamedExpression pbody
-                  tupleElements = Lists.concat2 pbindingStarExprs [
-                        pbodyStarExpr]
-                  tupleExpr = Utils.pyAtomToPyExpression (Syntax.AtomTuple (Syntax.Tuple tupleElements))
-                  indexValue =
-                          Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberInteger (Literals.int32ToBigint (Lists.length bindings))))
-                  indexedExpr = Utils.primaryWithExpressionSlices (Utils.pyExpressionToPyPrimary tupleExpr) [
-                        indexValue]
-              in (Right (makeUncurriedLambda pparams (Utils.pyPrimaryToPyExpression indexedExpr)))))))))
-        Core.TermProject v0 ->
-          let fname = Core.projectionFieldName v0
-          in (Right (makeCurriedLambda [
-            Syntax.Name "v1"] (Utils.projectFromExpression (Syntax.ExpressionSimple (Syntax.Disjunction [
-            Syntax.Conjunction [
-              Syntax.InversionSimple (Syntax.Comparison {
-                Syntax.comparisonLhs = Syntax.BitwiseOr {
-                  Syntax.bitwiseOrLhs = Nothing,
-                  Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
-                    Syntax.bitwiseXorLhs = Nothing,
-                    Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
-                      Syntax.bitwiseAndLhs = Nothing,
-                      Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
-                        Syntax.shiftExpressionLhs = Nothing,
-                        Syntax.shiftExpressionRhs = Syntax.Sum {
-                          Syntax.sumLhs = Nothing,
-                          Syntax.sumRhs = Syntax.Term {
-                            Syntax.termLhs = Nothing,
-                            Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
-                              Syntax.powerLhs = Syntax.AwaitPrimary {
-                                Syntax.awaitPrimaryAwait = False,
-                                Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "v1")))},
-                              Syntax.powerRhs = Nothing}))}}}}}},
-                Syntax.comparisonRhs = []})]])) (PythonNames.encodeFieldName env fname))))
-        Core.TermUnwrap _ -> Right (makeCurriedLambda [
-          Syntax.Name "v1"] (Utils.projectFromExpression (Syntax.ExpressionSimple (Syntax.Disjunction [
-          Syntax.Conjunction [
-            Syntax.InversionSimple (Syntax.Comparison {
-              Syntax.comparisonLhs = Syntax.BitwiseOr {
-                Syntax.bitwiseOrLhs = Nothing,
-                Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
-                  Syntax.bitwiseXorLhs = Nothing,
-                  Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
-                    Syntax.bitwiseAndLhs = Nothing,
-                    Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
-                      Syntax.shiftExpressionLhs = Nothing,
-                      Syntax.shiftExpressionRhs = Syntax.Sum {
-                        Syntax.sumLhs = Nothing,
-                        Syntax.sumRhs = Syntax.Term {
-                          Syntax.termLhs = Nothing,
-                          Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
-                            Syntax.powerLhs = Syntax.AwaitPrimary {
-                              Syntax.awaitPrimaryAwait = False,
-                              Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "v1")))},
-                            Syntax.powerRhs = Nothing}))}}}}}},
-              Syntax.comparisonRhs = []})]])) (Syntax.Name "value")))
-        Core.TermCases _ -> Right (unsupportedExpression "case expressions as values are not yet supported")
-        Core.TermLet v0 ->
-          let bindings = Core.letBindings v0
-              body = Core.letBody v0
-          in (Logic.ifElse (Lists.isEmpty bindings) (encodeTermInline cx env False body) (withLetInline env v0 (\innerEnv -> Eithers.bind (Eithers.mapList (encodeBindingAsAssignment cx False innerEnv) bindings) (\pbindingExprs -> Eithers.bind (encodeTermInline cx innerEnv False body) (\pbody ->
-            let pbindingStarExprs = Lists.map (\ne -> Syntax.StarNamedExpressionSimple ne) pbindingExprs
-                pbodyStarExpr = Utils.pyExpressionToPyStarNamedExpression pbody
-                tupleElements = Lists.concat2 pbindingStarExprs [
-                      pbodyStarExpr]
-                tupleExpr = Utils.pyAtomToPyExpression (Syntax.AtomTuple (Syntax.Tuple tupleElements))
-                indexValue =
-                        Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberInteger (Literals.int32ToBigint (Lists.length bindings))))
-                indexedExpr = Utils.primaryWithExpressionSlices (Utils.pyExpressionToPyPrimary tupleExpr) [
-                      indexValue]
-            in (Right (Utils.pyPrimaryToPyExpression indexedExpr)))))))
-        Core.TermList v0 -> Eithers.bind (Eithers.mapList encode v0) (\pyExprs ->
-          let consListOf = Utils.projectFromExpression (Utils.pyNameToPyExpression (Syntax.Name "ConsList")) (Syntax.Name "of")
-          in (Right (Utils.functionCall (Utils.pyExpressionToPyPrimary consListOf) pyExprs)))
-        Core.TermLiteral v0 -> encodeLiteral v0
-        Core.TermMap v0 -> Eithers.bind (Eithers.mapList (\kv ->
-          let k = Pairs.first kv
-              v = Pairs.second kv
-          in (Eithers.bind (encode k) (\pyK -> Eithers.bind (encode v) (\pyV -> Right (Utils.pyAtomToPyExpression (Syntax.AtomTuple (Syntax.Tuple [
-            Utils.pyExpressionToPyStarNamedExpression pyK,
-            (Utils.pyExpressionToPyStarNamedExpression pyV)]))))))) (Maps.toList v0)) (\tuplePairs ->
-          let pmapOfEntries =
-                  Utils.projectFromExpression (Utils.pyNameToPyExpression (Syntax.Name "PersistentMap")) (Syntax.Name "of_entries")
-          in (Right (Utils.functionCall (Utils.pyExpressionToPyPrimary pmapOfEntries) tuplePairs)))
-        Core.TermOptional v0 -> Optionals.match v0 (Right (Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "None_")) [])) (\t1 -> Eithers.bind (encode t1) (\pyexp -> withCast (Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "Given")) [
-          pyexp])))
-        Core.TermPair v0 ->
-          let t1 = Pairs.first v0
-              t2 = Pairs.second v0
-          in (Eithers.bind (encode t1) (\pyExpr1 -> Eithers.bind (encode t2) (\pyExpr2 -> Right (Utils.pyAtomToPyExpression (Syntax.AtomTuple (Syntax.Tuple [
-            Utils.pyExpressionToPyStarNamedExpression pyExpr1,
-            (Utils.pyExpressionToPyStarNamedExpression pyExpr2)]))))))
-        Core.TermRecord v0 ->
-          let tname = Core.recordTypeName v0
-              fields = Core.recordFields v0
-          in (Eithers.bind (Eithers.mapList (\fld -> encode (Core.fieldTerm fld)) fields) (\pargs -> Right (Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeNameQualified env tname)) pargs)))
-        Core.TermSet v0 -> Eithers.bind (Eithers.mapList encode (Sets.toList v0)) (\pyEls ->
-          let psetOf = Utils.projectFromExpression (Utils.pyNameToPyExpression (Syntax.Name "PersistentSet")) (Syntax.Name "of")
-          in (Right (Utils.functionCall (Utils.pyExpressionToPyPrimary psetOf) pyEls)))
-        Core.TermTypeApplication v0 ->
-          let body = Core.typeApplicationTermBody v0
-          in (Eithers.bind (encodeTermInline cx env True (stripTypeApps body)) (\pybase -> withCast pybase))
-        Core.TermTypeLambda v0 ->
-          let body = Core.typeLambdaBody v0
-          in (withTypeLambda env v0 (\env2 -> encodeTermInline cx env2 noCast body))
-        Core.TermInject v0 ->
-          let tname = Core.injectionTypeName v0
-              field = Core.injectionField v0
-          in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt -> Logic.ifElse (Predicates.isEnumRowType rt) (Right (Utils.projectFromExpression (Utils.pyNameToPyExpression (PythonNames.encodeNameQualified env tname)) (PythonNames.encodeEnumValue env (Core.fieldName field)))) (
-            let fname = Core.fieldName field
-                isUnitVariant =
-                        Optionals.match (Lists.find (\ft -> Equality.equal (Core.unName (Core.fieldTypeName ft)) (Core.unName fname)) rt) False (\ft -> Predicates.isUnitType (Strip.deannotateType (Core.fieldTypeType ft)))
-            in (Eithers.bind (Logic.ifElse (Logic.or (Predicates.isUnitTerm (Core.fieldTerm field)) isUnitVariant) (Right []) (Eithers.bind (encode (Core.fieldTerm field)) (\parg -> Right [
-              parg]))) (\args ->
-              let deconflictedName = deconflictVariantName True env tname fname (PythonEnvironment.pythonEnvironmentGraph env)
-              in (Right (Utils.castTo (PythonNames.typeVariableReference env tname) (Utils.functionCall (Utils.pyNameToPyPrimary deconflictedName) args))))))))
-        Core.TermUnit -> Right (Utils.pyNameToPyExpression Utils.pyNone)
-        Core.TermVariable v0 -> encodeVariable cx env v0 []
-        Core.TermWrap v0 ->
-          let tname = Core.wrappedTermTypeName v0
-              inner = Core.wrappedTermBody v0
-          in (Eithers.bind (encode inner) (\parg -> Right (Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeNameQualified env tname)) [
-            parg])))
-
--- | Encode a term to a list of statements with return as final statement
-encodeTermMultiline :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Core.Term -> Either Errors.Error [Syntax.Statement]
-encodeTermMultiline cx env term =
-
-      let dfltLogic =
-              Eithers.bind (analyzePythonFunction cx env term) (\fs ->
-                let params = Typing.functionStructureParams fs
-                    bindings = Typing.functionStructureBindings fs
-                    innerBody = Typing.functionStructureBody fs
-                    env2 = Typing.functionStructureEnvironment fs
-                in (Logic.ifElse (Lists.isEmpty bindings) (Eithers.bind (encodeTermInline cx env False term) (\expr -> Right [
-                  Utils.returnSingle expr])) (Eithers.bind (Eithers.mapList (encodeBindingAs cx env2) bindings) (\bindingStmts -> Eithers.bind (encodeTermMultiline cx env2 innerBody) (\bodyStmts -> Right (Lists.concat2 bindingStmts bodyStmts))))))
-          gathered = Analysis.gatherApplications term
-          args = Pairs.first gathered
-          body = Pairs.second gathered
-      in (Logic.ifElse (Equality.equal (Lists.length args) 1) (
-        let arg = Optionals.withDefault Core.TermUnit (Lists.head args)
-        in case (Strip.deannotateAndDetypeTerm body) of
-          Core.TermCases v0 ->
-            let tname = Core.caseStatementTypeName v0
-                dflt = Core.caseStatementDefault v0
-                cases_ = Core.caseStatementCases v0
-            in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
-              let isEnum = Predicates.isEnumRowType rt
-                  isFull = isCasesFull rt cases_
-              in (Eithers.bind (encodeTermInline cx env False arg) (\pyArg -> Eithers.bind (Eithers.mapList (caseBlockToExpr cx env tname rt isEnum (\e -> \t -> encodeTermMultiline cx e t)) (deduplicateCaseVariables cases_)) (\pyCases -> Eithers.bind (encodeDefaultCaseBlock (\t -> encodeTermInline cx env False t) isFull dflt tname) (\pyDflt ->
-                let subj = Syntax.SubjectExpressionSimple (Syntax.NamedExpressionSimple pyArg)
-                    matchStmt =
-                            Syntax.StatementCompound (Syntax.CompoundStatementMatch (Syntax.MatchStatement {
-                              Syntax.matchStatementSubject = subj,
-                              Syntax.matchStatementCases = (Lists.concat2 pyCases pyDflt)}))
-                in (Right [
-                  matchStmt])))))))
-          _ -> dfltLogic) dfltLogic)
-
--- | Encode a term body for TCO: tail self-calls become param reassignment + continue
-encodeTermMultilineTCO :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Core.Name -> [Core.Name] -> Core.Term -> Either Errors.Error [Syntax.Statement]
-encodeTermMultilineTCO cx env funcName paramNames term =
-
-      let stripped = Strip.deannotateAndDetypeTerm term
-          gathered = Analysis.gatherApplications stripped
-          gatherArgs = Pairs.first gathered
-          gatherFun = Pairs.second gathered
-          strippedFun = Strip.deannotateAndDetypeTerm gatherFun
-          isSelfCall =
-                  case strippedFun of
-                    Core.TermVariable v0 -> Equality.equal v0 funcName
-                    _ -> False
-      in (Logic.ifElse (Logic.and isSelfCall (Equality.equal (Lists.length gatherArgs) (Lists.length paramNames))) (Eithers.bind (Eithers.mapList (\a -> encodeTermInline cx env False a) gatherArgs) (\pyArgs ->
-        let assignments =
-                Lists.map (\pair ->
-                  let paramName = Pairs.first pair
-                      pyArg = Pairs.second pair
-                  in (Utils.assignmentStatement (PythonNames.encodeName False Util.CaseConventionLowerSnake env paramName) pyArg)) (Lists.zip paramNames pyArgs)
-            continueStmt = Syntax.StatementSimple [
-                  Syntax.SimpleStatementContinue]
-        in (Right (Lists.concat2 assignments [
-          continueStmt])))) (
-        let gathered2 = Analysis.gatherApplications term
-            args2 = Pairs.first gathered2
-            body2 = Pairs.second gathered2
-        in (Logic.ifElse (Equality.equal (Lists.length args2) 1) (
-          let arg = Optionals.withDefault Core.TermUnit (Lists.head args2)
-          in case (Strip.deannotateAndDetypeTerm body2) of
-            Core.TermCases v0 ->
-              let tname = Core.caseStatementTypeName v0
-                  dflt = Core.caseStatementDefault v0
-                  cases_ = Core.caseStatementCases v0
-              in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
-                let isEnum = Predicates.isEnumRowType rt
-                    isFull = isCasesFull rt cases_
-                in (Eithers.bind (encodeTermInline cx env False arg) (\pyArg -> Eithers.bind (Eithers.mapList (caseBlockToExpr cx env tname rt isEnum (\e2 -> \t2 -> encodeTermMultilineTCO cx e2 funcName paramNames t2)) (deduplicateCaseVariables cases_)) (\pyCases -> Eithers.bind (encodeDefaultCaseBlock (\t2 -> encodeTermInline cx env False t2) isFull dflt tname) (\pyDflt ->
-                  let subj = Syntax.SubjectExpressionSimple (Syntax.NamedExpressionSimple pyArg)
-                      matchStmt =
-                              Syntax.StatementCompound (Syntax.CompoundStatementMatch (Syntax.MatchStatement {
-                                Syntax.matchStatementSubject = subj,
-                                Syntax.matchStatementCases = (Lists.concat2 pyCases pyDflt)}))
-                  in (Right [
-                    matchStmt])))))))
-            _ -> Eithers.bind (encodeTermInline cx env False term) (\expr -> Right [
-              Utils.returnSingle expr])) (Eithers.bind (encodeTermInline cx env False term) (\expr -> Right [
-          Utils.returnSingle expr])))))
-
--- | Encode a Hydra type to a Python type expression
-encodeType :: PythonEnvironment.PythonEnvironment -> Core.Type -> Either t0 Syntax.Expression
-encodeType env typ =
-
-      let dflt = Right (Utils.doubleQuotedString (Strings.concat2 "type = " (PrintCore.type_ (Strip.deannotateType typ))))
-      in case (Strip.deannotateType typ) of
-        Core.TypeApplication v0 -> encodeApplicationType env v0
-        Core.TypeFunction v0 -> encodeFunctionType env v0
-        Core.TypeForall v0 -> encodeForallType env v0
-        Core.TypeList v0 -> Eithers.bind (encodeType env v0) (\pyet -> Right (Utils.nameAndParams (Syntax.Name "Sequence") [
-          pyet]))
-        Core.TypeMap v0 -> Eithers.bind (encodeType env (Core.mapTypeKeys v0)) (\pykt -> Eithers.bind (encodeType env (Core.mapTypeValues v0)) (\pyvt -> Right (Utils.nameAndParams (Syntax.Name "Mapping") [
-          pykt,
-          pyvt])))
-        Core.TypeLiteral v0 -> encodeLiteralType v0
-        Core.TypeOptional v0 -> Eithers.bind (encodeType env v0) (\ptype -> Right (Utils.pyPrimaryToPyExpression (Utils.primaryWithExpressionSlices (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Optional"))) [
-          ptype])))
-        Core.TypeEither v0 -> Eithers.bind (encodeType env (Core.eitherTypeLeft v0)) (\pyleft -> Eithers.bind (encodeType env (Core.eitherTypeRight v0)) (\pyright -> Right (Utils.pyPrimaryToPyExpression (Utils.primaryWithExpressionSlices (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Either"))) [
-          pyleft,
-          pyright]))))
-        Core.TypePair v0 -> Eithers.bind (encodeType env (Core.pairTypeFirst v0)) (\pyFirst -> Eithers.bind (encodeType env (Core.pairTypeSecond v0)) (\pySecond -> Right (Utils.nameAndParams (Syntax.Name "tuple") [
-          pyFirst,
-          pySecond])))
-        Core.TypeRecord _ -> dflt
-        Core.TypeSet v0 -> Eithers.bind (encodeType env v0) (\pyet -> Right (Utils.nameAndParams (Syntax.Name "Set") [
-          pyet]))
-        Core.TypeUnion _ -> dflt
-        Core.TypeUnit -> Right (Utils.pyNameToPyExpression Utils.pyNone)
-        Core.TypeVoid -> Right (Utils.pyNameToPyExpression Utils.pyNone)
-        Core.TypeVariable v0 -> Right (PythonNames.typeVariableReference env v0)
-        Core.TypeWrap _ -> dflt
-        Core.TypeAnnotated _ -> dflt
-        Core.TypeEffect v0 -> encodeType env v0
-
--- | Encode a type definition, dispatching based on type structure
-encodeTypeAssignment :: t0 -> PythonEnvironment.PythonEnvironment -> Core.Name -> Core.Type -> Maybe String -> Either Errors.Error [[Syntax.Statement]]
-encodeTypeAssignment cx env name typ comment =
-    Eithers.bind (encodeTypeAssignmentInner cx env name typ comment) (\defStmts -> Right (Lists.map (\s -> [
-      s]) defStmts))
-
--- | Encode the inner type definition, unwrapping forall types
-encodeTypeAssignmentInner :: t0 -> PythonEnvironment.PythonEnvironment -> Core.Name -> Core.Type -> Maybe String -> Either Errors.Error [Syntax.Statement]
-encodeTypeAssignmentInner cx env name typ comment =
-
-      let stripped = Strip.deannotateType typ
-          dflt = Eithers.bind (encodeType env typ) (\typeExpr -> Right (encodeTypeDefSingle env name comment typeExpr))
-      in case stripped of
-        Core.TypeForall v0 ->
-          let tvar = Core.forallTypeParameter v0
-              body = Core.forallTypeBody v0
-              newEnv = extendEnvWithTypeVar env tvar
-          in (encodeTypeAssignmentInner cx newEnv name body comment)
-        Core.TypeRecord v0 -> Eithers.map (\s -> [
-          s]) (encodeRecordType cx env name v0 comment)
-        Core.TypeUnion v0 -> encodeUnionType cx env name v0 comment
-        Core.TypeWrap v0 -> encodeWrappedType env name v0 comment
-        _ -> dflt
-
--- | Encode a simple type alias definition
-encodeTypeDefSingle :: PythonEnvironment.PythonEnvironment -> Core.Name -> Maybe String -> Syntax.Expression -> [Syntax.Statement]
-encodeTypeDefSingle env name comment typeExpr =
-
-      let pyName = PythonNames.encodeName False Util.CaseConventionPascal env name
-          tparams = environmentTypeParameters env
-      in [
-        typeAliasStatementFor env pyName tparams comment typeExpr]
-
--- | Encode a type to a Python expression, quoting if the type has free variables
-encodeTypeQuoted :: PythonEnvironment.PythonEnvironment -> Core.Type -> Either t0 Syntax.Expression
-encodeTypeQuoted env typ =
-    Eithers.bind (encodeType env typ) (\pytype -> Right (Logic.ifElse (Sets.isEmpty (Variables.freeVariablesInType typ)) pytype (Utils.doubleQuotedString (Serialization.printExpr (Serde.expressionToExpr pytype)))))
-
--- | Encode a union elimination as an inline conditional chain (isinstance-based ternary)
-encodeUnionEliminationInline :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Core.CaseStatement -> Syntax.Expression -> Either Errors.Error Syntax.Expression
-encodeUnionEliminationInline cx env cs pyArg =
-
-      let tname = Core.caseStatementTypeName cs
-          mdefault = Core.caseStatementDefault cs
-          cases_ = Core.caseStatementCases cs
-      in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
-        let isEnum = Predicates.isEnumRowType rt
-            valueExpr = Utils.projectFromExpression pyArg (Syntax.Name "value")
-            isinstancePrimary = Utils.pyNameToPyPrimary (Syntax.Name "isinstance")
-        in (Eithers.bind (Optionals.match mdefault (Right (unsupportedExpression "no matching case in inline union elimination")) (\dflt -> encodeTermInline cx env False dflt)) (\pyDefault ->
-          let encodeBranch =
-                  \field ->
-                    let fname = Core.caseAlternativeName field
-                        fterm = Core.caseAlternativeHandler field
-                        isUnitVariant = isVariantUnitType rt fname
-                        pyVariantName = deconflictVariantName True env tname fname (PythonEnvironment.pythonEnvironmentGraph env)
-                        pyTypeName = PythonNames.encodeName True Util.CaseConventionPascal env tname
-                        pyEnumValue = PythonNames.encodeEnumValue env fname
-                        enumMemberExpr =
-                                Utils.pyPrimaryToPyExpression (Syntax.PrimaryCompound (Syntax.PrimaryWithRhs {
-                                  Syntax.primaryWithRhsPrimary = (Utils.pyNameToPyPrimary pyTypeName),
-                                  Syntax.primaryWithRhsRhs = (Syntax.PrimaryRhsProject pyEnumValue)}))
-                        isinstanceCheck =
-                                Logic.ifElse isEnum (Syntax.ExpressionSimple (Syntax.Disjunction [
-                                  Syntax.Conjunction [
-                                    Syntax.InversionSimple (Syntax.Comparison {
-                                      Syntax.comparisonLhs = (Utils.pyExpressionToBitwiseOr pyArg),
-                                      Syntax.comparisonRhs = [
-                                        Syntax.CompareOpBitwiseOrPair {
-                                          Syntax.compareOpBitwiseOrPairOperator = Syntax.CompareOpEq,
-                                          Syntax.compareOpBitwiseOrPairRhs = (Utils.pyExpressionToBitwiseOr enumMemberExpr)}]})]])) (Utils.functionCall isinstancePrimary [
-                                  pyArg,
-                                  (Utils.pyNameToPyExpression pyVariantName)])
-                    in (Eithers.bind (encodeTermInline cx env False fterm) (\pyBranch ->
-                      let pyResult =
-                              Logic.ifElse isEnum (Utils.functionCall (Utils.pyExpressionToPyPrimary pyBranch) [
-                                pyArg]) (Logic.ifElse isUnitVariant (Utils.functionCall (Utils.pyExpressionToPyPrimary pyBranch) [
-                                pyArg]) (Utils.functionCall (Utils.pyExpressionToPyPrimary pyBranch) [
-                                valueExpr]))
-                      in (Right (isinstanceCheck, pyResult))))
-          in (Eithers.bind (Eithers.mapList encodeBranch cases_) (\encodedBranches ->
-            let buildChain =
-                    \elseExpr -> \branchPair ->
-                      let checkExpr = Pairs.first branchPair
-                          resultExpr = Pairs.second branchPair
-                      in (Syntax.ExpressionConditional (Syntax.Conditional {
-                        Syntax.conditionalBody = (Utils.pyExpressionToDisjunction resultExpr),
-                        Syntax.conditionalIf = (Utils.pyExpressionToDisjunction checkExpr),
-                        Syntax.conditionalElse = elseExpr}))
-            in (Right (Lists.foldl buildChain pyDefault (Lists.reverse encodedBranches)))))))))
-
--- | Encode a union field as a variant class
-encodeUnionField :: t0 -> PythonEnvironment.PythonEnvironment -> Core.Name -> Core.FieldType -> Either Errors.Error Syntax.Statement
-encodeUnionField cx env unionName fieldType =
-
-      let fname = Core.fieldTypeName fieldType
-          ftype = Core.fieldTypeType fieldType
-      in (Eithers.bind (Annotations.getTypeDescription cx (pythonEnvironmentGetGraph env) ftype) (\fcomment ->
-        let isUnit = Equality.equal (Strip.deannotateType ftype) Core.TypeUnit
-            isDecimal = Equality.equal (Strip.deannotateType ftype) (Core.TypeLiteral Core.LiteralTypeDecimal)
-            varName = deconflictVariantName False env unionName fname (PythonEnvironment.pythonEnvironmentGraph env)
-            tparamNames = findTypeParams env ftype
-            tparamPyNames = Lists.map PythonNames.encodeTypeVariable tparamNames
-            fieldParams = Lists.map Utils.pyNameToPyTypeParameter tparamPyNames
-            body =
-                    Logic.ifElse isUnit (Utils.indentedBlock fcomment [
-                      Utils.unitVariantMethods varName]) (Logic.ifElse isDecimal (Utils.indentedBlock fcomment [
-                      Utils.decimalVariantMethods]) (Utils.indentedBlock fcomment []))
-        in (Eithers.bind (Logic.ifElse isUnit (Right Nothing) (Eithers.bind (encodeTypeQuoted env ftype) (\quotedType -> Right (Just (variantArgs quotedType []))))) (\margs -> Right (Utils.pyClassDefinitionToPyStatement (Syntax.ClassDefinition {
-          Syntax.classDefinitionDecorators = Nothing,
-          Syntax.classDefinitionName = varName,
-          Syntax.classDefinitionTypeParams = fieldParams,
-          Syntax.classDefinitionArguments = margs,
-          Syntax.classDefinitionBody = body}))))))
-
--- | Encode a union field as a primary expression for | alternatives
-encodeUnionFieldAlt :: PythonEnvironment.PythonEnvironment -> Core.Name -> Core.FieldType -> Syntax.Primary
-encodeUnionFieldAlt env unionName fieldType =
-
-      let fname = Core.fieldTypeName fieldType
-          ftype = Core.fieldTypeType fieldType
-          tparamNames = findTypeParams env ftype
-          tparams = Lists.map PythonNames.encodeTypeVariable tparamNames
-          namePrim = Utils.pyNameToPyPrimary (PythonNames.variantName False env unionName fname)
-      in (Logic.ifElse (Lists.isEmpty tparams) namePrim (
-        let tparamExprs = Lists.map Utils.pyNameToPyExpression tparams
-        in (Utils.primaryWithExpressionSlices namePrim tparamExprs)))
-
--- | Encode a union type as an enum (for unit-only fields) or variant classes
-encodeUnionType :: t0 -> PythonEnvironment.PythonEnvironment -> Core.Name -> [Core.FieldType] -> Maybe String -> Either Errors.Error [Syntax.Statement]
-encodeUnionType cx env name rowType comment =
-    Logic.ifElse (Predicates.isEnumRowType rowType) (Eithers.bind (Eithers.mapList (encodeEnumValueAssignment cx env) rowType) (\vals ->
-      let body = Utils.indentedBlock comment vals
-          enumName = Syntax.Name "Enum"
-          args = Just (Utils.pyExpressionsToPyArgs [
-                Utils.pyNameToPyExpression enumName])
-          pyName = PythonNames.encodeName False Util.CaseConventionPascal env name
-          typeConstStmt =
-                  Utils.dottedAssignmentStatement pyName (PythonNames.encodeConstantForTypeName env name) (Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionPascal env (Core.Name "hydra.core.Name"))) [
-                    Utils.doubleQuotedString (Core.unName name)])
-      in (Right [
-        Utils.pyClassDefinitionToPyStatement (Syntax.ClassDefinition {
-          Syntax.classDefinitionDecorators = Nothing,
-          Syntax.classDefinitionName = pyName,
-          Syntax.classDefinitionTypeParams = [],
-          Syntax.classDefinitionArguments = args,
-          Syntax.classDefinitionBody = body}),
-        typeConstStmt]))) (
-      let constStmts = encodeNameConstants env name rowType
-      in (Eithers.bind (Eithers.mapList (encodeUnionField cx env name) rowType) (\fieldStmts ->
-        let tparams = environmentTypeParameters env
-            unionAlts = Lists.map (encodeUnionFieldAlt env name) rowType
-            unionStmts =
-                    unionTypeStatementsFor env (PythonNames.encodeName False Util.CaseConventionPascal env name) tparams comment (Utils.orExpression unionAlts) constStmts
-        in (Right (Lists.concat2 fieldStmts unionStmts)))))
-
--- | Encode a variable reference to a Python expression
-encodeVariable :: t0 -> PythonEnvironment.PythonEnvironment -> Core.Name -> [Syntax.Expression] -> Either Errors.Error Syntax.Expression
-encodeVariable cx env name args =
-
-      let g = pythonEnvironmentGetGraph env
-          tc = PythonEnvironment.pythonEnvironmentGraph env
-          tcTypes = Graph.graphBoundTypes tc
-          tcLambdaVars = Graph.graphLambdaVariables tc
-          tcMetadata = Graph.graphMetadata tc
-          inlineVars = PythonEnvironment.pythonEnvironmentInlineVariables env
-          mTypScheme = Maps.lookup name tcTypes
-          mTyp = Optionals.map (\ts_ -> Core.typeSchemeBody ts_) mTypScheme
-          asVariable = PythonNames.termVariableReference env name
-          asFunctionCall =
-                  Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionLowerSnake env name)) args
-          asLazyCall = Utils.functionCall (Utils.pyExpressionToPyPrimary (lazyDotGet asVariable)) args
-      in (Logic.ifElse (Logic.not (Lists.isEmpty args)) (Logic.ifElse (Sets.member name inlineVars) (Right asLazyCall) (Optionals.match (Lexical.lookupPrimitive g name) (Right asFunctionCall) (\prim ->
-        let primArity = Arity.primitiveArity prim
-        in (Logic.ifElse (Equality.equal primArity (Lists.length args)) (Right asFunctionCall) (
-          let numRemaining = Math.sub primArity (Lists.length args)
-              remainingParams =
-                      Lists.map (\i -> Syntax.Name (Strings.concat2 "x" (Literals.printInt32 i))) (Math.range 1 (Math.add numRemaining 1))
-              remainingExprs =
-                      Lists.map (\n -> Syntax.ExpressionSimple (Syntax.Disjunction [
-                        Syntax.Conjunction [
-                          Syntax.InversionSimple (Syntax.Comparison {
-                            Syntax.comparisonLhs = Syntax.BitwiseOr {
-                              Syntax.bitwiseOrLhs = Nothing,
-                              Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
-                                Syntax.bitwiseXorLhs = Nothing,
-                                Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
-                                  Syntax.bitwiseAndLhs = Nothing,
-                                  Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
-                                    Syntax.shiftExpressionLhs = Nothing,
-                                    Syntax.shiftExpressionRhs = Syntax.Sum {
-                                      Syntax.sumLhs = Nothing,
-                                      Syntax.sumRhs = Syntax.Term {
-                                        Syntax.termLhs = Nothing,
-                                        Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
-                                          Syntax.powerLhs = Syntax.AwaitPrimary {
-                                            Syntax.awaitPrimaryAwait = False,
-                                            Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName n))},
-                                          Syntax.powerRhs = Nothing}))}}}}}},
-                            Syntax.comparisonRhs = []})]])) remainingParams
-              allArgs = Lists.concat2 args remainingExprs
-              fullCall =
-                      Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionLowerSnake env name)) allArgs
-          in (Right (makeUncurriedLambda remainingParams fullCall))))))) (Optionals.match mTyp (Logic.ifElse (Sets.member name tcLambdaVars) (Right asVariable) (Logic.ifElse (Sets.member name inlineVars) (Right (lazyDotGet asVariable)) (Optionals.match (Lexical.lookupPrimitive g name) (Optionals.match (Lexical.lookupBinding g name) (Optionals.match (Maps.lookup name tcMetadata) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "Unknown variable: " (Core.unName name))))) (\_ -> Right asFunctionCall)) (\el ->
-        let elTrivial1 = Predicates.isTrivialTerm (Core.bindingTerm el)
-        in (Optionals.match (Core.bindingTypeScheme el) (Right asVariable) (\ts -> Logic.ifElse (Logic.and (Logic.and (Equality.equal (Arity.typeSchemeArity ts) 0) (Predicates.isComplexBinding tc el)) (Logic.not elTrivial1)) (Right asFunctionCall) (
-          let asFunctionRef =
-                  Logic.ifElse (Logic.not (Lists.isEmpty (Core.typeSchemeVariables ts))) (makeSimpleLambda (Arity.typeArity (Core.typeSchemeBody ts)) asVariable) asVariable
-          in (Right asFunctionRef)))))) (\prim ->
-        let primArity = Arity.primitiveArity prim
-        in (Logic.ifElse (Equality.equal primArity 0) (Right asFunctionCall) (
-          let ts = Scoping.termSignatureToTypeScheme (Packaging.primitiveDefinitionSignature (Graph.primitiveDefinition prim))
-              asFunctionRef =
-                      Logic.ifElse (Logic.not (Lists.isEmpty (Core.typeSchemeVariables ts))) (makeSimpleLambda (Arity.typeArity (Core.typeSchemeBody ts)) asVariable) asVariable
-          in (Right asFunctionRef))))))) (\typ -> Logic.ifElse (Sets.member name tcLambdaVars) (Right asVariable) (Logic.ifElse (Sets.member name inlineVars) (
-        let unwrapped = lazyDotGet asVariable
-            asFunctionRef =
-                    Logic.ifElse (Logic.not (Sets.isEmpty (Variables.freeVariablesInType typ))) (makeSimpleLambda (Arity.typeArity typ) unwrapped) unwrapped
-        in (Right asFunctionRef)) (Logic.ifElse (Logic.not (Maps.member name tcMetadata)) (Optionals.match (Lexical.lookupBinding g name) (
-        let asFunctionRef =
-                Logic.ifElse (Logic.not (Sets.isEmpty (Variables.freeVariablesInType typ))) (makeSimpleLambda (Arity.typeArity typ) asVariable) asVariable
-        in (Right asFunctionRef)) (\el ->
-        let elTrivial = Predicates.isTrivialTerm (Core.bindingTerm el)
-        in (Optionals.match (Core.bindingTypeScheme el) (Logic.ifElse (Logic.and (Equality.equal (Arity.typeArity typ) 0) (Logic.not elTrivial)) (Right asFunctionCall) (
-          let asFunctionRef =
-                  Logic.ifElse (Logic.not (Sets.isEmpty (Variables.freeVariablesInType typ))) (makeSimpleLambda (Arity.typeArity typ) asVariable) asVariable
-          in (Right asFunctionRef))) (\ts -> Logic.ifElse (Logic.and (Logic.and (Equality.equal (Arity.typeArity typ) 0) (Predicates.isComplexBinding tc el)) (Logic.not elTrivial)) (Right asFunctionCall) (
-          let asFunctionRef =
-                  Logic.ifElse (Logic.not (Sets.isEmpty (Variables.freeVariablesInType typ))) (makeSimpleLambda (Arity.typeArity typ) asVariable) asVariable
-          in (Right asFunctionRef)))))) (Logic.ifElse (Logic.and (Equality.equal (Arity.typeArity typ) 0) (Predicates.isComplexVariable tc name)) (Right asFunctionCall) (
-        let asFunctionRef =
-                Logic.ifElse (Logic.not (Sets.isEmpty (Variables.freeVariablesInType typ))) (makeSimpleLambda (Arity.typeArity typ) asVariable) asVariable
-        in (Right asFunctionRef))))))))
-
--- | Encode a wrapped type (newtype) to a Python class definition
-encodeWrappedType :: PythonEnvironment.PythonEnvironment -> Core.Name -> Core.Type -> Maybe String -> Either t0 [Syntax.Statement]
-encodeWrappedType env name typ comment =
-
-      let tparamList = Pairs.first (PythonEnvironment.pythonEnvironmentBoundTypeVariables env)
-      in (Eithers.bind (encodeTypeQuoted env typ) (\ptypeQuoted ->
-        let pyName = PythonNames.encodeName False Util.CaseConventionPascal env name
-            body = Utils.indentedBlock comment []
-            typeConstStmt =
-                    Utils.dottedAssignmentStatement pyName (PythonNames.encodeConstantForTypeName env name) (Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionPascal env (Core.Name "hydra.core.Name"))) [
-                      Utils.doubleQuotedString (Core.unName name)])
-        in (Right [
-          Utils.pyClassDefinitionToPyStatement (Syntax.ClassDefinition {
-            Syntax.classDefinitionDecorators = Nothing,
-            Syntax.classDefinitionName = pyName,
-            Syntax.classDefinitionTypeParams = (Lists.map (\arg_ -> Utils.pyNameToPyTypeParameter (PythonNames.encodeTypeVariable arg_)) (findTypeParams env typ)),
-            Syntax.classDefinitionArguments = (Just (variantArgs ptypeQuoted tparamList)),
-            Syntax.classDefinitionBody = body}),
-          typeConstStmt])))
-
--- | Create a value pattern for an enum variant
-enumVariantPattern :: PythonEnvironment.PythonEnvironment -> Core.Name -> Core.Name -> Syntax.ClosedPattern
-enumVariantPattern env typeName fieldName =
-    Syntax.ClosedPatternValue (Syntax.ValuePattern (Syntax.Attribute [
-      PythonNames.encodeName True Util.CaseConventionPascal env typeName,
-      (PythonNames.encodeEnumValue env fieldName)]))
-
--- | Get type parameters from environment as Python TypeParameters
-environmentTypeParameters :: PythonEnvironment.PythonEnvironment -> [Syntax.TypeParameter]
-environmentTypeParameters env =
-    Lists.map (\arg_ -> Utils.pyNameToPyTypeParameter (PythonNames.encodeTypeVariable arg_)) (Pairs.first (PythonEnvironment.pythonEnvironmentBoundTypeVariables env))
-
--- | Extend environment with lambda parameters from a term
-extendEnvWithLambdaParams :: PythonEnvironment.PythonEnvironment -> Core.Term -> PythonEnvironment.PythonEnvironment
-extendEnvWithLambdaParams env term =
-
-      let go =
-              \e -> \t -> case (Strip.deannotateAndDetypeTerm t) of
-                Core.TermLambda v0 ->
-                  let newTc = Scoping.extendGraphForLambda (pythonEnvironmentGetGraph e) v0
-                      newEnv = pythonEnvironmentSetGraph newTc e
-                  in (go newEnv (Core.lambdaBody v0))
-                _ -> e
-      in (go env term)
-
--- | Extend a PythonEnvironment with a new bound type variable
-extendEnvWithTypeVar :: PythonEnvironment.PythonEnvironment -> Core.Name -> PythonEnvironment.PythonEnvironment
-extendEnvWithTypeVar env var_ =
-
-      let oldBound = PythonEnvironment.pythonEnvironmentBoundTypeVariables env
-          tparamList = Pairs.first oldBound
-          tparamMap = Pairs.second oldBound
-          newList = Lists.concat2 tparamList [
-                var_]
-          newMap = Maps.insert var_ (PythonNames.encodeTypeVariable var_) tparamMap
-      in PythonEnvironment.PythonEnvironment {
-        PythonEnvironment.pythonEnvironmentNamespaces = (PythonEnvironment.pythonEnvironmentNamespaces env),
-        PythonEnvironment.pythonEnvironmentBoundTypeVariables = (newList, newMap),
-        PythonEnvironment.pythonEnvironmentGraph = (PythonEnvironment.pythonEnvironmentGraph env),
-        PythonEnvironment.pythonEnvironmentNullaryBindings = (PythonEnvironment.pythonEnvironmentNullaryBindings env),
-        PythonEnvironment.pythonEnvironmentVersion = (PythonEnvironment.pythonEnvironmentVersion env),
-        PythonEnvironment.pythonEnvironmentSkipCasts = (PythonEnvironment.pythonEnvironmentSkipCasts env),
-        PythonEnvironment.pythonEnvironmentInlineVariables = (PythonEnvironment.pythonEnvironmentInlineVariables env),
-        PythonEnvironment.pythonEnvironmentOverlaySubs = (PythonEnvironment.pythonEnvironmentOverlaySubs env)}
-
--- | Extend metadata based on a term (used during module encoding)
-extendMetaForTerm :: Bool -> PythonEnvironment.PythonModuleMetadata -> Core.Term -> PythonEnvironment.PythonModuleMetadata
-extendMetaForTerm topLevel meta0 term =
-
-      let step =
-              \meta -> \t -> case t of
-                Core.TermEither v0 ->
-                  let metaWithCast = setMetaUsesCast True meta
-                  in (Eithers.either (\_ -> setMetaUsesLeft metaWithCast True) (\_ -> setMetaUsesRight metaWithCast True) v0)
-                Core.TermLambda v0 -> Optionals.match (Core.lambdaDomain v0) meta (\dom -> Logic.ifElse topLevel (extendMetaForType True False dom meta) meta)
-                Core.TermLet v0 ->
-                  let bindings = Core.letBindings v0
-                  in (Lists.foldl (
-                    let forBinding =
-                            \m -> \b -> Optionals.match (Core.bindingTypeScheme b) m (\ts ->
-                              let term1 = Core.bindingTerm b
-                              in (Logic.ifElse (Analysis.isSimpleAssignment term1) m (extendMetaForType True True (Core.typeSchemeBody ts) m)))
-                    in forBinding) meta bindings)
-                Core.TermLiteral v0 -> case v0 of
-                  Core.LiteralDecimal _ -> setMetaUsesDecimal meta True
-                  _ -> meta
-                Core.TermList _ -> setMetaUsesFrozenList meta True
-                Core.TermMap _ -> setMetaUsesFrozenDict meta True
-                Core.TermSet _ -> setMetaUsesFrozenSet meta True
-                Core.TermOptional v0 -> Optionals.match v0 (setMetaUsesNothing meta True) (\_ -> setMetaUsesJust meta True)
-                Core.TermInject _ -> setMetaUsesCast True meta
-                _ -> meta
-      in (Rewriting.foldOverTerm Coders.TraversalOrderPre step meta0 term)
-
--- | Extend metadata based on a type (used during module encoding)
-extendMetaForType :: Bool -> Bool -> Core.Type -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PythonModuleMetadata
-extendMetaForType topLevel isTermAnnot typ meta =
-
-      let currentTvars = PythonEnvironment.pythonModuleMetadataTypeVariables meta
-          newTvars = collectTypeVariables currentTvars typ
-          metaWithTvars = setMetaTypeVariables meta newTvars
-          metaWithSubtypes = Lists.foldl (\m -> \t -> extendMetaForType False isTermAnnot t m) metaWithTvars (Rewriting.subtypes typ)
-      in case (Strip.deannotateType typ) of
-        Core.TypeFunction _ -> Logic.ifElse (Logic.and isTermAnnot topLevel) metaWithSubtypes (setMetaUsesCallable metaWithSubtypes True)
-        Core.TypeList _ -> setMetaUsesFrozenList metaWithSubtypes True
-        Core.TypeMap _ -> setMetaUsesFrozenDict metaWithSubtypes True
-        Core.TypeSet _ -> setMetaUsesFrozenSet metaWithSubtypes True
-        Core.TypeOptional _ -> setMetaUsesMaybe metaWithSubtypes True
-        Core.TypeEither _ -> setMetaUsesEither metaWithSubtypes True
-        Core.TypeLiteral v0 -> case v0 of
-          Core.LiteralTypeDecimal -> setMetaUsesDecimal metaWithSubtypes True
-          _ -> metaWithSubtypes
-        Core.TypeUnion v0 -> Logic.ifElse (Predicates.isEnumRowType v0) (setMetaUsesEnum metaWithSubtypes True) (Logic.ifElse (Logic.not (Lists.isEmpty v0)) (setMetaUsesNode metaWithSubtypes True) metaWithSubtypes)
-        Core.TypeForall v0 ->
-          let body = Core.forallTypeBody v0
-              metaForWrap = digForWrap isTermAnnot metaWithSubtypes body
-          in case (Strip.deannotateType body) of
-            Core.TypeRecord _ -> setMetaUsesGeneric metaForWrap True
-            _ -> metaForWrap
-        Core.TypeRecord v0 ->
-          let hasAnnotated = Lists.foldl (\b -> \ft -> Logic.or b (Annotations.hasTypeDescription (Core.fieldTypeType ft))) False v0
-              meta1 = Logic.ifElse (Lists.isEmpty v0) metaWithSubtypes (setMetaUsesDataclass metaWithSubtypes True)
-          in (Logic.ifElse hasAnnotated (setMetaUsesAnnotated meta1 True) meta1)
-        Core.TypeWrap _ -> Logic.ifElse isTermAnnot metaWithSubtypes (setMetaUsesNode metaWithSubtypes True)
-        _ -> metaWithSubtypes
-
--- | Extend metadata for a list of types
-extendMetaForTypes :: [Core.Type] -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PythonModuleMetadata
-extendMetaForTypes types meta =
-
-      let names = Sets.unions (Lists.map (\t -> Dependencies.typeDependencyNames False t) types)
-          currentNs = PythonEnvironment.pythonModuleMetadataNamespaces meta
-          updatedNs = Analysis.addNamesToModuleNames (PythonNames.encodeNamespaceWithOverrides Sets.empty) names currentNs
-          meta1 = setMetaNamespaces updatedNs meta
-      in (Lists.foldl (\m -> \t -> extendMetaForType True False t m) meta1 types)
-
--- | Extract CaseStatement from a case elimination term
-extractCaseElimination :: Core.Term -> Maybe Core.CaseStatement
-extractCaseElimination term =
-    case (Strip.deannotateAndDetypeTerm term) of
-      Core.TermCases v0 -> Just v0
-      _ -> Nothing
-
--- | Prefer signature parameter types over analysis-captured lambda domains when both are available in equal length (#488).
-fillDomsFromSignature :: [t0] -> [t0] -> [t0]
-fillDomsFromSignature doms sigParamTypes =
-    Logic.ifElse (Equality.equal (Lists.length doms) (Lists.length sigParamTypes)) sigParamTypes doms
-
--- | Find type parameters in a type that are bound in the environment
-findTypeParams :: PythonEnvironment.PythonEnvironment -> Core.Type -> [Core.Name]
-findTypeParams env typ =
-
-      let boundVars = Pairs.second (PythonEnvironment.pythonEnvironmentBoundTypeVariables env)
-          isBound = \v -> Optionals.isGiven (Maps.lookup v boundVars)
-      in (Lists.filter isBound (Sets.toList (Variables.freeVariablesInType typ)))
-
--- | Encode a function definition with parameters and body
-functionDefinitionToExpr :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Core.Name -> [Core.Name] -> [Core.Name] -> Core.Term -> [Core.Type] -> Maybe Core.Type -> Maybe String -> [Syntax.Statement] -> Either Errors.Error Syntax.Statement
-functionDefinitionToExpr cx env name tparams args body doms mcod comment prefixes =
-    Eithers.bind (Eithers.mapList (\pair ->
-      let argName = Pairs.first pair
-          typ = Pairs.second pair
-      in (Eithers.bind (encodeType env typ) (\pyTyp -> Right (Syntax.ParamNoDefault {
-        Syntax.paramNoDefaultParam = Syntax.Param {
-          Syntax.paramName = (PythonNames.encodeName False Util.CaseConventionLowerSnake env argName),
-          Syntax.paramAnnotation = (Just (Syntax.Annotation pyTyp))},
-        Syntax.paramNoDefaultTypeComment = Nothing})))) (Lists.zip args doms)) (\pyArgs ->
-      let pyParams =
-              Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
-                Syntax.paramNoDefaultParametersParamNoDefault = pyArgs,
-                Syntax.paramNoDefaultParametersParamWithDefault = [],
-                Syntax.paramNoDefaultParametersStarEtc = Nothing})
-          isTCO = Logic.and (Logic.not (Lists.isEmpty args)) (Analysis.isSelfTailRecursive name body)
-      in (Eithers.bind (Logic.ifElse isTCO (Eithers.bind (encodeTermMultilineTCO cx env name args body) (\tcoStmts ->
-        let trueExpr = Syntax.NamedExpressionSimple (Utils.pyAtomToPyExpression Syntax.AtomTrue)
-            whileBody = Utils.indentedBlock Nothing [
-                  Lists.concat2 prefixes tcoStmts]
-            whileStmt =
-                    Syntax.StatementCompound (Syntax.CompoundStatementWhile (Syntax.WhileStatement {
-                      Syntax.whileStatementCondition = trueExpr,
-                      Syntax.whileStatementBody = whileBody,
-                      Syntax.whileStatementElse = Nothing}))
-        in (Right (Utils.indentedBlock comment [
-          [
-            whileStmt]])))) (Eithers.bind (encodeTermMultiline cx env body) (\stmts -> Right (Utils.indentedBlock comment [
-        Lists.concat2 prefixes stmts])))) (\block -> Eithers.bind (Optionals.match mcod (Right Nothing) (\cod -> Eithers.bind (encodeType env cod) (\pytyp -> Right (Just pytyp)))) (\mreturnType ->
-        let pyTparams =
-                Logic.ifElse useInlineTypeParams (Lists.map (\arg_ -> Utils.pyNameToPyTypeParameter (PythonNames.encodeTypeVariable arg_)) tparams) []
-            isThunk = Lists.isEmpty args
-            mDecorators = Logic.ifElse isThunk (Just (Syntax.Decorators [
-                  lruCacheDecorator])) Nothing
-            pyName = PythonNames.encodeName False Util.CaseConventionLowerSnake env name
-        in (Right (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
-          Syntax.functionDefinitionDecorators = mDecorators,
-          Syntax.functionDefinitionRaw = Syntax.FunctionDefRaw {
-            Syntax.functionDefRawAsync = False,
-            Syntax.functionDefRawName = pyName,
-            Syntax.functionDefRawTypeParams = pyTparams,
-            Syntax.functionDefRawParams = (Just pyParams),
-            Syntax.functionDefRawReturnType = mreturnType,
-            Syntax.functionDefRawFuncTypeComment = Nothing,
-            Syntax.functionDefRawBlock = block}}))))))))
-
--- | Extract lambdas and their bodies from a term
-gatherLambdas :: Core.Term -> ([Core.Name], Core.Term)
-gatherLambdas term =
-
-      let go =
-              \params -> \t -> case (Strip.deannotateAndDetypeTerm t) of
-                Core.TermLambda v0 -> go (Lists.concat2 params [
-                  Core.lambdaParameter v0]) (Core.lambdaBody v0)
-                _ -> (params, t)
-      in (go [] term)
-
--- | Gather metadata from definitions
-gatherMetadata :: S.Set String -> Packaging.ModuleName -> [Packaging.Definition] -> PythonEnvironment.PythonModuleMetadata
-gatherMetadata overlaySubs focusNs defs =
-
-      let start = emptyMetadata (Utils.findNamespaces overlaySubs focusNs defs)
-          addDef =
-                  \meta -> \def -> case def of
-                    Packaging.DefinitionTerm v0 ->
-                      let term = Packaging.termDefinitionBody v0
-                          typ =
-                                  Optionals.match (Packaging.termDefinitionSignature v0) (Core.TypeVariable (Core.Name "hydra.core.Unit")) (\sig -> Core.typeSchemeBody (Scoping.termSignatureToTypeScheme sig))
-                          meta2 = extendMetaForType True True typ meta
-                      in (extendMetaForTerm True meta2 term)
-                    Packaging.DefinitionType v0 ->
-                      let typ = Core.typeSchemeBody (Packaging.typeDefinitionBody v0)
-                          meta2 = setMetaUsesName meta True
-                      in (Rewriting.foldOverType Coders.TraversalOrderPre (\m -> \t -> extendMetaForType True False t m) meta2 typ)
-          result = Lists.foldl addDef start defs
-          tvars = PythonEnvironment.pythonModuleMetadataTypeVariables result
-          result2 = setMetaUsesCast True (setMetaUsesLruCache True result)
-      in (setMetaUsesTypeVar result2 (Logic.not (Sets.isEmpty tvars)))
-
--- | Create Generic[...] argument expression for class definition
-genericArg :: [Core.Name] -> Maybe Syntax.Expression
-genericArg tparamList =
-    Logic.ifElse (Lists.isEmpty tparamList) Nothing (Just (Utils.pyPrimaryToPyExpression (Utils.primaryWithExpressionSlices (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Generic"))) (Lists.map (\n -> Syntax.ExpressionSimple (Syntax.Disjunction [
-      Syntax.Conjunction [
-        Syntax.InversionSimple (Syntax.Comparison {
-          Syntax.comparisonLhs = Syntax.BitwiseOr {
-            Syntax.bitwiseOrLhs = Nothing,
-            Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
-              Syntax.bitwiseXorLhs = Nothing,
-              Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
-                Syntax.bitwiseAndLhs = Nothing,
-                Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
-                  Syntax.shiftExpressionLhs = Nothing,
-                  Syntax.shiftExpressionRhs = Syntax.Sum {
-                    Syntax.sumLhs = Nothing,
-                    Syntax.sumRhs = Syntax.Term {
-                      Syntax.termLhs = Nothing,
-                      Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
-                        Syntax.powerLhs = Syntax.AwaitPrimary {
-                          Syntax.awaitPrimaryAwait = False,
-                          Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (PythonNames.encodeTypeVariable n)))},
-                        Syntax.powerRhs = Nothing}))}}}}}},
-          Syntax.comparisonRhs = []})]])) tparamList))))
-
--- | Create an initial Python environment for code generation, given the on-disk overlay-existence set (#630) driving emission-time primitive-reference redirects
-initialEnvironment :: Util.ModuleNames Syntax.DottedName -> Graph.Graph -> S.Set String -> PythonEnvironment.PythonEnvironment
-initialEnvironment namespaces tcontext overlaySubs =
-    PythonEnvironment.PythonEnvironment {
-      PythonEnvironment.pythonEnvironmentNamespaces = namespaces,
-      PythonEnvironment.pythonEnvironmentBoundTypeVariables = ([], Maps.empty),
-      PythonEnvironment.pythonEnvironmentGraph = tcontext,
-      PythonEnvironment.pythonEnvironmentNullaryBindings = Sets.empty,
-      PythonEnvironment.pythonEnvironmentVersion = targetPythonVersion,
-      PythonEnvironment.pythonEnvironmentSkipCasts = True,
-      PythonEnvironment.pythonEnvironmentInlineVariables = Sets.empty,
-      PythonEnvironment.pythonEnvironmentOverlaySubs = overlaySubs}
-
--- | Create initial empty metadata for a Python module
-initialMetadata :: Packaging.ModuleName -> PythonEnvironment.PythonModuleMetadata
-initialMetadata ns =
-
-      let dottedNs = PythonNames.encodeNamespace ns
-          emptyNs =
-                  Util.ModuleNames {
-                    Util.moduleNamesFocus = (ns, dottedNs),
-                    Util.moduleNamesMapping = Maps.empty}
-      in PythonEnvironment.PythonModuleMetadata {
-        PythonEnvironment.pythonModuleMetadataNamespaces = emptyNs,
-        PythonEnvironment.pythonModuleMetadataTypeVariables = Sets.empty,
-        PythonEnvironment.pythonModuleMetadataUsesAnnotated = False,
-        PythonEnvironment.pythonModuleMetadataUsesCallable = False,
-        PythonEnvironment.pythonModuleMetadataUsesCast = False,
-        PythonEnvironment.pythonModuleMetadataUsesLruCache = False,
-        PythonEnvironment.pythonModuleMetadataUsesTypeAlias = False,
-        PythonEnvironment.pythonModuleMetadataUsesDataclass = False,
-        PythonEnvironment.pythonModuleMetadataUsesDecimal = False,
-        PythonEnvironment.pythonModuleMetadataUsesEither = False,
-        PythonEnvironment.pythonModuleMetadataUsesEnum = False,
-        PythonEnvironment.pythonModuleMetadataUsesFrozenDict = False,
-        PythonEnvironment.pythonModuleMetadataUsesFrozenList = False,
-        PythonEnvironment.pythonModuleMetadataUsesFrozenSet = False,
-        PythonEnvironment.pythonModuleMetadataUsesGeneric = False,
-        PythonEnvironment.pythonModuleMetadataUsesJust = False,
-        PythonEnvironment.pythonModuleMetadataUsesLeft = False,
-        PythonEnvironment.pythonModuleMetadataUsesMaybe = False,
-        PythonEnvironment.pythonModuleMetadataUsesName = False,
-        PythonEnvironment.pythonModuleMetadataUsesNode = False,
-        PythonEnvironment.pythonModuleMetadataUsesNothing = False,
-        PythonEnvironment.pythonModuleMetadataUsesRight = False,
-        PythonEnvironment.pythonModuleMetadataUsesTypeVar = False}
-
--- | Check if a term is a case statement applied to exactly one argument
-isCaseStatementApplication :: Core.Term -> Maybe (Core.Name, (Maybe Core.Term, ([Core.CaseAlternative], Core.Term)))
-isCaseStatementApplication term =
-
-      let gathered = Analysis.gatherApplications term
-          args = Pairs.first gathered
-          body = Pairs.second gathered
-      in (Logic.ifElse (Logic.not (Equality.equal (Lists.length args) 1)) Nothing (
-        let arg = Optionals.withDefault Core.TermUnit (Lists.head args)
-        in case (Strip.deannotateAndDetypeTerm body) of
-          Core.TermCases v0 -> Just (Core.caseStatementTypeName v0, (Core.caseStatementDefault v0, (Core.caseStatementCases v0, arg)))
-          _ -> Nothing))
-
--- | Check if union cases are fully covered
-isCasesFull :: [t0] -> [t1] -> Bool
-isCasesFull rowType cases_ =
-
-      let numCases = Lists.length cases_
-          numFields = Lists.length rowType
-      in (Logic.not (Ordering.lt numCases numFields))
-
--- | Check whether a list of definitions contains any type definitions
-isTypeModuleCheck :: [Packaging.Definition] -> Bool
-isTypeModuleCheck defs =
-    Logic.not (Lists.isEmpty (Lists.filter (\d -> case d of
-      Packaging.DefinitionType _ -> True
-      _ -> False) defs))
-
--- | Check if a name is a type variable (unqualified - no dots)
-isTypeVariableName :: Core.Name -> Bool
-isTypeVariableName name = Equality.equal 1 (Lists.length (Strings.splitOn "." (Core.unName name)))
-
--- | Check if a variant field has unit type
-isVariantUnitType :: [Core.FieldType] -> Core.Name -> Bool
-isVariantUnitType rowType fieldName =
-
-      let mfield = Lists.find (\ft -> Equality.equal (Core.fieldTypeName ft) fieldName) rowType
-      in (Optionals.withDefault False (Optionals.map (\ft -> Predicates.isUnitType (Strip.deannotateType (Core.fieldTypeType ft))) mfield))
-
--- | Wrap an expression in a .get() method call (for Lazy unwrap at use sites)
-lazyDotGet :: Syntax.Expression -> Syntax.Expression
-lazyDotGet expr = Utils.functionCall (Utils.pyExpressionToPyPrimary (Utils.projectFromExpression expr (Syntax.Name "get"))) []
-
--- | Per-parameter isLazy flags of a primitive (by name), or empty if not a primitive. Single source of truth for which arguments coders thunk; replaces hard-coded name tables (issue #391).
-lazyFlagsForPrimitive :: Graph.Graph -> Core.Name -> [Bool]
-lazyFlagsForPrimitive g name =
-    Optionals.match (Maps.lookup name (Graph.graphPrimitives g)) [] (\prim ->
-      let def0 = Graph.primitiveDefinition prim
-          sig = Packaging.primitiveDefinitionSignature def0
-      in (Lists.map (\p -> Typing.parameterIsLazy p) (Typing.termSignatureParameters sig)))
-
--- | Decorator for @lru_cache(1) to memoize zero-argument function results
-lruCacheDecorator :: Syntax.NamedExpression
-lruCacheDecorator =
-    Syntax.NamedExpressionSimple (Utils.functionCall (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "lru_cache"))) [
-      pyInt 1])
-
--- | Create a curried lambda chain from a list of parameter names and a body
-makeCurriedLambda :: [Syntax.Name] -> Syntax.Expression -> Syntax.Expression
-makeCurriedLambda params body =
-    Lists.foldl (\acc -> \p -> Syntax.ExpressionLambda (Syntax.Lambda {
-      Syntax.lambdaParams = Syntax.LambdaParameters {
-        Syntax.lambdaParametersSlashNoDefault = Nothing,
-        Syntax.lambdaParametersParamNoDefault = [
-          Syntax.LambdaParamNoDefault p],
-        Syntax.lambdaParametersParamWithDefault = [],
-        Syntax.lambdaParametersStarEtc = Nothing},
-      Syntax.lambdaBody = acc})) body (Lists.reverse params)
-
--- | Wrap an expression in Lazy(lambda: ...) for one-shot lazy memoization
-makeLazy :: Syntax.Expression -> Syntax.Expression
-makeLazy pbody =
-    Utils.functionCall (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Lazy"))) [
-      wrapInNullaryLambda pbody]
-
--- | Constructor for PyGraph record
-makePyGraph :: Graph.Graph -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PyGraph
-makePyGraph g m =
-    PythonEnvironment.PyGraph {
-      PythonEnvironment.pyGraphGraph = g,
-      PythonEnvironment.pyGraphMetadata = m}
-
--- | Wrap a bare reference to a polymorphic function in an uncurried lambda
-makeSimpleLambda :: Int -> Syntax.Expression -> Syntax.Expression
-makeSimpleLambda arity lhs =
-
-      let args = Lists.map (\i -> Syntax.Name (Strings.concat2 "x" (Literals.printInt32 i))) (Math.range 1 (Math.add arity 1))
-      in (Logic.ifElse (Equality.equal arity 0) lhs (Syntax.ExpressionLambda (Syntax.Lambda {
-        Syntax.lambdaParams = Syntax.LambdaParameters {
-          Syntax.lambdaParametersSlashNoDefault = Nothing,
-          Syntax.lambdaParametersParamNoDefault = (Lists.map (\a -> Syntax.LambdaParamNoDefault a) args),
-          Syntax.lambdaParametersParamWithDefault = [],
-          Syntax.lambdaParametersStarEtc = Nothing},
-        Syntax.lambdaBody = (Utils.functionCall (Utils.pyExpressionToPyPrimary lhs) (Lists.map (\a -> Syntax.ExpressionSimple (Syntax.Disjunction [
-          Syntax.Conjunction [
-            Syntax.InversionSimple (Syntax.Comparison {
-              Syntax.comparisonLhs = Syntax.BitwiseOr {
-                Syntax.bitwiseOrLhs = Nothing,
-                Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
-                  Syntax.bitwiseXorLhs = Nothing,
-                  Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
-                    Syntax.bitwiseAndLhs = Nothing,
-                    Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
-                      Syntax.shiftExpressionLhs = Nothing,
-                      Syntax.shiftExpressionRhs = Syntax.Sum {
-                        Syntax.sumLhs = Nothing,
-                        Syntax.sumRhs = Syntax.Term {
-                          Syntax.termLhs = Nothing,
-                          Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
-                            Syntax.powerLhs = Syntax.AwaitPrimary {
-                              Syntax.awaitPrimaryAwait = False,
-                              Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName a))},
-                            Syntax.powerRhs = Nothing}))}}}}}},
-              Syntax.comparisonRhs = []})]])) args))})))
-
--- | Create a thunk (zero-argument lambda) wrapped with lru_cache(1) for memoization
-makeThunk :: Syntax.Expression -> Syntax.Expression
-makeThunk pbody =
-    Utils.functionCall (Utils.pyExpressionToPyPrimary (Utils.functionCall (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "lru_cache"))) [
-      pyInt 1])) [
-      wrapInNullaryLambda pbody]
-
--- | Create an uncurried lambda with multiple parameters
-makeUncurriedLambda :: [Syntax.Name] -> Syntax.Expression -> Syntax.Expression
-makeUncurriedLambda params body =
-    Syntax.ExpressionLambda (Syntax.Lambda {
-      Syntax.lambdaParams = Syntax.LambdaParameters {
-        Syntax.lambdaParametersSlashNoDefault = Nothing,
-        Syntax.lambdaParametersParamNoDefault = (Lists.map (\p -> Syntax.LambdaParamNoDefault p) params),
-        Syntax.lambdaParametersParamWithDefault = [],
-        Syntax.lambdaParametersStarEtc = Nothing},
-      Syntax.lambdaBody = body})
-
--- | Generate domain import statements from namespace mappings
-moduleDomainImports :: Util.ModuleNames Syntax.DottedName -> [Syntax.ImportStatement]
-moduleDomainImports namespaces =
-
-      let names = Lists.sort (Maps.elems (Util.moduleNamesMapping namespaces))
-      in (Lists.map (\ns -> Syntax.ImportStatementName (Syntax.ImportName [
-        Syntax.DottedAsName {
-          Syntax.dottedAsNameName = ns,
-          Syntax.dottedAsNameAs = Nothing}])) names)
-
--- | Generate all import statements for a Python module
-moduleImports :: Util.ModuleNames Syntax.DottedName -> PythonEnvironment.PythonModuleMetadata -> [Syntax.Statement]
-moduleImports namespaces meta =
-    Lists.map (\imp -> Utils.pySimpleStatementToPyStatement (Syntax.SimpleStatementImport imp)) (Lists.concat [
-      moduleStandardImports meta,
-      (moduleDomainImports namespaces)])
-
--- | Generate standard import statements based on module metadata
-moduleStandardImports :: PythonEnvironment.PythonModuleMetadata -> [Syntax.ImportStatement]
-moduleStandardImports meta =
-
-      let pairs =
-              [
-                ("__future__", [
-                  condImportSymbol "annotations" PythonNames.useFutureAnnotations]),
-                (
-                  "collections.abc",
-                  [
-                    condImportSymbol "Callable" (PythonEnvironment.pythonModuleMetadataUsesCallable meta),
-                    (condImportSymbol "Mapping" (PythonEnvironment.pythonModuleMetadataUsesFrozenDict meta)),
-                    (condImportSymbol "Sequence" (PythonEnvironment.pythonModuleMetadataUsesFrozenList meta)),
-                    (condImportSymbol "Set" (PythonEnvironment.pythonModuleMetadataUsesFrozenSet meta))]),
-                (
-                  "dataclasses",
-                  [
-                    condImportSymbol "dataclass" (PythonEnvironment.pythonModuleMetadataUsesDataclass meta),
-                    (condImportSymbol "replace" (PythonEnvironment.pythonModuleMetadataUsesDataclass meta))]),
-                ("decimal", [
-                  condImportSymbol "Decimal" (PythonEnvironment.pythonModuleMetadataUsesDecimal meta)]),
-                ("enum", [
-                  condImportSymbol "Enum" (PythonEnvironment.pythonModuleMetadataUsesEnum meta)]),
-                ("functools", [
-                  condImportSymbol "lru_cache" (PythonEnvironment.pythonModuleMetadataUsesLruCache meta)]),
-                (
-                  "hydra.overlay.python.dsl.python",
-                  [
-                    condImportSymbol "Either" (PythonEnvironment.pythonModuleMetadataUsesEither meta),
-                    (condImportSymbol "Given" (PythonEnvironment.pythonModuleMetadataUsesJust meta)),
-                    (condImportSymbol "Left" (PythonEnvironment.pythonModuleMetadataUsesLeft meta)),
-                    (condImportSymbol "Node" (PythonEnvironment.pythonModuleMetadataUsesNode meta)),
-                    (condImportSymbol "None_" (PythonEnvironment.pythonModuleMetadataUsesNothing meta)),
-                    (condImportSymbol "Optional" (PythonEnvironment.pythonModuleMetadataUsesMaybe meta)),
-                    (condImportSymbol "Right" (PythonEnvironment.pythonModuleMetadataUsesRight meta))]),
-                (
-                  "hydra.overlay.python.util",
-                  [
-                    condImportSymbol "ConsList" (PythonEnvironment.pythonModuleMetadataUsesFrozenList meta),
-                    (condImportSymbol "Lazy" True),
-                    (condImportSymbol "PersistentMap" (PythonEnvironment.pythonModuleMetadataUsesFrozenDict meta)),
-                    (condImportSymbol "PersistentSet" (PythonEnvironment.pythonModuleMetadataUsesFrozenSet meta))]),
-                (
-                  "hydra.overlay.python.util._decimal",
-                  [
-                    condImportSymbol "decimal_node_eq" (PythonEnvironment.pythonModuleMetadataUsesDecimal meta),
-                    (condImportSymbol "decimal_node_hash" (PythonEnvironment.pythonModuleMetadataUsesDecimal meta))]),
-                (
-                  "typing",
-                  [
-                    condImportSymbol "Annotated" (PythonEnvironment.pythonModuleMetadataUsesAnnotated meta),
-                    (condImportSymbol "Generic" (PythonEnvironment.pythonModuleMetadataUsesGeneric meta)),
-                    (condImportSymbol "TypeAlias" (PythonEnvironment.pythonModuleMetadataUsesTypeAlias meta)),
-                    (condImportSymbol "TypeVar" (PythonEnvironment.pythonModuleMetadataUsesTypeVar meta)),
-                    (condImportSymbol "cast" (PythonEnvironment.pythonModuleMetadataUsesCast meta))])]
-          simplified =
-                  Optionals.givens (Lists.map (\p ->
-                    let modName = Pairs.first p
-                        symbols = Optionals.givens (Pairs.second p)
-                    in (Logic.ifElse (Lists.isEmpty symbols) Nothing (Just (modName, symbols)))) pairs)
-      in (Lists.map (\p -> standardImportStatement (Pairs.first p) (Pairs.second p)) simplified)
-
--- | Convert a Hydra module to Python source files
-moduleToPython :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (M.Map String String)
-moduleToPython overlaySubs mod defs cx g =
-    Eithers.bind (encodePythonModule overlaySubs cx g mod defs) (\file ->
-      let s = Serialization.printExpr (Serialization.parenthesize (Serde.moduleToExpr file))
-          path = Names.moduleNameToFilePath Util.CaseConventionLowerSnake (File.FileExtension "py") (Packaging.moduleName mod)
-      in (Right (Maps.singleton path s)))
-
--- | Accessor for the graph field of PyGraph
-pyGraphGraph :: PythonEnvironment.PyGraph -> Graph.Graph
-pyGraphGraph pyg = PythonEnvironment.pyGraphGraph pyg
-
--- | Accessor for the metadata field of PyGraph
-pyGraphMetadata :: PythonEnvironment.PyGraph -> PythonEnvironment.PythonModuleMetadata
-pyGraphMetadata pyg = PythonEnvironment.pyGraphMetadata pyg
-
--- | Create integer literal expression
-pyInt :: Integer -> Syntax.Expression
-pyInt n = Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberInteger n))
-
--- | Like bindingMetadata, but only for bindings that will actually be thunked
-pythonBindingMetadata :: Graph.Graph -> Core.Binding -> Maybe Core.Term
-pythonBindingMetadata g b =
-    Logic.ifElse (shouldThunkBinding g b) (Logic.ifElse (Predicates.isComplexBinding g b) (Just (Core.TermLiteral (Core.LiteralBoolean True))) Nothing) Nothing
-
--- | Get the Graph from a PythonEnvironment
-pythonEnvironmentGetGraph :: PythonEnvironment.PythonEnvironment -> Graph.Graph
-pythonEnvironmentGetGraph env = PythonEnvironment.pythonEnvironmentGraph env
-
--- | Set the Graph in a PythonEnvironment
-pythonEnvironmentSetGraph :: Graph.Graph -> PythonEnvironment.PythonEnvironment -> PythonEnvironment.PythonEnvironment
-pythonEnvironmentSetGraph tc env =
-    PythonEnvironment.PythonEnvironment {
-      PythonEnvironment.pythonEnvironmentNamespaces = (PythonEnvironment.pythonEnvironmentNamespaces env),
-      PythonEnvironment.pythonEnvironmentBoundTypeVariables = (PythonEnvironment.pythonEnvironmentBoundTypeVariables env),
-      PythonEnvironment.pythonEnvironmentGraph = tc,
-      PythonEnvironment.pythonEnvironmentNullaryBindings = (PythonEnvironment.pythonEnvironmentNullaryBindings env),
-      PythonEnvironment.pythonEnvironmentVersion = (PythonEnvironment.pythonEnvironmentVersion env),
-      PythonEnvironment.pythonEnvironmentSkipCasts = (PythonEnvironment.pythonEnvironmentSkipCasts env),
-      PythonEnvironment.pythonEnvironmentInlineVariables = (PythonEnvironment.pythonEnvironmentInlineVariables env),
-      PythonEnvironment.pythonEnvironmentOverlaySubs = (PythonEnvironment.pythonEnvironmentOverlaySubs env)}
-
--- | Build a fluent builder (factory + nested Builder dataclass) for a record
-recordBuilderClass :: PythonEnvironment.PythonEnvironment -> Core.Name -> [Core.FieldType] -> Maybe Syntax.Args -> Either t0 [Syntax.Statement]
-recordBuilderClass env name rowType recordArgs =
-    Eithers.bind (Eithers.mapList (\ft -> Eithers.map (\pyType -> Utils.pyAssignmentToPyStatement (Syntax.AssignmentTyped (Syntax.TypedAssignment {
-      Syntax.typedAssignmentLhs = (Syntax.SingleTargetName (Syntax.Name (Strings.concat2 "_" (Syntax.unName (PythonNames.encodeFieldName env (Core.fieldTypeName ft)))))),
-      Syntax.typedAssignmentType = pyType,
-      Syntax.typedAssignmentRhs = (Just (Syntax.AnnotatedRhsStar [
-        Syntax.StarExpressionSimple (Utils.pyNameToPyExpression Utils.pyNone)]))}))) (encodeType env (Core.fieldTypeType ft))) rowType) (\builderFields ->
-      let setters = Lists.map (\ft -> recordBuilderSetter env ft) rowType
-          pyName = PythonNames.encodeName False Util.CaseConventionPascal env name
-          buildKwargs =
-                  Lists.map (\ft -> Syntax.KwargOrStarredKwarg (Syntax.Kwarg {
-                    Syntax.kwargName = (Syntax.Name (Syntax.unName (PythonNames.encodeFieldName env (Core.fieldTypeName ft)))),
-                    Syntax.kwargValue = (Utils.projectFromExpression (Utils.pyNameToPyExpression (Syntax.Name "self")) (Syntax.Name (Strings.concat2 "_" (Syntax.unName (PythonNames.encodeFieldName env (Core.fieldTypeName ft))))))})) rowType
-          ctorCall =
-                  Utils.pyPrimaryToPyExpression (Utils.primaryWithRhs (Utils.pyNameToPyPrimary pyName) (Syntax.PrimaryRhsCall (Syntax.Args {
-                    Syntax.argsPositional = [],
-                    Syntax.argsKwargOrStarred = buildKwargs,
-                    Syntax.argsKwargOrDoubleStarred = []})))
-          buildMethod =
-                  Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
-                    Syntax.functionDefinitionDecorators = Nothing,
-                    Syntax.functionDefinitionRaw = Syntax.FunctionDefRaw {
-                      Syntax.functionDefRawAsync = False,
-                      Syntax.functionDefRawName = (Syntax.Name "build"),
-                      Syntax.functionDefRawTypeParams = [],
-                      Syntax.functionDefRawParams = (Just (Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
-                        Syntax.paramNoDefaultParametersParamNoDefault = [
-                          Syntax.ParamNoDefault {
-                            Syntax.paramNoDefaultParam = Syntax.Param {
-                              Syntax.paramName = (Syntax.Name "self"),
-                              Syntax.paramAnnotation = Nothing},
-                            Syntax.paramNoDefaultTypeComment = Nothing}],
-                        Syntax.paramNoDefaultParametersParamWithDefault = [],
-                        Syntax.paramNoDefaultParametersStarEtc = Nothing}))),
-                      Syntax.functionDefRawReturnType = Nothing,
-                      Syntax.functionDefRawFuncTypeComment = Nothing,
-                      Syntax.functionDefRawBlock = (Utils.indentedBlock Nothing [
-                        [
-                          Utils.returnSingle ctorCall]])}}))
-          builderBody =
-                  Utils.indentedBlock Nothing [
-                    Lists.concat [
-                      builderFields,
-                      setters,
-                      [
-                        buildMethod]]]
-          builderDecs = Just (Syntax.Decorators [
-                dataclassDecorator])
-          builderClass =
-                  Utils.pyClassDefinitionToPyStatement (Syntax.ClassDefinition {
-                    Syntax.classDefinitionDecorators = builderDecs,
-                    Syntax.classDefinitionName = (Syntax.Name "Builder"),
-                    Syntax.classDefinitionTypeParams = [],
-                    Syntax.classDefinitionArguments = recordArgs,
-                    Syntax.classDefinitionBody = builderBody})
-          qualifiedBuilderName = Syntax.Name (Strings.concat2 (Syntax.unName pyName) ".Builder")
-          builderCall = Utils.functionCall (Utils.pyNameToPyPrimary qualifiedBuilderName) []
-          factoryMethod =
-                  Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
-                    Syntax.functionDefinitionDecorators = (Just (Syntax.Decorators [
-                      Syntax.NamedExpressionSimple (Utils.pyNameToPyExpression (Syntax.Name "staticmethod"))])),
-                    Syntax.functionDefinitionRaw = Syntax.FunctionDefRaw {
-                      Syntax.functionDefRawAsync = False,
-                      Syntax.functionDefRawName = (Syntax.Name "builder"),
-                      Syntax.functionDefRawTypeParams = [],
-                      Syntax.functionDefRawParams = (Just (Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
-                        Syntax.paramNoDefaultParametersParamNoDefault = [],
-                        Syntax.paramNoDefaultParametersParamWithDefault = [],
-                        Syntax.paramNoDefaultParametersStarEtc = Nothing}))),
-                      Syntax.functionDefRawReturnType = Nothing,
-                      Syntax.functionDefRawFuncTypeComment = Nothing,
-                      Syntax.functionDefRawBlock = (Utils.indentedBlock Nothing [
-                        [
-                          Utils.returnSingle builderCall]])}}))
-      in (Right [
-        factoryMethod,
-        builderClass]))
-
--- | Build a fluent setter for the nested Builder of a record
-recordBuilderSetter :: PythonEnvironment.PythonEnvironment -> Core.FieldType -> Syntax.Statement
-recordBuilderSetter env fieldType =
-
-      let fname = Core.fieldTypeName fieldType
-          setterName = builderSetterName env fname
-          paramName = Syntax.Name setterName
-          storageName = Strings.concat2 "_" (Syntax.unName (PythonNames.encodeFieldName env (Core.fieldTypeName fieldType)))
-          kwarg =
-                  Syntax.KwargOrStarredKwarg (Syntax.Kwarg {
-                    Syntax.kwargName = (Syntax.Name storageName),
-                    Syntax.kwargValue = (Utils.pyNameToPyExpression paramName)})
-      in (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
-        Syntax.functionDefinitionDecorators = Nothing,
-        Syntax.functionDefinitionRaw = Syntax.FunctionDefRaw {
-          Syntax.functionDefRawAsync = False,
-          Syntax.functionDefRawName = (Syntax.Name setterName),
-          Syntax.functionDefRawTypeParams = [],
-          Syntax.functionDefRawParams = (Just (Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
-            Syntax.paramNoDefaultParametersParamNoDefault = [
-              Syntax.ParamNoDefault {
-                Syntax.paramNoDefaultParam = Syntax.Param {
-                  Syntax.paramName = (Syntax.Name "self"),
-                  Syntax.paramAnnotation = Nothing},
-                Syntax.paramNoDefaultTypeComment = Nothing},
-              Syntax.ParamNoDefault {
-                Syntax.paramNoDefaultParam = Syntax.Param {
-                  Syntax.paramName = paramName,
-                  Syntax.paramAnnotation = Nothing},
-                Syntax.paramNoDefaultTypeComment = Nothing}],
-            Syntax.paramNoDefaultParametersParamWithDefault = [],
-            Syntax.paramNoDefaultParametersStarEtc = Nothing}))),
-          Syntax.functionDefRawReturnType = Nothing,
-          Syntax.functionDefRawFuncTypeComment = Nothing,
-          Syntax.functionDefRawBlock = (Utils.indentedBlock Nothing [
-            [
-              Utils.returnSingle (Utils.pyPrimaryToPyExpression (Utils.primaryWithRhs (Utils.pyNameToPyPrimary (Syntax.Name "replace")) (Syntax.PrimaryRhsCall (Syntax.Args {
-                Syntax.argsPositional = [
-                  Syntax.PosArgExpression (Utils.pyNameToPyExpression (Syntax.Name "self"))],
-                Syntax.argsKwargOrStarred = [
-                  kwarg],
-                Syntax.argsKwargOrDoubleStarred = []}))))]])}})))
-
--- | Build a per-field copy-update method (with_<field>) for a record
-recordWithMethod :: PythonEnvironment.PythonEnvironment -> Core.FieldType -> Syntax.Statement
-recordWithMethod env fieldType =
-
-      let fname = Core.fieldTypeName fieldType
-          snake = Syntax.unName (PythonNames.encodeFieldName env fname)
-          methodName = Strings.concat2 "with_" snake
-          kwargKey = Syntax.Name snake
-          paramSnake = Logic.ifElse (Equality.equal snake "self") "_self" snake
-          paramName = Syntax.Name paramSnake
-          kwarg =
-                  Syntax.KwargOrStarredKwarg (Syntax.Kwarg {
-                    Syntax.kwargName = kwargKey,
-                    Syntax.kwargValue = (Utils.pyNameToPyExpression paramName)})
-      in (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
-        Syntax.functionDefinitionDecorators = Nothing,
-        Syntax.functionDefinitionRaw = Syntax.FunctionDefRaw {
-          Syntax.functionDefRawAsync = False,
-          Syntax.functionDefRawName = (Syntax.Name methodName),
-          Syntax.functionDefRawTypeParams = [],
-          Syntax.functionDefRawParams = (Just (Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
-            Syntax.paramNoDefaultParametersParamNoDefault = [
-              Syntax.ParamNoDefault {
-                Syntax.paramNoDefaultParam = Syntax.Param {
-                  Syntax.paramName = (Syntax.Name "self"),
-                  Syntax.paramAnnotation = Nothing},
-                Syntax.paramNoDefaultTypeComment = Nothing},
-              Syntax.ParamNoDefault {
-                Syntax.paramNoDefaultParam = Syntax.Param {
-                  Syntax.paramName = paramName,
-                  Syntax.paramAnnotation = Nothing},
-                Syntax.paramNoDefaultTypeComment = Nothing}],
-            Syntax.paramNoDefaultParametersParamWithDefault = [],
-            Syntax.paramNoDefaultParametersStarEtc = Nothing}))),
-          Syntax.functionDefRawReturnType = Nothing,
-          Syntax.functionDefRawFuncTypeComment = Nothing,
-          Syntax.functionDefRawBlock = (Utils.indentedBlock Nothing [
-            [
-              Utils.returnSingle (Utils.pyPrimaryToPyExpression (Utils.primaryWithRhs (Utils.pyNameToPyPrimary (Syntax.Name "replace")) (Syntax.PrimaryRhsCall (Syntax.Args {
-                Syntax.argsPositional = [
-                  Syntax.PosArgExpression (Utils.pyNameToPyExpression (Syntax.Name "self"))],
-                Syntax.argsKwargOrStarred = [
-                  kwarg],
-                Syntax.argsKwargOrDoubleStarred = []}))))]])}})))
-
-setMetaNamespaces :: Util.ModuleNames Syntax.DottedName -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PythonModuleMetadata
-setMetaNamespaces ns m =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = ns,
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaTypeVariables :: PythonEnvironment.PythonModuleMetadata -> S.Set Core.Name -> PythonEnvironment.PythonModuleMetadata
-setMetaTypeVariables m tvars =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = tvars,
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesAnnotated :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesAnnotated m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = b,
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesCallable :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesCallable m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = b,
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesCast :: Bool -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesCast b m =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = b,
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesDataclass :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesDataclass m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = b,
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesDecimal :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesDecimal m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = b,
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesEither :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesEither m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = b,
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesEnum :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesEnum m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = b,
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesFrozenDict :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesFrozenDict m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = b,
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesFrozenList :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesFrozenList m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = b,
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesFrozenSet :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesFrozenSet m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = b,
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesGeneric :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesGeneric m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = b,
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesJust :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesJust m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = b,
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesLeft :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesLeft m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = b,
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesLruCache :: Bool -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesLruCache b m =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = b,
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesMaybe :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesMaybe m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = b,
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesName :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesName m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = b,
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesNode :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesNode m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = b,
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesNothing :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesNothing m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = b,
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesRight :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesRight m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = b,
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesTypeAlias :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesTypeAlias m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = b,
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
-
-setMetaUsesTypeVar :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
-setMetaUsesTypeVar m b =
-    PythonEnvironment.PythonModuleMetadata {
-      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
-      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
-      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
-      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
-      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
-      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
-      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
-      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
-      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
-      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
-      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
-      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
-      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
-      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
-      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
-      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
-      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
-      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
-      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
-      PythonEnvironment.pythonModuleMetadataUsesTypeVar = b}
-
--- | Determine if a binding should be thunked based on its complexity and triviality
-shouldThunkBinding :: Graph.Graph -> Core.Binding -> Bool
-shouldThunkBinding g b = Logic.and (Predicates.isComplexBinding g b) (Logic.not (Predicates.isTrivialTerm (Core.bindingTerm b)))
-
--- | Generate a single from-import statement
-standardImportStatement :: String -> [String] -> Syntax.ImportStatement
-standardImportStatement modName symbols =
-    Syntax.ImportStatementFrom (Syntax.ImportFrom {
-      Syntax.importFromPrefixes = [],
-      Syntax.importFromDottedName = (Just (Syntax.DottedName [
-        Syntax.Name modName])),
-      Syntax.importFromTargets = (Syntax.ImportFromTargetsSimple (Lists.map (\s -> Syntax.ImportFromAsName {
-        Syntax.importFromAsNameName = (Syntax.Name s),
-        Syntax.importFromAsNameAs = Nothing}) symbols))})
-
--- | The target Python version for code generation
-targetPythonVersion :: PythonEnvironment.PythonVersion
-targetPythonVersion = Utils.targetPythonVersion
-
--- | Calculate term arity with proper primitive handling
-termArityWithPrimitives :: Graph.Graph -> Core.Term -> Int
-termArityWithPrimitives graph term =
-    case (Strip.deannotateAndDetypeTerm term) of
-      Core.TermApplication v0 -> Ordering.max 0 (Math.sub (termArityWithPrimitives graph (Core.applicationFunction v0)) 1)
-      Core.TermLambda v0 -> Math.add 1 (termArityWithPrimitives graph (Core.lambdaBody v0))
-      Core.TermProject _ -> 1
-      Core.TermUnwrap _ -> 1
-      Core.TermCases _ -> 1
-      Core.TermVariable v0 -> Optionals.match (Lexical.lookupBinding graph v0) 0 (\el -> Optionals.match (Core.bindingTypeScheme el) (Arity.termArity (Core.bindingTerm el)) (\ts -> Arity.typeSchemeArity ts))
-      _ -> 0
-
--- | Create a TypeVar assignment statement for a type variable name
-tvarStatement :: Syntax.Name -> Syntax.Statement
-tvarStatement name =
-    Utils.assignmentStatement name (Utils.functionCall (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "TypeVar"))) [
-      Utils.doubleQuotedString (Syntax.unName name)])
-
--- | Version-aware type alias statement generation
-typeAliasStatementFor :: PythonEnvironment.PythonEnvironment -> Syntax.Name -> [Syntax.TypeParameter] -> Maybe String -> Syntax.Expression -> Syntax.Statement
-typeAliasStatementFor env name tparams mcomment tyexpr =
-    Logic.ifElse (useInlineTypeParamsFor (PythonEnvironment.pythonEnvironmentVersion env)) (Utils.typeAliasStatement name tparams mcomment tyexpr) (Utils.typeAliasStatement310 name tparams mcomment tyexpr)
-
--- | Version-aware union type statement generation
-unionTypeStatementsFor :: PythonEnvironment.PythonEnvironment -> Syntax.Name -> [Syntax.TypeParameter] -> Maybe String -> Syntax.Expression -> [Syntax.Statement] -> [Syntax.Statement]
-unionTypeStatementsFor env name tparams mcomment tyexpr extraStmts =
-    Logic.ifElse (useInlineTypeParamsFor (PythonEnvironment.pythonEnvironmentVersion env)) (Lists.concat2 [
-      Utils.typeAliasStatement name tparams mcomment tyexpr] extraStmts) (Utils.unionTypeClassStatements310 name mcomment tyexpr extraStmts)
-
--- | Create an expression that calls hydra.overlay.python.dsl.python.unsupported(message) at runtime
-unsupportedExpression :: String -> Syntax.Expression
-unsupportedExpression msg =
-    Utils.functionCall (Utils.pyExpressionToPyPrimary (Utils.projectFromExpression (Utils.projectFromExpression (Utils.projectFromExpression (Utils.projectFromExpression (Utils.projectFromExpression (Syntax.ExpressionSimple (Syntax.Disjunction [
-      Syntax.Conjunction [
-        Syntax.InversionSimple (Syntax.Comparison {
-          Syntax.comparisonLhs = Syntax.BitwiseOr {
-            Syntax.bitwiseOrLhs = Nothing,
-            Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
-              Syntax.bitwiseXorLhs = Nothing,
-              Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
-                Syntax.bitwiseAndLhs = Nothing,
-                Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
-                  Syntax.shiftExpressionLhs = Nothing,
-                  Syntax.shiftExpressionRhs = Syntax.Sum {
-                    Syntax.sumLhs = Nothing,
-                    Syntax.sumRhs = Syntax.Term {
-                      Syntax.termLhs = Nothing,
-                      Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
-                        Syntax.powerLhs = Syntax.AwaitPrimary {
-                          Syntax.awaitPrimaryAwait = False,
-                          Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "hydra")))},
-                        Syntax.powerRhs = Nothing}))}}}}}},
-          Syntax.comparisonRhs = []})]])) (Syntax.Name "overlay")) (Syntax.Name "python")) (Syntax.Name "dsl")) (Syntax.Name "python")) (Syntax.Name "unsupported"))) [
-      Utils.stringToPyExpression Syntax.QuoteStyleDouble msg]
-
--- | Legacy constant for backward compatibility; use useInlineTypeParamsFor in new code
-useInlineTypeParams :: Bool
-useInlineTypeParams = useInlineTypeParamsFor Utils.targetPythonVersion
-
--- | Version-aware inline type parameters
-useInlineTypeParamsFor :: PythonEnvironment.PythonVersion -> Bool
-useInlineTypeParamsFor version = Equality.equal version PythonEnvironment.PythonVersionPython312
-
--- | Create args for variant (Node[type], Generic[tparams])
-variantArgs :: Syntax.Expression -> [Core.Name] -> Syntax.Args
-variantArgs ptype tparams =
-    Utils.pyExpressionsToPyArgs (Optionals.givens [
-      Just (Utils.pyPrimaryToPyExpression (Utils.primaryWithExpressionSlices (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Node"))) [
-        ptype])),
-      (genericArg tparams)])
-
--- | Create a ClosedPattern for a variant based on its characteristics
-variantClosedPattern :: PythonEnvironment.PythonEnvironment -> Core.Name -> Core.Name -> Syntax.Name -> t0 -> Bool -> Core.Name -> Bool -> Syntax.ClosedPattern
-variantClosedPattern env typeName fieldName pyVariantName rowType isEnum varName shouldCapture =
-    Logic.ifElse isEnum (enumVariantPattern env typeName fieldName) (Logic.ifElse (Logic.not shouldCapture) (classVariantPatternUnit pyVariantName) (classVariantPatternWithCapture env pyVariantName varName))
-
--- | Create a wildcard case block with a given body statement
-wildcardCaseBlock :: Syntax.Statement -> Syntax.CaseBlock
-wildcardCaseBlock stmt =
-    Syntax.CaseBlock {
-      Syntax.caseBlockPatterns = (Utils.pyClosedPatternToPyPatterns Syntax.ClosedPatternWildcard),
-      Syntax.caseBlockGuard = Nothing,
-      Syntax.caseBlockBody = (Utils.indentedBlock Nothing [
-        [
-          stmt]])}
-
--- | Execute a computation with definitions in scope
-withDefinitions :: PythonEnvironment.PythonEnvironment -> [Packaging.Definition] -> (PythonEnvironment.PythonEnvironment -> t0) -> t0
-withDefinitions env defs body =
-
-      let bindings =
-              Optionals.givens (Lists.map (\def_ -> case def_ of
-                Packaging.DefinitionTerm v0 -> Just (Core.Binding {
-                  Core.bindingName = (Packaging.termDefinitionName v0),
-                  Core.bindingTerm = (Packaging.termDefinitionBody v0),
-                  Core.bindingTypeScheme = (Optionals.map (\sig -> Scoping.termSignatureToTypeScheme sig) (Packaging.termDefinitionSignature v0))})
-                Packaging.DefinitionType _ -> Nothing
-                _ -> Nothing) defs)
-          dummyLet =
-                  Core.Let {
-                    Core.letBindings = bindings,
-                    Core.letBody = (Core.TermLiteral (Core.LiteralString "dummy"))}
-      in (withLet env dummyLet body)
-
--- | Execute a computation with lambda context (adds lambda parameter to Graph)
-withLambda :: PythonEnvironment.PythonEnvironment -> Core.Lambda -> (PythonEnvironment.PythonEnvironment -> t0) -> t0
-withLambda = Environment.withLambdaContext pythonEnvironmentGetGraph pythonEnvironmentSetGraph
-
--- | Execute a computation with let context (adds let bindings to Graph)
-withLet :: PythonEnvironment.PythonEnvironment -> Core.Let -> (PythonEnvironment.PythonEnvironment -> t0) -> t0
-withLet = Environment.withLetContext pythonEnvironmentGetGraph pythonEnvironmentSetGraph pythonBindingMetadata
-
--- | Execute a computation with inline let context (for walrus operators)
-withLetInline :: PythonEnvironment.PythonEnvironment -> Core.Let -> (PythonEnvironment.PythonEnvironment -> t0) -> t0
-withLetInline env lt body =
-
-      let bindingNames = Lists.map (\b -> Core.bindingName b) (Core.letBindings lt)
-          inlineVars = Sets.fromList bindingNames
-          noMetadata = \tc -> \b -> Nothing
-      in (Environment.withLetContext pythonEnvironmentGetGraph pythonEnvironmentSetGraph noMetadata env lt (\innerEnv ->
-        let updatedEnv =
-                PythonEnvironment.PythonEnvironment {
-                  PythonEnvironment.pythonEnvironmentNamespaces = (PythonEnvironment.pythonEnvironmentNamespaces innerEnv),
-                  PythonEnvironment.pythonEnvironmentBoundTypeVariables = (PythonEnvironment.pythonEnvironmentBoundTypeVariables innerEnv),
-                  PythonEnvironment.pythonEnvironmentGraph = (PythonEnvironment.pythonEnvironmentGraph innerEnv),
-                  PythonEnvironment.pythonEnvironmentNullaryBindings = (PythonEnvironment.pythonEnvironmentNullaryBindings innerEnv),
-                  PythonEnvironment.pythonEnvironmentVersion = (PythonEnvironment.pythonEnvironmentVersion innerEnv),
-                  PythonEnvironment.pythonEnvironmentSkipCasts = (PythonEnvironment.pythonEnvironmentSkipCasts innerEnv),
-                  PythonEnvironment.pythonEnvironmentInlineVariables = (Sets.union inlineVars (PythonEnvironment.pythonEnvironmentInlineVariables innerEnv)),
-                  PythonEnvironment.pythonEnvironmentOverlaySubs = (PythonEnvironment.pythonEnvironmentOverlaySubs innerEnv)}
-        in (body updatedEnv)))
-
--- | Execute a computation with type lambda context
-withTypeLambda :: PythonEnvironment.PythonEnvironment -> Core.TypeLambda -> (PythonEnvironment.PythonEnvironment -> t0) -> t0
-withTypeLambda = Environment.withTypeLambdaContext pythonEnvironmentGetGraph pythonEnvironmentSetGraph
-
--- | Wrap a Python expression in a nullary lambda (thunk) for lazy evaluation
-wrapInNullaryLambda :: Syntax.Expression -> Syntax.Expression
-wrapInNullaryLambda expr =
-    Syntax.ExpressionLambda (Syntax.Lambda {
-      Syntax.lambdaParams = Syntax.LambdaParameters {
-        Syntax.lambdaParametersSlashNoDefault = Nothing,
-        Syntax.lambdaParametersParamNoDefault = [],
-        Syntax.lambdaParametersParamWithDefault = [],
-        Syntax.lambdaParametersStarEtc = Nothing},
-      Syntax.lambdaBody = expr})
-
--- | Wrap lazy-flagged arguments of a primitive call in nullary lambdas, per isLazy metadata (issue #391)
-wrapLazyArguments :: Graph.Graph -> Core.Name -> [Syntax.Expression] -> [Syntax.Expression]
+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.Checking as Checking
+import qualified Hydra.Core.Classes as Classes
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Dependencies as Dependencies
+import qualified Hydra.Core.Environment as CoreEnvironment
+import qualified Hydra.Core.Error.Checking as ErrorChecking
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+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 CoreNames
+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.Rewriting as Rewriting
+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.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+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.Python.Environment as PythonEnvironment
+import qualified Hydra.Python.Names as PythonNames
+import qualified Hydra.Python.Serde as Serde
+import qualified Hydra.Python.Syntax as Syntax
+import qualified Hydra.Python.Utils as Utils
+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.Map as M
+import qualified Data.Set as S
+
+-- | Analyze a function term with Python-specific Graph management
+analyzePythonFunction :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Model.Term -> Either t0 (Typing.FunctionStructure PythonEnvironment.PythonEnvironment)
+analyzePythonFunction cx env term =
+    Analysis.analyzeFunctionTermWith cx pythonBindingMetadata pythonEnvironmentGetGraph pythonEnvironmentSetGraph env term
+
+-- | Escape a builder setter name that would collide with build()/builder()/self
+builderSetterName :: PythonEnvironment.PythonEnvironment -> Model.Name -> String
+builderSetterName env fname =
+
+      let base = Syntax.unName (PythonNames.encodeFieldName env fname)
+      in (Logic.ifElse (Logic.or (Equality.equal base "build") (Logic.or (Equality.equal base "builder") (Equality.equal base "self"))) (Strings.concat2 base "_") base)
+
+-- | Encode a single case (Field) into a CaseBlock for a match statement
+caseBlockToExpr :: t0 -> PythonEnvironment.PythonEnvironment -> Model.Name -> [Model.FieldType] -> Bool -> (PythonEnvironment.PythonEnvironment -> Model.Term -> Either t1 [Syntax.Statement]) -> Model.CaseAlternative -> Either t1 Syntax.CaseBlock
+caseBlockToExpr cx env tname rowType isEnum encodeBody field =
+
+      let fname = Model.caseAlternativeName field
+          fterm = Model.caseAlternativeHandler field
+          stripped = Strip.deannotateAndDetypeTerm fterm
+          effectiveLambda =
+                  case stripped of
+                    Model.TermLambda v0 -> v0
+                    _ ->
+                      let syntheticVar = Model.Name "_matchValue"
+                      in Model.Lambda {
+                        Model.lambdaParameter = syntheticVar,
+                        Model.lambdaDomain = Nothing,
+                        Model.lambdaBody = (Model.TermApplication (Model.Application {
+                          Model.applicationFunction = stripped,
+                          Model.applicationArgument = (Model.TermVariable syntheticVar)}))}
+          v = Model.lambdaParameter effectiveLambda
+          rawBody = Model.lambdaBody effectiveLambda
+          isUnitVariant = isVariantUnitType rowType fname
+          effectiveBody = Logic.ifElse isUnitVariant (eliminateUnitVar v rawBody) rawBody
+          shouldCapture =
+                  Logic.not (Logic.or isUnitVariant (Logic.or (Variables.isFreeVariableInTerm v rawBody) (Predicates.isUnitTerm rawBody)))
+          env2 = pythonEnvironmentSetGraph (Scoping.extendGraphForLambda (pythonEnvironmentGetGraph env) effectiveLambda) env
+          pyVariantName = deconflictVariantName True env2 tname fname (PythonEnvironment.pythonEnvironmentGraph env2)
+          pattern = variantClosedPattern env2 tname fname pyVariantName rowType isEnum v shouldCapture
+      in (Eithers.bind (encodeBody env2 effectiveBody) (\stmts ->
+        let pyBody = Utils.indentedBlock Nothing [
+              stmts]
+        in (Right (Syntax.CaseBlock {
+          Syntax.caseBlockPatterns = (Utils.pyClosedPatternToPyPatterns pattern),
+          Syntax.caseBlockGuard = Nothing,
+          Syntax.caseBlockBody = pyBody}))))
+
+-- | Create a class pattern for a unit variant (no value captured)
+classVariantPatternUnit :: Syntax.Name -> Syntax.ClosedPattern
+classVariantPatternUnit pyVariantName =
+    Syntax.ClosedPatternClass (Syntax.ClassPattern {
+      Syntax.classPatternNameOrAttribute = (Syntax.NameOrAttribute [
+        pyVariantName]),
+      Syntax.classPatternPositionalPatterns = Nothing,
+      Syntax.classPatternKeywordPatterns = Nothing})
+
+-- | Create a class pattern for a variant with captured value
+classVariantPatternWithCapture :: PythonEnvironment.PythonEnvironment -> Syntax.Name -> Model.Name -> Syntax.ClosedPattern
+classVariantPatternWithCapture env pyVariantName varName =
+
+      let pyVarNameAttr = Syntax.NameOrAttribute [
+            pyVariantName]
+          capturePattern =
+                  Syntax.ClosedPatternCapture (Syntax.CapturePattern (Syntax.PatternCaptureTarget (PythonNames.encodeName False Util.CaseConventionLowerSnake env varName)))
+          keywordPattern =
+                  Syntax.KeywordPattern {
+                    Syntax.keywordPatternName = (Syntax.Name "value"),
+                    Syntax.keywordPatternPattern = (Syntax.PatternOr (Syntax.OrPattern [
+                      capturePattern]))}
+      in (Syntax.ClosedPatternClass (Syntax.ClassPattern {
+        Syntax.classPatternNameOrAttribute = pyVarNameAttr,
+        Syntax.classPatternPositionalPatterns = Nothing,
+        Syntax.classPatternKeywordPatterns = (Just (Syntax.KeywordPatterns [
+          keywordPattern]))}))
+
+-- | Collect type variables from a type
+collectTypeVariables :: S.Set Model.Name -> Model.Type -> S.Set Model.Name
+collectTypeVariables initial typ =
+    case (Strip.deannotateType typ) of
+      Model.TypeForall v0 ->
+        let v = Model.forallTypeParameter v0
+            body = Model.forallTypeBody v0
+        in (collectTypeVariables (Sets.insert v initial) body)
+      _ ->
+        let freeVars = Variables.freeVariablesInType typ
+            isTypeVar = \n -> isTypeVariableName n
+            filteredList = Lists.filter isTypeVar (Sets.toList freeVars)
+        in (Sets.union initial (Sets.fromList filteredList))
+
+-- | Conditionally include a symbol name based on a boolean flag
+condImportSymbol :: t0 -> Bool -> Maybe t0
+condImportSymbol name flag = Logic.ifElse flag (Just name) Nothing
+
+-- | Create a @dataclass(frozen=True) decorator
+dataclassDecorator :: Syntax.NamedExpression
+dataclassDecorator =
+    Syntax.NamedExpressionSimple (Utils.pyPrimaryToPyExpression (Utils.primaryWithRhs (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "dataclass"))) (Syntax.PrimaryRhsCall (Syntax.Args {
+      Syntax.argsPositional = [],
+      Syntax.argsKwargOrStarred = [
+        Syntax.KwargOrStarredKwarg (Syntax.Kwarg {
+          Syntax.kwargName = (Syntax.Name "frozen"),
+          Syntax.kwargValue = (Utils.pyAtomToPyExpression Syntax.AtomTrue)})],
+      Syntax.argsKwargOrDoubleStarred = []}))))
+
+-- | Deconflict a variant name to avoid collisions with type names
+deconflictVariantName :: Bool -> PythonEnvironment.PythonEnvironment -> Model.Name -> Model.Name -> Graph.Graph -> Syntax.Name
+deconflictVariantName isQualified env unionName fname g =
+
+      let candidateHydraName = Model.Name (Strings.concat2 (Model.unName unionName) (Formatting.capitalize (Model.unName fname)))
+          termCollision = Maps.member candidateHydraName (Graph.graphBoundTerms g)
+          typeCollision = Maps.member candidateHydraName (Graph.graphSchemaTypes g)
+          collision = Logic.or termCollision typeCollision
+      in (Logic.ifElse collision (Syntax.Name (Strings.concat2 (Syntax.unName (PythonNames.variantName isQualified env unionName fname)) "_")) (PythonNames.variantName isQualified env unionName fname))
+
+-- | Rewrite case statements to avoid variable name collisions
+deduplicateCaseVariables :: [Model.CaseAlternative] -> [Model.CaseAlternative]
+deduplicateCaseVariables cases_ =
+
+      let rewriteCase =
+              \state -> \field ->
+                let countByName = Pairs.first state
+                    done = Pairs.second state
+                    fname = Model.caseAlternativeName field
+                    fterm = Model.caseAlternativeHandler field
+                in case (Strip.deannotateAndDetypeTerm fterm) of
+                  Model.TermLambda v0 ->
+                    let v = Model.lambdaParameter v0
+                        mdom = Model.lambdaDomain v0
+                        body = Model.lambdaBody v0
+                    in (Optionals.match (Maps.lookup v countByName) (Maps.insert v 1 countByName, (Lists.cons field done)) (\count ->
+                      let count2 = Math.add count 1
+                          v2 = Model.Name (Strings.concat2 (Model.unName v) (Literals.printInt32 count2))
+                          newBody = Reduction.alphaConvert v v2 body
+                          newLam =
+                                  Model.Lambda {
+                                    Model.lambdaParameter = v2,
+                                    Model.lambdaDomain = mdom,
+                                    Model.lambdaBody = newBody}
+                          newTerm = Model.TermLambda newLam
+                          newField =
+                                  Model.CaseAlternative {
+                                    Model.caseAlternativeName = fname,
+                                    Model.caseAlternativeHandler = newTerm}
+                      in (Maps.insert v count2 countByName, (Lists.cons newField done))))
+                  _ -> (countByName, (Lists.cons field done))
+          result = Lists.foldl rewriteCase (Maps.empty, []) cases_
+      in (Lists.reverse (Pairs.second result))
+
+-- | Recursively dig through forall types to find wrap types
+digForWrap :: Bool -> PythonEnvironment.PythonModuleMetadata -> Model.Type -> PythonEnvironment.PythonModuleMetadata
+digForWrap isTermAnnot meta typ =
+    case (Strip.deannotateType typ) of
+      Model.TypeForall v0 -> digForWrap isTermAnnot meta (Model.forallTypeBody v0)
+      Model.TypeWrap _ -> Logic.ifElse isTermAnnot meta (setMetaUsesNode meta True)
+      _ -> meta
+
+-- | Substitute unit for a variable in a term (for unit variant case handling)
+eliminateUnitVar :: Model.Name -> Model.Term -> Model.Term
+eliminateUnitVar v term0 =
+
+      let rewriteField =
+              \rewrite -> \fld -> Model.Field {
+                Model.fieldName = (Model.fieldName fld),
+                Model.fieldTerm = (rewrite (Model.fieldTerm fld))}
+          rewriteCaseAlternative =
+                  \rewrite -> \alt -> Model.CaseAlternative {
+                    Model.caseAlternativeName = (Model.caseAlternativeName alt),
+                    Model.caseAlternativeHandler = (rewrite (Model.caseAlternativeHandler alt))}
+          rewriteBinding =
+                  \rewrite -> \bnd -> Model.Binding {
+                    Model.bindingName = (Model.bindingName bnd),
+                    Model.bindingTerm = (rewrite (Model.bindingTerm bnd)),
+                    Model.bindingTypeScheme = (Model.bindingTypeScheme bnd)}
+          rewrite =
+                  \recurse -> \term -> case (Strip.deannotateAndDetypeTerm term) of
+                    Model.TermVariable v0 -> Logic.ifElse (Equality.equal v0 v) Model.TermUnit term
+                    Model.TermAnnotated v0 -> Model.TermAnnotated (Model.AnnotatedTerm {
+                      Model.annotatedTermBody = (recurse (Model.annotatedTermBody v0)),
+                      Model.annotatedTermAnnotation = (Model.annotatedTermAnnotation v0)})
+                    Model.TermApplication v0 -> Model.TermApplication (Model.Application {
+                      Model.applicationFunction = (recurse (Model.applicationFunction v0)),
+                      Model.applicationArgument = (recurse (Model.applicationArgument v0))})
+                    Model.TermLambda v0 -> Logic.ifElse (Equality.equal (Model.lambdaParameter v0) v) term (Model.TermLambda (Model.Lambda {
+                      Model.lambdaParameter = (Model.lambdaParameter v0),
+                      Model.lambdaDomain = (Model.lambdaDomain v0),
+                      Model.lambdaBody = (recurse (Model.lambdaBody v0))}))
+                    Model.TermCases v0 -> Model.TermCases (Model.CaseStatement {
+                      Model.caseStatementTypeName = (Model.caseStatementTypeName v0),
+                      Model.caseStatementDefault = (Optionals.map recurse (Model.caseStatementDefault v0)),
+                      Model.caseStatementCases = (Lists.map (rewriteCaseAlternative recurse) (Model.caseStatementCases v0))})
+                    Model.TermLet v0 -> Model.TermLet (Model.Let {
+                      Model.letBindings = (Lists.map (rewriteBinding recurse) (Model.letBindings v0)),
+                      Model.letBody = (recurse (Model.letBody v0))})
+                    Model.TermList v0 -> Model.TermList (Lists.map recurse v0)
+                    Model.TermMap v0 -> Model.TermMap (Maps.fromList (Lists.map (\kv -> (recurse (Pairs.first kv), (recurse (Pairs.second kv)))) (Maps.toList v0)))
+                    Model.TermRecord v0 -> Model.TermRecord (Model.Record {
+                      Model.recordTypeName = (Model.recordTypeName v0),
+                      Model.recordFields = (Lists.map (rewriteField recurse) (Model.recordFields v0))})
+                    Model.TermSet v0 -> Model.TermSet (Sets.map recurse v0)
+                    Model.TermInject v0 -> Model.TermInject (Model.Injection {
+                      Model.injectionTypeName = (Model.injectionTypeName v0),
+                      Model.injectionField = (rewriteField recurse (Model.injectionField v0))})
+                    Model.TermOptional v0 -> Model.TermOptional (Optionals.map recurse v0)
+                    Model.TermPair v0 -> Model.TermPair (recurse (Pairs.first v0), (recurse (Pairs.second v0)))
+                    Model.TermWrap v0 -> Model.TermWrap (Model.WrappedTerm {
+                      Model.wrappedTermTypeName = (Model.wrappedTermTypeName v0),
+                      Model.wrappedTermBody = (recurse (Model.wrappedTermBody v0))})
+                    Model.TermEither v0 -> Model.TermEither (Eithers.bimap recurse recurse v0)
+                    Model.TermTypeApplication v0 -> Model.TermTypeApplication (Model.TypeApplicationTerm {
+                      Model.typeApplicationTermBody = (recurse (Model.typeApplicationTermBody v0)),
+                      Model.typeApplicationTermType = (Model.typeApplicationTermType v0)})
+                    Model.TermTypeLambda v0 -> Model.TermTypeLambda (Model.TypeLambda {
+                      Model.typeLambdaParameter = (Model.typeLambdaParameter v0),
+                      Model.typeLambdaBody = (recurse (Model.typeLambdaBody v0))})
+                    _ -> term
+          go = \term -> rewrite go term
+      in (go term0)
+
+-- | Create an initial empty metadata record with given namespaces
+emptyMetadata :: Util.ModuleNames Syntax.DottedName -> PythonEnvironment.PythonModuleMetadata
+emptyMetadata ns =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = ns,
+      PythonEnvironment.pythonModuleMetadataTypeVariables = Sets.empty,
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = False,
+      PythonEnvironment.pythonModuleMetadataUsesCallable = False,
+      PythonEnvironment.pythonModuleMetadataUsesCast = False,
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = False,
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = False,
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = False,
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = False,
+      PythonEnvironment.pythonModuleMetadataUsesEither = False,
+      PythonEnvironment.pythonModuleMetadataUsesEnum = False,
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = False,
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = False,
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = False,
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = False,
+      PythonEnvironment.pythonModuleMetadataUsesJust = False,
+      PythonEnvironment.pythonModuleMetadataUsesLeft = False,
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = False,
+      PythonEnvironment.pythonModuleMetadataUsesName = False,
+      PythonEnvironment.pythonModuleMetadataUsesNode = False,
+      PythonEnvironment.pythonModuleMetadataUsesNothing = False,
+      PythonEnvironment.pythonModuleMetadataUsesRight = False,
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = False}
+
+-- | Encode a function application to a Python expression
+encodeApplication :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Model.Application -> Either Errors.Error Syntax.Expression
+encodeApplication cx env app =
+
+      let g = pythonEnvironmentGetGraph env
+          term = Model.TermApplication app
+          gathered = Analysis.gatherArgs term []
+          fun = Pairs.first gathered
+          args = Pairs.second gathered
+          knownArity = termArityWithPrimitives g fun
+          arity = Ordering.max knownArity (Lists.length args)
+      in (Eithers.bind (Eithers.mapList (\t -> encodeTermInline cx env False t) args) (\pargs ->
+        let hargs = Lists.take arity pargs
+            rargs = Lists.drop arity pargs
+        in (Eithers.bind (encodeApplicationInner cx env fun hargs rargs) (\result ->
+          let lhs = Pairs.first result
+              remainingRargs = Pairs.second result
+              pyapp = Lists.foldl (\t -> \a -> Utils.functionCall (Utils.pyExpressionToPyPrimary t) [
+                    a]) lhs remainingRargs
+          in (Right pyapp)))))
+
+-- | Inner helper for encodeApplication
+encodeApplicationInner :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Model.Term -> [Syntax.Expression] -> [Syntax.Expression] -> Either Errors.Error (Syntax.Expression, [Syntax.Expression])
+encodeApplicationInner cx env fun hargs rargs =
+
+      let firstArg = Optionals.withDefault (Utils.pyNameToPyExpression (Syntax.Name "")) (Lists.head hargs)
+          restArgs = Lists.drop 1 hargs
+          withRest = \e -> Logic.ifElse (Lists.isEmpty restArgs) e (Utils.functionCall (Utils.pyExpressionToPyPrimary e) restArgs)
+          defaultCase =
+                  Eithers.bind (encodeTermInline cx env False fun) (\pfun -> Right (Utils.functionCall (Utils.pyExpressionToPyPrimary pfun) hargs, rargs))
+      in case (Strip.deannotateAndDetypeTerm fun) of
+        Model.TermProject v0 ->
+          let fname = Model.projectionFieldName v0
+              fieldExpr = Utils.projectFromExpression firstArg (PythonNames.encodeFieldName env fname)
+          in (Right (withRest fieldExpr, rargs))
+        Model.TermCases v0 -> Eithers.bind (encodeUnionEliminationInline cx env v0 firstArg) (\inlineExpr -> Right (withRest inlineExpr, rargs))
+        Model.TermUnwrap _ ->
+          let valueExpr = Utils.projectFromExpression firstArg (Syntax.Name "value")
+              allArgs = Lists.concat2 restArgs rargs
+          in (Logic.ifElse (Lists.isEmpty allArgs) (Right (valueExpr, [])) (Right (Utils.functionCall (Utils.pyExpressionToPyPrimary valueExpr) allArgs, [])))
+        Model.TermLambda _ -> Eithers.bind (encodeTermInline cx env False fun) (\pfun -> Right (Utils.functionCall (Utils.pyExpressionToPyPrimary pfun) hargs, rargs))
+        Model.TermVariable v0 ->
+          let g = pythonEnvironmentGetGraph env
+              allArgs = Lists.concat2 hargs rargs
+              inlineVars = PythonEnvironment.pythonEnvironmentInlineVariables env
+          in (Optionals.match (Maps.lookup v0 (Graph.graphPrimitives g)) (Optionals.match (Lexical.lookupBinding g v0) (Eithers.bind (encodeVariable cx env v0 hargs) (\expr -> Right (expr, rargs))) (\el -> Optionals.match (Model.bindingTypeScheme el) (Eithers.bind (encodeVariable cx env v0 hargs) (\expr -> Right (expr, rargs))) (\ts ->
+            let elArity = Arity.typeSchemeArity ts
+                consumeCount = Ordering.min elArity (Lists.length allArgs)
+                consumedArgs = Lists.take consumeCount allArgs
+                remainingArgs = Lists.drop consumeCount allArgs
+            in (Logic.ifElse (Lists.isEmpty consumedArgs) (Eithers.bind (encodeVariable cx env v0 []) (\expr -> Right (expr, rargs))) (Logic.ifElse (Sets.member v0 inlineVars) (Right (
+              Utils.functionCall (Utils.pyExpressionToPyPrimary (lazyDotGet (PythonNames.termVariableReference env v0))) consumedArgs,
+              remainingArgs)) (Right (
+              Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionLowerSnake env v0)) consumedArgs,
+              remainingArgs))))))) (\_prim ->
+            let wrappedArgs = wrapLazyArguments g v0 hargs
+            in (Eithers.bind (encodeVariable cx env v0 wrappedArgs) (\expr -> Right (expr, rargs)))))
+        _ -> defaultCase
+
+-- | Encode an application type to Python expression
+encodeApplicationType :: PythonEnvironment.PythonEnvironment -> Model.ApplicationType -> Either t0 Syntax.Expression
+encodeApplicationType env at =
+
+      let gatherParams =
+              \t -> \ps -> case (Strip.deannotateType t) of
+                Model.TypeApplication v0 -> gatherParams (Model.applicationTypeFunction v0) (Lists.cons (Model.applicationTypeArgument v0) ps)
+                Model.TypeAnnotated _ -> (t, ps)
+                Model.TypeEffect _ -> (t, ps)
+                Model.TypeFunction _ -> (t, ps)
+                Model.TypeForall _ -> (t, ps)
+                Model.TypeList _ -> (t, ps)
+                Model.TypeLiteral _ -> (t, ps)
+                Model.TypeMap _ -> (t, ps)
+                Model.TypeOptional _ -> (t, ps)
+                Model.TypeEither _ -> (t, ps)
+                Model.TypePair _ -> (t, ps)
+                Model.TypeRecord _ -> (t, ps)
+                Model.TypeSet _ -> (t, ps)
+                Model.TypeUnion _ -> (t, ps)
+                Model.TypeUnit -> (t, ps)
+                Model.TypeVariable _ -> (t, ps)
+                Model.TypeVoid -> (t, ps)
+                Model.TypeWrap _ -> (t, ps)
+          bodyAndArgs = gatherParams (Model.TypeApplication at) []
+          body = Pairs.first bodyAndArgs
+          args = Pairs.second bodyAndArgs
+      in (Eithers.bind (encodeType env body) (\pyBody -> Eithers.bind (Eithers.mapList (encodeType env) args) (\pyArgs -> Right (Utils.primaryAndParams (Utils.pyExpressionToPyPrimary pyBody) pyArgs))))
+
+-- | Encode a binding as a Python statement (function definition or assignment)
+encodeBindingAs :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Model.Binding -> Either Errors.Error Syntax.Statement
+encodeBindingAs cx env binding =
+
+      let name1 = Model.bindingName binding
+          term1 = Model.bindingTerm binding
+          mts = Model.bindingTypeScheme binding
+          fname = PythonNames.encodeName True Util.CaseConventionLowerSnake env name1
+      in (Optionals.match mts (
+        let gathered = gatherLambdas term1
+            lambdaParams = Pairs.first gathered
+            innerBody = Pairs.second gathered
+            mcsa = isCaseStatementApplication innerBody
+        in (Optionals.match mcsa (
+          let mcs = extractCaseElimination term1
+          in (Optionals.match mcs (Eithers.bind (encodeTermMultiline cx env term1) (\stmts -> Optionals.match (Lists.head stmts) (Left (Errors.ErrorOther (Errors.OtherError "encodeTermMultiline returned no statements"))) (\x -> Right x))) (\cs ->
+            let tname = Model.caseStatementTypeName cs
+                dflt = Model.caseStatementDefault cs
+                cases_ = Model.caseStatementCases cs
+            in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
+              let isEnum = Predicates.isEnumRowType rt
+                  isFull = isCasesFull rt cases_
+                  innerParam =
+                          Syntax.Param {
+                            Syntax.paramName = (Syntax.Name "x"),
+                            Syntax.paramAnnotation = Nothing}
+                  param =
+                          Syntax.ParamNoDefault {
+                            Syntax.paramNoDefaultParam = innerParam,
+                            Syntax.paramNoDefaultTypeComment = Nothing}
+                  params =
+                          Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
+                            Syntax.paramNoDefaultParametersParamNoDefault = [
+                              param],
+                            Syntax.paramNoDefaultParametersParamWithDefault = [],
+                            Syntax.paramNoDefaultParametersStarEtc = Nothing})
+              in (Eithers.bind (Eithers.mapList (caseBlockToExpr cx env tname rt isEnum (\e -> \t -> encodeTermMultiline cx e t)) cases_) (\pyCases -> Eithers.bind (encodeDefaultCaseBlock (\t -> encodeTermInline cx env False t) isFull dflt tname) (\pyDflt ->
+                let subj = Syntax.SubjectExpressionSimple (Syntax.NamedExpressionSimple (Utils.pyNameToPyExpression (Syntax.Name "x")))
+                    allCases = Lists.concat2 pyCases pyDflt
+                    matchStmt =
+                            Syntax.StatementCompound (Syntax.CompoundStatementMatch (Syntax.MatchStatement {
+                              Syntax.matchStatementSubject = subj,
+                              Syntax.matchStatementCases = allCases}))
+                    body = Utils.indentedBlock Nothing [
+                          [
+                            matchStmt]]
+                    funcDefRaw =
+                            Syntax.FunctionDefRaw {
+                              Syntax.functionDefRawAsync = False,
+                              Syntax.functionDefRawName = fname,
+                              Syntax.functionDefRawTypeParams = [],
+                              Syntax.functionDefRawParams = (Just params),
+                              Syntax.functionDefRawReturnType = Nothing,
+                              Syntax.functionDefRawFuncTypeComment = Nothing,
+                              Syntax.functionDefRawBlock = body}
+                in (Right (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
+                  Syntax.functionDefinitionDecorators = Nothing,
+                  Syntax.functionDefinitionRaw = funcDefRaw})))))))))))) (\csa -> Logic.ifElse (Lists.isEmpty lambdaParams) (
+          let mcs = extractCaseElimination term1
+          in (Optionals.match mcs (Eithers.bind (encodeTermMultiline cx env term1) (\stmts -> Optionals.match (Lists.head stmts) (Left (Errors.ErrorOther (Errors.OtherError "encodeTermMultiline returned no statements"))) (\x -> Right x))) (\cs ->
+            let tname = Model.caseStatementTypeName cs
+                dflt = Model.caseStatementDefault cs
+                cases_ = Model.caseStatementCases cs
+            in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
+              let isEnum = Predicates.isEnumRowType rt
+                  isFull = isCasesFull rt cases_
+                  innerParam =
+                          Syntax.Param {
+                            Syntax.paramName = (Syntax.Name "x"),
+                            Syntax.paramAnnotation = Nothing}
+                  param =
+                          Syntax.ParamNoDefault {
+                            Syntax.paramNoDefaultParam = innerParam,
+                            Syntax.paramNoDefaultTypeComment = Nothing}
+                  params =
+                          Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
+                            Syntax.paramNoDefaultParametersParamNoDefault = [
+                              param],
+                            Syntax.paramNoDefaultParametersParamWithDefault = [],
+                            Syntax.paramNoDefaultParametersStarEtc = Nothing})
+              in (Eithers.bind (Eithers.mapList (caseBlockToExpr cx env tname rt isEnum (\e -> \t -> encodeTermMultiline cx e t)) cases_) (\pyCases -> Eithers.bind (encodeDefaultCaseBlock (\t -> encodeTermInline cx env False t) isFull dflt tname) (\pyDflt ->
+                let subj = Syntax.SubjectExpressionSimple (Syntax.NamedExpressionSimple (Utils.pyNameToPyExpression (Syntax.Name "x")))
+                    allCases = Lists.concat2 pyCases pyDflt
+                    matchStmt =
+                            Syntax.StatementCompound (Syntax.CompoundStatementMatch (Syntax.MatchStatement {
+                              Syntax.matchStatementSubject = subj,
+                              Syntax.matchStatementCases = allCases}))
+                    body = Utils.indentedBlock Nothing [
+                          [
+                            matchStmt]]
+                    funcDefRaw =
+                            Syntax.FunctionDefRaw {
+                              Syntax.functionDefRawAsync = False,
+                              Syntax.functionDefRawName = fname,
+                              Syntax.functionDefRawTypeParams = [],
+                              Syntax.functionDefRawParams = (Just params),
+                              Syntax.functionDefRawReturnType = Nothing,
+                              Syntax.functionDefRawFuncTypeComment = Nothing,
+                              Syntax.functionDefRawBlock = body}
+                in (Right (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
+                  Syntax.functionDefinitionDecorators = Nothing,
+                  Syntax.functionDefinitionRaw = funcDefRaw})))))))))))) (
+          let tname = Pairs.first csa
+              rest1 = Pairs.second csa
+              dflt = Pairs.first rest1
+              rest2 = Pairs.second rest1
+              cases_ = Pairs.first rest2
+          in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
+            let isEnum = Predicates.isEnumRowType rt
+                isFull = isCasesFull rt cases_
+                capturedVarNames = Optionals.withDefault [] (Lists.init lambdaParams)
+                matchLambdaParam = Optionals.withDefault (Model.Name "") (Lists.last lambdaParams)
+                capturedParams =
+                        Lists.map (\n -> Syntax.ParamNoDefault {
+                          Syntax.paramNoDefaultParam = Syntax.Param {
+                            Syntax.paramName = (PythonNames.encodeName False Util.CaseConventionLowerSnake env n),
+                            Syntax.paramAnnotation = Nothing},
+                          Syntax.paramNoDefaultTypeComment = Nothing}) capturedVarNames
+                matchArgName = PythonNames.encodeName False Util.CaseConventionLowerSnake env matchLambdaParam
+                matchParam =
+                        Syntax.ParamNoDefault {
+                          Syntax.paramNoDefaultParam = Syntax.Param {
+                            Syntax.paramName = matchArgName,
+                            Syntax.paramAnnotation = Nothing},
+                          Syntax.paramNoDefaultTypeComment = Nothing}
+                allParams = Lists.concat2 capturedParams [
+                      matchParam]
+                params =
+                        Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
+                          Syntax.paramNoDefaultParametersParamNoDefault = allParams,
+                          Syntax.paramNoDefaultParametersParamWithDefault = [],
+                          Syntax.paramNoDefaultParametersStarEtc = Nothing})
+                envWithParams = extendEnvWithLambdaParams env term1
+            in (Eithers.bind (Eithers.mapList (caseBlockToExpr cx envWithParams tname rt isEnum (\e -> \t -> encodeTermMultiline cx e t)) cases_) (\pyCases -> Eithers.bind (encodeDefaultCaseBlock (\t -> encodeTermInline cx envWithParams False t) isFull dflt tname) (\pyDflt ->
+              let subj = Syntax.SubjectExpressionSimple (Syntax.NamedExpressionSimple (Utils.pyNameToPyExpression matchArgName))
+                  allCases = Lists.concat2 pyCases pyDflt
+                  matchStmt =
+                          Syntax.StatementCompound (Syntax.CompoundStatementMatch (Syntax.MatchStatement {
+                            Syntax.matchStatementSubject = subj,
+                            Syntax.matchStatementCases = allCases}))
+                  body = Utils.indentedBlock Nothing [
+                        [
+                          matchStmt]]
+                  funcDefRaw =
+                          Syntax.FunctionDefRaw {
+                            Syntax.functionDefRawAsync = False,
+                            Syntax.functionDefRawName = fname,
+                            Syntax.functionDefRawTypeParams = [],
+                            Syntax.functionDefRawParams = (Just params),
+                            Syntax.functionDefRawReturnType = Nothing,
+                            Syntax.functionDefRawFuncTypeComment = Nothing,
+                            Syntax.functionDefRawBlock = body}
+              in (Right (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
+                Syntax.functionDefinitionDecorators = Nothing,
+                Syntax.functionDefinitionRaw = funcDefRaw}))))))))))))) (\ts -> Eithers.bind (Annotations.getTermDescription cx (pythonEnvironmentGetGraph env) term1) (\comment ->
+        let normComment = Optionals.map Formatting.normalizeComment comment
+        in (encodeTermAssignment cx env False name1 term1 ts normComment))))
+
+-- | Encode a binding as a walrus operator assignment
+encodeBindingAsAssignment :: Typing.InferenceContext -> Bool -> PythonEnvironment.PythonEnvironment -> Model.Binding -> Either Errors.Error Syntax.NamedExpression
+encodeBindingAsAssignment cx allowThunking env binding =
+
+      let name = Model.bindingName binding
+          term = Model.bindingTerm binding
+          mts = Model.bindingTypeScheme binding
+          pyName = PythonNames.encodeName False Util.CaseConventionLowerSnake env name
+      in (Eithers.bind (encodeTermInline cx env False term) (\pbody ->
+        let tc = PythonEnvironment.pythonEnvironmentGraph env
+            isComplexVar = Predicates.isComplexVariable tc name
+            termIsComplex = Predicates.isComplexTerm tc term
+            isTrivial = Predicates.isTrivialTerm term
+            needsThunk =
+                    Logic.ifElse isTrivial False (Optionals.match mts (Logic.and allowThunking (Logic.or isComplexVar termIsComplex)) (\ts -> Logic.and allowThunking (Logic.and (Equality.equal (Arity.typeSchemeArity ts) 0) (Logic.or isComplexVar termIsComplex))))
+            pterm = makeLazy pbody
+        in (Right (Syntax.NamedExpressionAssignment (Syntax.AssignmentExpression {
+          Syntax.assignmentExpressionName = pyName,
+          Syntax.assignmentExpressionExpression = pterm})))))
+
+-- | Encode bindings as function definitions
+encodeBindingsAsDefs :: t0 -> (t0 -> t1 -> Either t2 t3) -> [t1] -> Either t2 [t3]
+encodeBindingsAsDefs env encodeBinding bindings = Eithers.mapList (encodeBinding env) bindings
+
+-- | Encode the default (wildcard) case block for a match statement
+encodeDefaultCaseBlock :: (t0 -> Either t1 Syntax.Expression) -> Bool -> Maybe t0 -> Model.Name -> Either t1 [Syntax.CaseBlock]
+encodeDefaultCaseBlock termToExpr isFull mdflt tname =
+    Eithers.bind (Optionals.match mdflt (Right (Logic.ifElse isFull (Utils.raiseAssertionError "Unreachable: all variants handled") (Utils.raiseTypeError (Strings.concat2 "Unsupported " (CoreNames.localNameOf tname))))) (\d -> Eithers.bind (termToExpr d) (\pyexpr -> Right (Utils.returnSingle pyexpr)))) (\stmt ->
+      let patterns = Utils.pyClosedPatternToPyPatterns Syntax.ClosedPatternWildcard
+          body = Utils.indentedBlock Nothing [
+                [
+                  stmt]]
+      in (Right [
+        Syntax.CaseBlock {
+          Syntax.caseBlockPatterns = patterns,
+          Syntax.caseBlockGuard = Nothing,
+          Syntax.caseBlockBody = body}]))
+
+-- | Encode a definition (term or type) to Python statements
+encodeDefinition :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Packaging.Definition -> Either Errors.Error [[Syntax.Statement]]
+encodeDefinition cx env def_ =
+    case def_ of
+      Packaging.DefinitionTerm v0 ->
+        let name = Packaging.termDefinitionName v0
+            term = Packaging.termDefinitionBody v0
+            typ =
+                    Optionals.match (Packaging.termDefinitionSignature v0) (Model.TypeScheme {
+                      Model.typeSchemeVariables = [],
+                      Model.typeSchemeBody = (Model.TypeVariable (Model.Name "hydra.core.model.Unit")),
+                      Model.typeSchemeConstraints = Maps.empty}) (\sig -> Scoping.termSignatureToTypeScheme sig)
+        in (Eithers.bind (Annotations.getTermDescription cx (pythonEnvironmentGetGraph env) term) (\comment ->
+          let normComment = Optionals.map Formatting.normalizeComment comment
+          in (Eithers.bind (encodeTermAssignment cx env True name term typ normComment) (\stmt -> Right [
+            [
+              stmt]]))))
+      Packaging.DefinitionType v0 ->
+        let name = Packaging.typeDefinitionName v0
+            typ = Model.typeSchemeBody (Packaging.typeDefinitionBody v0)
+        in (Eithers.bind (Annotations.getTypeDescription cx (pythonEnvironmentGetGraph env) typ) (\comment ->
+          let normComment = Optionals.map Formatting.normalizeComment comment
+          in (encodeTypeAssignment cx env name typ normComment)))
+
+-- | Encode an enum value assignment statement with optional comment
+encodeEnumValueAssignment :: t0 -> PythonEnvironment.PythonEnvironment -> Model.FieldType -> Either Errors.Error [Syntax.Statement]
+encodeEnumValueAssignment cx env fieldType =
+
+      let fname = Model.fieldTypeName fieldType
+          ftype = Model.fieldTypeType fieldType
+      in (Eithers.bind (Annotations.getTypeDescription cx (pythonEnvironmentGetGraph env) ftype) (\mcomment ->
+        let pyName = PythonNames.encodeEnumValue env fname
+            fnameStr = Model.unName fname
+            pyValue =
+                    Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionPascal env (Model.Name "hydra.core.model.Name"))) [
+                      Utils.doubleQuotedString fnameStr]
+            assignStmt = Utils.assignmentStatement pyName pyValue
+        in (Right (Optionals.match mcomment [
+          assignStmt] (\c -> [
+          assignStmt,
+          (Utils.pyExpressionToPyStatement (Utils.tripleQuotedString c))])))))
+
+-- | Encode a field (name-value pair) to a Python (Name, Expression) pair
+encodeField :: t0 -> PythonEnvironment.PythonEnvironment -> Model.Field -> (Model.Term -> Either t1 t2) -> Either t1 (Syntax.Name, t2)
+encodeField cx env field termToExpr =
+
+      let fname = Model.fieldName field
+          fterm = Model.fieldTerm field
+      in (Eithers.bind (termToExpr fterm) (\pterm -> Right (PythonNames.encodeFieldName env fname, pterm)))
+
+-- | Encode a field type for record definitions (field: type annotation)
+encodeFieldType :: t0 -> PythonEnvironment.PythonEnvironment -> Model.FieldType -> Either Errors.Error Syntax.Statement
+encodeFieldType cx env fieldType =
+
+      let fname = Model.fieldTypeName fieldType
+          ftype = Model.fieldTypeType fieldType
+      in (Eithers.bind (Annotations.getTypeDescription cx (pythonEnvironmentGetGraph env) ftype) (\comment ->
+        let pyName = Syntax.SingleTargetName (PythonNames.encodeFieldName env fname)
+        in (Eithers.bind (encodeType env ftype) (\pyType ->
+          let annotatedPyType = Utils.annotatedExpression comment pyType
+          in (Right (Utils.pyAssignmentToPyStatement (Syntax.AssignmentTyped (Syntax.TypedAssignment {
+            Syntax.typedAssignmentLhs = pyName,
+            Syntax.typedAssignmentType = annotatedPyType,
+            Syntax.typedAssignmentRhs = Nothing}))))))))
+
+-- | Encode a float value to a Python expression
+encodeFloatValue :: Model.FloatValue -> Either t0 Syntax.Expression
+encodeFloatValue fv =
+    case fv of
+      Model.FloatValueFloat32 v0 -> encodeFloatValueEncodeFloat32 v0
+      Model.FloatValueFloat64 v0 -> encodeFloatValueEncodeFloat64 v0
+
+encodeFloatValueEncodeFloat32 :: Float -> Either t0 Syntax.Expression
+encodeFloatValueEncodeFloat32 v =
+
+      let s = Literals.printFloat32 v
+      in (Logic.ifElse (Equality.equal s "NaN") (Right (encodeFloatValuePySpecialFloat "nan")) (Logic.ifElse (Equality.equal s "Infinity") (Right (encodeFloatValuePySpecialFloat "inf")) (Logic.ifElse (Equality.equal s "-Infinity") (Right (encodeFloatValuePySpecialFloat "-inf")) (Right (Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberFloat (Literals.float32ToFloat64 v))))))))
+
+encodeFloatValueEncodeFloat64 :: Double -> Either t0 Syntax.Expression
+encodeFloatValueEncodeFloat64 v =
+
+      let s = Literals.printFloat64 v
+      in (Logic.ifElse (Equality.equal s "NaN") (Right (encodeFloatValuePySpecialFloat "nan")) (Logic.ifElse (Equality.equal s "Infinity") (Right (encodeFloatValuePySpecialFloat "inf")) (Logic.ifElse (Equality.equal s "-Infinity") (Right (encodeFloatValuePySpecialFloat "-inf")) (Logic.ifElse (Equality.equal s "-0.0") (Right (encodeFloatValuePySpecialFloat "-0.0")) (Right (Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberFloat v))))))))
+
+encodeFloatValuePySpecialFloat :: String -> Syntax.Expression
+encodeFloatValuePySpecialFloat value =
+    Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "float")) [
+      Utils.singleQuotedString value]
+
+-- | Encode a forall type to Python expression
+encodeForallType :: PythonEnvironment.PythonEnvironment -> Model.ForallType -> Either t0 Syntax.Expression
+encodeForallType env lt =
+
+      let gatherParams =
+              \t -> \ps -> case (Strip.deannotateType t) of
+                Model.TypeForall v0 -> gatherParams (Model.forallTypeBody v0) (Lists.cons (Model.forallTypeParameter v0) ps)
+                Model.TypeAnnotated _ -> (t, (Lists.reverse ps))
+                Model.TypeApplication _ -> (t, (Lists.reverse ps))
+                Model.TypeEffect _ -> (t, (Lists.reverse ps))
+                Model.TypeFunction _ -> (t, (Lists.reverse ps))
+                Model.TypeList _ -> (t, (Lists.reverse ps))
+                Model.TypeLiteral _ -> (t, (Lists.reverse ps))
+                Model.TypeMap _ -> (t, (Lists.reverse ps))
+                Model.TypeOptional _ -> (t, (Lists.reverse ps))
+                Model.TypeEither _ -> (t, (Lists.reverse ps))
+                Model.TypePair _ -> (t, (Lists.reverse ps))
+                Model.TypeRecord _ -> (t, (Lists.reverse ps))
+                Model.TypeSet _ -> (t, (Lists.reverse ps))
+                Model.TypeUnion _ -> (t, (Lists.reverse ps))
+                Model.TypeUnit -> (t, (Lists.reverse ps))
+                Model.TypeVariable _ -> (t, (Lists.reverse ps))
+                Model.TypeVoid -> (t, (Lists.reverse ps))
+                Model.TypeWrap _ -> (t, (Lists.reverse ps))
+          bodyAndParams = gatherParams (Model.TypeForall lt) []
+          body = Pairs.first bodyAndParams
+          params = Pairs.second bodyAndParams
+      in (Eithers.bind (encodeType env body) (\pyBody -> Right (Utils.primaryAndParams (Utils.pyExpressionToPyPrimary pyBody) (Lists.map (\n -> Syntax.ExpressionSimple (Syntax.Disjunction [
+        Syntax.Conjunction [
+          Syntax.InversionSimple (Syntax.Comparison {
+            Syntax.comparisonLhs = Syntax.BitwiseOr {
+              Syntax.bitwiseOrLhs = Nothing,
+              Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
+                Syntax.bitwiseXorLhs = Nothing,
+                Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
+                  Syntax.bitwiseAndLhs = Nothing,
+                  Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
+                    Syntax.shiftExpressionLhs = Nothing,
+                    Syntax.shiftExpressionRhs = Syntax.Sum {
+                      Syntax.sumLhs = Nothing,
+                      Syntax.sumRhs = Syntax.Term {
+                        Syntax.termLhs = Nothing,
+                        Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
+                          Syntax.powerLhs = Syntax.AwaitPrimary {
+                            Syntax.awaitPrimaryAwait = False,
+                            Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name (Model.unName n))))},
+                          Syntax.powerRhs = Nothing}))}}}}}},
+            Syntax.comparisonRhs = []})]])) params))))
+
+-- | Encode a function type to Python Callable expression
+encodeFunctionType :: PythonEnvironment.PythonEnvironment -> Model.FunctionType -> Either t0 Syntax.Expression
+encodeFunctionType env ft =
+
+      let gatherParams =
+              \rdoms -> \ftype ->
+                let innerCod = Model.functionTypeCodomain ftype
+                    dom = Model.functionTypeDomain ftype
+                in case (Strip.deannotateType innerCod) of
+                  Model.TypeFunction v0 -> gatherParams (Lists.cons dom rdoms) v0
+                  Model.TypeAnnotated _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeApplication _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeEffect _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeForall _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeList _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeLiteral _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeMap _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeOptional _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeEither _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypePair _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeRecord _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeSet _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeUnion _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeUnit -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeVariable _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeVoid -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+                  Model.TypeWrap _ -> (Lists.reverse (Lists.cons dom rdoms), innerCod)
+          domsAndCod = gatherParams [] ft
+          doms = Pairs.first domsAndCod
+          cod = Pairs.second domsAndCod
+      in (Eithers.bind (Eithers.mapList (encodeType env) doms) (\pydoms -> Eithers.bind (encodeType env cod) (\pycod -> Right (Utils.pyPrimaryToPyExpression (Utils.primaryWithSlices (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Callable"))) (Utils.pyPrimaryToPySlice (Syntax.PrimarySimple (Syntax.AtomList (Utils.pyList pydoms)))) [
+        Syntax.SliceOrStarredExpressionSlice (Utils.pyExpressionToPySlice pycod)])))))
+
+-- | Encode an integer value to a Python expression
+encodeIntegerValue :: Model.IntegerValue -> Either t0 Syntax.Expression
+encodeIntegerValue iv =
+
+      let toPyInt = \n -> Right (Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberInteger n)))
+      in case iv of
+        Model.IntegerValueBigint v0 -> toPyInt v0
+        Model.IntegerValueInt8 v0 -> toPyInt (Literals.int8ToBigint v0)
+        Model.IntegerValueInt16 v0 -> toPyInt (Literals.int16ToBigint v0)
+        Model.IntegerValueInt32 v0 -> toPyInt (Literals.int32ToBigint v0)
+        Model.IntegerValueInt64 v0 -> toPyInt (Literals.int64ToBigint v0)
+        Model.IntegerValueUint8 v0 -> toPyInt (Literals.uint8ToBigint v0)
+        Model.IntegerValueUint16 v0 -> toPyInt (Literals.uint16ToBigint v0)
+        Model.IntegerValueUint32 v0 -> toPyInt (Literals.uint32ToBigint v0)
+        Model.IntegerValueUint64 v0 -> toPyInt (Literals.uint64ToBigint v0)
+
+-- | Encode a literal value to a Python expression
+encodeLiteral :: Model.Literal -> Either t0 Syntax.Expression
+encodeLiteral lit =
+    case lit of
+      Model.LiteralBinary v0 ->
+        let byteValues = Literals.binaryToBytes v0
+        in (Right (Utils.functionCall (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "bytes"))) [
+          Utils.pyAtomToPyExpression (Syntax.AtomList (Utils.pyList (Lists.map (\byteVal -> Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberInteger (Literals.int32ToBigint byteVal)))) byteValues)))]))
+      Model.LiteralBoolean v0 -> Right (Utils.pyAtomToPyExpression (Logic.ifElse v0 Syntax.AtomTrue Syntax.AtomFalse))
+      Model.LiteralDecimal v0 -> Right (Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "Decimal")) [
+        Utils.singleQuotedString (Literals.printDecimal v0)])
+      Model.LiteralFloat v0 -> encodeFloatValue v0
+      Model.LiteralInteger v0 -> encodeIntegerValue v0
+      Model.LiteralString v0 -> Right (Utils.stringToPyExpression Syntax.QuoteStyleDouble v0)
+
+-- | Encode a literal type to a Python type expression
+encodeLiteralType :: Model.LiteralType -> Either t0 Syntax.Expression
+encodeLiteralType lt =
+
+      let findName =
+              case lt of
+                Model.LiteralTypeBinary -> "bytes"
+                Model.LiteralTypeBoolean -> "bool"
+                Model.LiteralTypeDecimal -> "Decimal"
+                Model.LiteralTypeFloat v0 -> case v0 of
+                  Model.FloatTypeFloat32 -> "float"
+                  Model.FloatTypeFloat64 -> "float"
+                Model.LiteralTypeInteger _ -> "int"
+                Model.LiteralTypeString -> "str"
+      in (Right (Syntax.ExpressionSimple (Syntax.Disjunction [
+        Syntax.Conjunction [
+          Syntax.InversionSimple (Syntax.Comparison {
+            Syntax.comparisonLhs = Syntax.BitwiseOr {
+              Syntax.bitwiseOrLhs = Nothing,
+              Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
+                Syntax.bitwiseXorLhs = Nothing,
+                Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
+                  Syntax.bitwiseAndLhs = Nothing,
+                  Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
+                    Syntax.shiftExpressionLhs = Nothing,
+                    Syntax.shiftExpressionRhs = Syntax.Sum {
+                      Syntax.sumLhs = Nothing,
+                      Syntax.sumRhs = Syntax.Term {
+                        Syntax.termLhs = Nothing,
+                        Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
+                          Syntax.powerLhs = Syntax.AwaitPrimary {
+                            Syntax.awaitPrimaryAwait = False,
+                            Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name findName)))},
+                          Syntax.powerRhs = Nothing}))}}}}}},
+            Syntax.comparisonRhs = []})]])))
+
+-- | Generate name constants for a type as class-level attributes
+encodeNameConstants :: PythonEnvironment.PythonEnvironment -> Model.Name -> [Model.FieldType] -> [Syntax.Statement]
+encodeNameConstants env name fields =
+
+      let toStmt =
+              \pair -> Utils.assignmentStatement (Pairs.first pair) (Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionPascal env (Model.Name "hydra.core.model.Name"))) [
+                Utils.doubleQuotedString (Model.unName (Pairs.second pair))])
+          namePair = (PythonNames.encodeConstantForTypeName env name, name)
+          fieldPairs =
+                  Lists.map (\field -> (PythonNames.encodeConstantForFieldName env name (Model.fieldTypeName field), (Model.fieldTypeName field))) fields
+      in (Lists.map toStmt (Lists.cons namePair fieldPairs))
+
+-- | Encode a Hydra module to a Python module AST, given the on-disk overlay-existence set (#630) driving emission-time primitive-reference redirects
+encodePythonModule :: S.Set String -> Typing.InferenceContext -> Graph.Graph -> Packaging.Module -> [Packaging.Definition] -> Either Errors.Error Syntax.Module
+encodePythonModule overlaySubs cx g mod defs0 =
+
+      let defs = CoreEnvironment.reorderDefs defs0
+          meta0 = gatherMetadata overlaySubs (Packaging.moduleName mod) defs
+          namespaces0 = PythonEnvironment.pythonModuleMetadataNamespaces meta0
+          env0 = initialEnvironment namespaces0 g overlaySubs
+          isTypeMod = isTypeModuleCheck defs0
+      in (withDefinitions env0 defs (\env -> Eithers.bind (Eithers.map (\xs -> Lists.concat xs) (Eithers.mapList (\d -> encodeDefinition cx env d) defs)) (\defStmts ->
+        let meta2 = Logic.ifElse (Logic.and (Logic.not isTypeMod) useInlineTypeParams) (setMetaUsesTypeVar meta0 False) meta0
+            meta =
+                    Logic.ifElse (Logic.and isTypeMod (Equality.equal targetPythonVersion PythonEnvironment.PythonVersionPython310)) (setMetaUsesTypeAlias meta2 True) meta2
+            namespaces = PythonEnvironment.pythonModuleMetadataNamespaces meta0
+            commentStmts =
+                    Optionals.match (Optionals.map Formatting.normalizeComment (Optionals.bind (Packaging.moduleMetadata mod) (\em -> Packaging.entityMetadataDescription em))) [] (\c -> [
+                      Utils.commentStatement c])
+            importStmts = moduleImports namespaces meta
+            tvars =
+                    Logic.ifElse (Logic.or isTypeMod (Logic.not useInlineTypeParams)) (PythonEnvironment.pythonModuleMetadataTypeVariables meta) Sets.empty
+            tvarStmts = Lists.map (\tv -> tvarStatement (PythonNames.encodeTypeVariable tv)) (Sets.toList tvars)
+            body =
+                    Lists.filter (\group -> Logic.not (Lists.isEmpty group)) (Lists.concat [
+                      [
+                        commentStmts,
+                        importStmts,
+                        tvarStmts],
+                      defStmts])
+        in (Right (Syntax.Module body)))))
+
+-- | Encode a record type as a Python dataclass
+encodeRecordType :: t0 -> PythonEnvironment.PythonEnvironment -> Model.Name -> [Model.FieldType] -> Maybe String -> Either Errors.Error Syntax.Statement
+encodeRecordType cx env name rowType comment =
+    Eithers.bind (Eithers.mapList (encodeFieldType cx env) rowType) (\pyFields ->
+      let constStmts = encodeNameConstants env name rowType
+          withMethods = Lists.map (recordWithMethod env) rowType
+          boundVars = PythonEnvironment.pythonEnvironmentBoundTypeVariables env
+          tparamList = Pairs.first boundVars
+          mGenericArg = genericArg tparamList
+          args = Optionals.match mGenericArg Nothing (\a -> Just (Utils.pyExpressionsToPyArgs [
+                a]))
+          decs = Just (Syntax.Decorators [
+                dataclassDecorator])
+          pyName = PythonNames.encodeName False Util.CaseConventionPascal env name
+          noTypeParams = []
+      in (Eithers.bind (recordBuilderClass env name rowType args) (\builderStmts ->
+        let body =
+                Utils.indentedBlock comment [
+                  pyFields,
+                  constStmts,
+                  withMethods,
+                  builderStmts]
+        in (Right (Utils.pyClassDefinitionToPyStatement (Syntax.ClassDefinition {
+          Syntax.classDefinitionDecorators = decs,
+          Syntax.classDefinitionName = pyName,
+          Syntax.classDefinitionTypeParams = noTypeParams,
+          Syntax.classDefinitionArguments = args,
+          Syntax.classDefinitionBody = body}))))))
+
+-- | Encode a term assignment to a Python statement
+encodeTermAssignment :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Bool -> Model.Name -> Model.Term -> Model.TypeScheme -> Maybe String -> Either Errors.Error Syntax.Statement
+encodeTermAssignment cx env topLevel name term ts comment =
+    Eithers.bind (analyzePythonFunction cx env term) (\fs ->
+      let tparams = Typing.functionStructureTypeParams fs
+          params = Typing.functionStructureParams fs
+          bindings = Typing.functionStructureBindings fs
+          body = Typing.functionStructureBody fs
+          domsRaw = Typing.functionStructureDomains fs
+          sigTermSig = Scoping.typeSchemeToTermSignature ts
+          sigParamTypes = Lists.map (\p -> Typing.parameterType p) (Typing.termSignatureParameters sigTermSig)
+          sigResult = Typing.termSignatureResult sigTermSig
+          sigCod = Typing.resultType sigResult
+          doms = fillDomsFromSignature domsRaw sigParamTypes
+          mcod = Just sigCod
+          env2 = Typing.functionStructureEnvironment fs
+          tc = PythonEnvironment.pythonEnvironmentGraph env2
+          binding =
+                  Model.Binding {
+                    Model.bindingName = name,
+                    Model.bindingTerm = term,
+                    Model.bindingTypeScheme = (Just ts)}
+          isComplex = Predicates.isComplexBinding tc binding
+          isTrivial = Predicates.isTrivialTerm term
+      in (Logic.ifElse (Logic.and isComplex (Logic.not isTrivial)) (Logic.ifElse (Logic.and (Logic.not topLevel) (Lists.isEmpty params)) (Eithers.bind (encodeTermInline cx env2 False term) (\bodyExpr ->
+        let pyName = PythonNames.encodeName False Util.CaseConventionLowerSnake env2 name
+            lazyExpr = makeLazy bodyExpr
+        in (Right (Utils.annotatedStatement comment (Utils.assignmentStatement pyName lazyExpr))))) (Eithers.bind (Eithers.mapList (encodeBindingAs cx env2) bindings) (\bindingStmts -> functionDefinitionToExpr cx env2 name tparams params body doms mcod comment bindingStmts))) (Eithers.bind (encodeTermInline cx env2 False body) (\bodyExpr ->
+        let pyName = PythonNames.encodeName False Util.CaseConventionLowerSnake env2 name
+        in (Right (Utils.annotatedStatement comment (Utils.assignmentStatement pyName bodyExpr)))))))
+
+-- | Encode a term to a Python expression (inline form)
+encodeTermInline :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Bool -> Model.Term -> Either Errors.Error Syntax.Expression
+encodeTermInline cx env noCast term =
+
+      let encode = \t -> encodeTermInline cx env False t
+          stripTypeApps =
+                  \t -> case t of
+                    Model.TermAnnotated v0 -> stripTypeApps (Model.annotatedTermBody v0)
+                    Model.TermTypeApplication v0 -> stripTypeApps (Model.typeApplicationTermBody v0)
+                    _ -> t
+          withCast =
+                  \pyexp -> Logic.ifElse (Logic.or noCast (PythonEnvironment.pythonEnvironmentSkipCasts env)) (Right pyexp) (
+                    let tc = PythonEnvironment.pythonEnvironmentGraph env
+                        mtyp = Eithers.map (\_r -> Pairs.first _r) (Checking.typeOf cx tc [] term)
+                    in (Eithers.either (\_ -> Right pyexp) (\typ -> Eithers.either (\_ -> Right pyexp) (\pytyp -> Right (Utils.castTo pytyp pyexp)) (encodeType env typ)) mtyp))
+      in case (Strip.deannotateAndDetypeTerm term) of
+        Model.TermApplication v0 -> encodeApplication cx env v0
+        Model.TermEither v0 -> Eithers.either (\t1 -> Eithers.bind (encode t1) (\pyexp -> withCast (Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "Left")) [
+          pyexp]))) (\t1 -> Eithers.bind (encode t1) (\pyexp -> withCast (Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "Right")) [
+          pyexp]))) v0
+        Model.TermLambda v0 -> Eithers.bind (analyzePythonFunction cx env (Model.TermLambda v0)) (\fs ->
+          let params = Typing.functionStructureParams fs
+              bindings = Typing.functionStructureBindings fs
+              innerBody = Typing.functionStructureBody fs
+              innerEnv0 = Typing.functionStructureEnvironment fs
+              bindingNames = Lists.map (\b -> Model.bindingName b) bindings
+              innerEnv =
+                      PythonEnvironment.PythonEnvironment {
+                        PythonEnvironment.pythonEnvironmentNamespaces = (PythonEnvironment.pythonEnvironmentNamespaces innerEnv0),
+                        PythonEnvironment.pythonEnvironmentBoundTypeVariables = (PythonEnvironment.pythonEnvironmentBoundTypeVariables innerEnv0),
+                        PythonEnvironment.pythonEnvironmentGraph = (PythonEnvironment.pythonEnvironmentGraph innerEnv0),
+                        PythonEnvironment.pythonEnvironmentNullaryBindings = (PythonEnvironment.pythonEnvironmentNullaryBindings innerEnv0),
+                        PythonEnvironment.pythonEnvironmentVersion = (PythonEnvironment.pythonEnvironmentVersion innerEnv0),
+                        PythonEnvironment.pythonEnvironmentSkipCasts = (PythonEnvironment.pythonEnvironmentSkipCasts innerEnv0),
+                        PythonEnvironment.pythonEnvironmentInlineVariables = (Sets.union (Sets.fromList bindingNames) (PythonEnvironment.pythonEnvironmentInlineVariables innerEnv0)),
+                        PythonEnvironment.pythonEnvironmentOverlaySubs = (PythonEnvironment.pythonEnvironmentOverlaySubs innerEnv0)}
+          in (Eithers.bind (encodeTermInline cx innerEnv False innerBody) (\pbody ->
+            let pparams = Lists.map (PythonNames.encodeName False Util.CaseConventionLowerSnake innerEnv) params
+            in (Logic.ifElse (Lists.isEmpty bindings) (Right (makeUncurriedLambda pparams pbody)) (Eithers.bind (Eithers.mapList (encodeBindingAsAssignment cx False innerEnv) bindings) (\pbindingExprs ->
+              let pbindingStarExprs = Lists.map (\ne -> Syntax.StarNamedExpressionSimple ne) pbindingExprs
+                  pbodyStarExpr = Utils.pyExpressionToPyStarNamedExpression pbody
+                  tupleElements = Lists.concat2 pbindingStarExprs [
+                        pbodyStarExpr]
+                  tupleExpr = Utils.pyAtomToPyExpression (Syntax.AtomTuple (Syntax.Tuple tupleElements))
+                  indexValue =
+                          Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberInteger (Literals.int32ToBigint (Lists.length bindings))))
+                  indexedExpr = Utils.primaryWithExpressionSlices (Utils.pyExpressionToPyPrimary tupleExpr) [
+                        indexValue]
+              in (Right (makeUncurriedLambda pparams (Utils.pyPrimaryToPyExpression indexedExpr)))))))))
+        Model.TermProject v0 ->
+          let fname = Model.projectionFieldName v0
+          in (Right (makeCurriedLambda [
+            Syntax.Name "v1"] (Utils.projectFromExpression (Syntax.ExpressionSimple (Syntax.Disjunction [
+            Syntax.Conjunction [
+              Syntax.InversionSimple (Syntax.Comparison {
+                Syntax.comparisonLhs = Syntax.BitwiseOr {
+                  Syntax.bitwiseOrLhs = Nothing,
+                  Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
+                    Syntax.bitwiseXorLhs = Nothing,
+                    Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
+                      Syntax.bitwiseAndLhs = Nothing,
+                      Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
+                        Syntax.shiftExpressionLhs = Nothing,
+                        Syntax.shiftExpressionRhs = Syntax.Sum {
+                          Syntax.sumLhs = Nothing,
+                          Syntax.sumRhs = Syntax.Term {
+                            Syntax.termLhs = Nothing,
+                            Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
+                              Syntax.powerLhs = Syntax.AwaitPrimary {
+                                Syntax.awaitPrimaryAwait = False,
+                                Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "v1")))},
+                              Syntax.powerRhs = Nothing}))}}}}}},
+                Syntax.comparisonRhs = []})]])) (PythonNames.encodeFieldName env fname))))
+        Model.TermUnwrap _ -> Right (makeCurriedLambda [
+          Syntax.Name "v1"] (Utils.projectFromExpression (Syntax.ExpressionSimple (Syntax.Disjunction [
+          Syntax.Conjunction [
+            Syntax.InversionSimple (Syntax.Comparison {
+              Syntax.comparisonLhs = Syntax.BitwiseOr {
+                Syntax.bitwiseOrLhs = Nothing,
+                Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
+                  Syntax.bitwiseXorLhs = Nothing,
+                  Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
+                    Syntax.bitwiseAndLhs = Nothing,
+                    Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
+                      Syntax.shiftExpressionLhs = Nothing,
+                      Syntax.shiftExpressionRhs = Syntax.Sum {
+                        Syntax.sumLhs = Nothing,
+                        Syntax.sumRhs = Syntax.Term {
+                          Syntax.termLhs = Nothing,
+                          Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
+                            Syntax.powerLhs = Syntax.AwaitPrimary {
+                              Syntax.awaitPrimaryAwait = False,
+                              Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "v1")))},
+                            Syntax.powerRhs = Nothing}))}}}}}},
+              Syntax.comparisonRhs = []})]])) (Syntax.Name "value")))
+        Model.TermCases _ -> Right (unsupportedExpression "case expressions as values are not yet supported")
+        Model.TermLet v0 ->
+          let bindings = Model.letBindings v0
+              body = Model.letBody v0
+          in (Logic.ifElse (Lists.isEmpty bindings) (encodeTermInline cx env False body) (withLetInline env v0 (\innerEnv -> Eithers.bind (Eithers.mapList (encodeBindingAsAssignment cx False innerEnv) bindings) (\pbindingExprs -> Eithers.bind (encodeTermInline cx innerEnv False body) (\pbody ->
+            let pbindingStarExprs = Lists.map (\ne -> Syntax.StarNamedExpressionSimple ne) pbindingExprs
+                pbodyStarExpr = Utils.pyExpressionToPyStarNamedExpression pbody
+                tupleElements = Lists.concat2 pbindingStarExprs [
+                      pbodyStarExpr]
+                tupleExpr = Utils.pyAtomToPyExpression (Syntax.AtomTuple (Syntax.Tuple tupleElements))
+                indexValue =
+                        Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberInteger (Literals.int32ToBigint (Lists.length bindings))))
+                indexedExpr = Utils.primaryWithExpressionSlices (Utils.pyExpressionToPyPrimary tupleExpr) [
+                      indexValue]
+            in (Right (Utils.pyPrimaryToPyExpression indexedExpr)))))))
+        Model.TermList v0 -> Eithers.bind (Eithers.mapList encode v0) (\pyExprs ->
+          let consListOf = Utils.projectFromExpression (Utils.pyNameToPyExpression (Syntax.Name "ConsList")) (Syntax.Name "of")
+          in (Right (Utils.functionCall (Utils.pyExpressionToPyPrimary consListOf) pyExprs)))
+        Model.TermLiteral v0 -> encodeLiteral v0
+        Model.TermMap v0 -> Eithers.bind (Eithers.mapList (\kv ->
+          let k = Pairs.first kv
+              v = Pairs.second kv
+          in (Eithers.bind (encode k) (\pyK -> Eithers.bind (encode v) (\pyV -> Right (Utils.pyAtomToPyExpression (Syntax.AtomTuple (Syntax.Tuple [
+            Utils.pyExpressionToPyStarNamedExpression pyK,
+            (Utils.pyExpressionToPyStarNamedExpression pyV)]))))))) (Maps.toList v0)) (\tuplePairs ->
+          let pmapOfEntries =
+                  Utils.projectFromExpression (Utils.pyNameToPyExpression (Syntax.Name "PersistentMap")) (Syntax.Name "of_entries")
+          in (Right (Utils.functionCall (Utils.pyExpressionToPyPrimary pmapOfEntries) tuplePairs)))
+        Model.TermOptional v0 -> Optionals.match v0 (Right (Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "None_")) [])) (\t1 -> Eithers.bind (encode t1) (\pyexp -> withCast (Utils.functionCall (Utils.pyNameToPyPrimary (Syntax.Name "Given")) [
+          pyexp])))
+        Model.TermPair v0 ->
+          let t1 = Pairs.first v0
+              t2 = Pairs.second v0
+          in (Eithers.bind (encode t1) (\pyExpr1 -> Eithers.bind (encode t2) (\pyExpr2 -> Right (Utils.pyAtomToPyExpression (Syntax.AtomTuple (Syntax.Tuple [
+            Utils.pyExpressionToPyStarNamedExpression pyExpr1,
+            (Utils.pyExpressionToPyStarNamedExpression pyExpr2)]))))))
+        Model.TermRecord v0 ->
+          let tname = Model.recordTypeName v0
+              fields = Model.recordFields v0
+          in (Eithers.bind (Eithers.mapList (\fld -> encode (Model.fieldTerm fld)) fields) (\pargs -> Right (Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeNameQualified env tname)) pargs)))
+        Model.TermSet v0 -> Eithers.bind (Eithers.mapList encode (Sets.toList v0)) (\pyEls ->
+          let psetOf = Utils.projectFromExpression (Utils.pyNameToPyExpression (Syntax.Name "PersistentSet")) (Syntax.Name "of")
+          in (Right (Utils.functionCall (Utils.pyExpressionToPyPrimary psetOf) pyEls)))
+        Model.TermTypeApplication v0 ->
+          let body = Model.typeApplicationTermBody v0
+          in (Eithers.bind (encodeTermInline cx env True (stripTypeApps body)) (\pybase -> withCast pybase))
+        Model.TermTypeLambda v0 ->
+          let body = Model.typeLambdaBody v0
+          in (withTypeLambda env v0 (\env2 -> encodeTermInline cx env2 noCast body))
+        Model.TermInject v0 ->
+          let tname = Model.injectionTypeName v0
+              field = Model.injectionField v0
+          in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt -> Logic.ifElse (Predicates.isEnumRowType rt) (Right (Utils.projectFromExpression (Utils.pyNameToPyExpression (PythonNames.encodeNameQualified env tname)) (PythonNames.encodeEnumValue env (Model.fieldName field)))) (
+            let fname = Model.fieldName field
+                isUnitVariant =
+                        Optionals.match (Lists.find (\ft -> Equality.equal (Model.unName (Model.fieldTypeName ft)) (Model.unName fname)) rt) False (\ft -> Predicates.isUnitType (Strip.deannotateType (Model.fieldTypeType ft)))
+            in (Eithers.bind (Logic.ifElse (Logic.or (Predicates.isUnitTerm (Model.fieldTerm field)) isUnitVariant) (Right []) (Eithers.bind (encode (Model.fieldTerm field)) (\parg -> Right [
+              parg]))) (\args ->
+              let deconflictedName = deconflictVariantName True env tname fname (PythonEnvironment.pythonEnvironmentGraph env)
+              in (Right (Utils.castTo (PythonNames.typeVariableReference env tname) (Utils.functionCall (Utils.pyNameToPyPrimary deconflictedName) args))))))))
+        Model.TermUnit -> Right (Utils.pyNameToPyExpression Utils.pyNone)
+        Model.TermVariable v0 -> encodeVariable cx env v0 []
+        Model.TermWrap v0 ->
+          let tname = Model.wrappedTermTypeName v0
+              inner = Model.wrappedTermBody v0
+          in (Eithers.bind (encode inner) (\parg -> Right (Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeNameQualified env tname)) [
+            parg])))
+
+-- | Encode a term to a list of statements with return as final statement
+encodeTermMultiline :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Model.Term -> Either Errors.Error [Syntax.Statement]
+encodeTermMultiline cx env term =
+
+      let dfltLogic =
+              Eithers.bind (analyzePythonFunction cx env term) (\fs ->
+                let params = Typing.functionStructureParams fs
+                    bindings = Typing.functionStructureBindings fs
+                    innerBody = Typing.functionStructureBody fs
+                    env2 = Typing.functionStructureEnvironment fs
+                in (Logic.ifElse (Lists.isEmpty bindings) (Eithers.bind (encodeTermInline cx env False term) (\expr -> Right [
+                  Utils.returnSingle expr])) (Eithers.bind (Eithers.mapList (encodeBindingAs cx env2) bindings) (\bindingStmts -> Eithers.bind (encodeTermMultiline cx env2 innerBody) (\bodyStmts -> Right (Lists.concat2 bindingStmts bodyStmts))))))
+          gathered = Analysis.gatherApplications term
+          args = Pairs.first gathered
+          body = Pairs.second gathered
+      in (Logic.ifElse (Equality.equal (Lists.length args) 1) (
+        let arg = Optionals.withDefault Model.TermUnit (Lists.head args)
+        in case (Strip.deannotateAndDetypeTerm body) of
+          Model.TermCases v0 ->
+            let tname = Model.caseStatementTypeName v0
+                dflt = Model.caseStatementDefault v0
+                cases_ = Model.caseStatementCases v0
+            in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
+              let isEnum = Predicates.isEnumRowType rt
+                  isFull = isCasesFull rt cases_
+              in (Eithers.bind (encodeTermInline cx env False arg) (\pyArg -> Eithers.bind (Eithers.mapList (caseBlockToExpr cx env tname rt isEnum (\e -> \t -> encodeTermMultiline cx e t)) (deduplicateCaseVariables cases_)) (\pyCases -> Eithers.bind (encodeDefaultCaseBlock (\t -> encodeTermInline cx env False t) isFull dflt tname) (\pyDflt ->
+                let subj = Syntax.SubjectExpressionSimple (Syntax.NamedExpressionSimple pyArg)
+                    matchStmt =
+                            Syntax.StatementCompound (Syntax.CompoundStatementMatch (Syntax.MatchStatement {
+                              Syntax.matchStatementSubject = subj,
+                              Syntax.matchStatementCases = (Lists.concat2 pyCases pyDflt)}))
+                in (Right [
+                  matchStmt])))))))
+          _ -> dfltLogic) dfltLogic)
+
+-- | Encode a term body for TCO: tail self-calls become param reassignment + continue
+encodeTermMultilineTCO :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Model.Name -> [Model.Name] -> Model.Term -> Either Errors.Error [Syntax.Statement]
+encodeTermMultilineTCO cx env funcName paramNames term =
+
+      let stripped = Strip.deannotateAndDetypeTerm term
+          gathered = Analysis.gatherApplications stripped
+          gatherArgs = Pairs.first gathered
+          gatherFun = Pairs.second gathered
+          strippedFun = Strip.deannotateAndDetypeTerm gatherFun
+          isSelfCall =
+                  case strippedFun of
+                    Model.TermVariable v0 -> Equality.equal v0 funcName
+                    _ -> False
+      in (Logic.ifElse (Logic.and isSelfCall (Equality.equal (Lists.length gatherArgs) (Lists.length paramNames))) (Eithers.bind (Eithers.mapList (\a -> encodeTermInline cx env False a) gatherArgs) (\pyArgs ->
+        let assignments =
+                Lists.map (\pair ->
+                  let paramName = Pairs.first pair
+                      pyArg = Pairs.second pair
+                  in (Utils.assignmentStatement (PythonNames.encodeName False Util.CaseConventionLowerSnake env paramName) pyArg)) (Lists.zip paramNames pyArgs)
+            continueStmt = Syntax.StatementSimple [
+                  Syntax.SimpleStatementContinue]
+        in (Right (Lists.concat2 assignments [
+          continueStmt])))) (
+        let gathered2 = Analysis.gatherApplications term
+            args2 = Pairs.first gathered2
+            body2 = Pairs.second gathered2
+        in (Logic.ifElse (Equality.equal (Lists.length args2) 1) (
+          let arg = Optionals.withDefault Model.TermUnit (Lists.head args2)
+          in case (Strip.deannotateAndDetypeTerm body2) of
+            Model.TermCases v0 ->
+              let tname = Model.caseStatementTypeName v0
+                  dflt = Model.caseStatementDefault v0
+                  cases_ = Model.caseStatementCases v0
+              in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
+                let isEnum = Predicates.isEnumRowType rt
+                    isFull = isCasesFull rt cases_
+                in (Eithers.bind (encodeTermInline cx env False arg) (\pyArg -> Eithers.bind (Eithers.mapList (caseBlockToExpr cx env tname rt isEnum (\e2 -> \t2 -> encodeTermMultilineTCO cx e2 funcName paramNames t2)) (deduplicateCaseVariables cases_)) (\pyCases -> Eithers.bind (encodeDefaultCaseBlock (\t2 -> encodeTermInline cx env False t2) isFull dflt tname) (\pyDflt ->
+                  let subj = Syntax.SubjectExpressionSimple (Syntax.NamedExpressionSimple pyArg)
+                      matchStmt =
+                              Syntax.StatementCompound (Syntax.CompoundStatementMatch (Syntax.MatchStatement {
+                                Syntax.matchStatementSubject = subj,
+                                Syntax.matchStatementCases = (Lists.concat2 pyCases pyDflt)}))
+                  in (Right [
+                    matchStmt])))))))
+            _ -> Eithers.bind (encodeTermInline cx env False term) (\expr -> Right [
+              Utils.returnSingle expr])) (Eithers.bind (encodeTermInline cx env False term) (\expr -> Right [
+          Utils.returnSingle expr])))))
+
+-- | Encode a Hydra type to a Python type expression
+encodeType :: PythonEnvironment.PythonEnvironment -> Model.Type -> Either t0 Syntax.Expression
+encodeType env typ =
+
+      let dflt = Right (Utils.doubleQuotedString (Strings.concat2 "type = " (PrintModel.type_ (Strip.deannotateType typ))))
+      in case (Strip.deannotateType typ) of
+        Model.TypeApplication v0 -> encodeApplicationType env v0
+        Model.TypeFunction v0 -> encodeFunctionType env v0
+        Model.TypeForall v0 -> encodeForallType env v0
+        Model.TypeList v0 -> Eithers.bind (encodeType env v0) (\pyet -> Right (Utils.nameAndParams (Syntax.Name "Sequence") [
+          pyet]))
+        Model.TypeMap v0 -> Eithers.bind (encodeType env (Model.mapTypeKeys v0)) (\pykt -> Eithers.bind (encodeType env (Model.mapTypeValues v0)) (\pyvt -> Right (Utils.nameAndParams (Syntax.Name "Mapping") [
+          pykt,
+          pyvt])))
+        Model.TypeLiteral v0 -> encodeLiteralType v0
+        Model.TypeOptional v0 -> Eithers.bind (encodeType env v0) (\ptype -> Right (Utils.pyPrimaryToPyExpression (Utils.primaryWithExpressionSlices (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Optional"))) [
+          ptype])))
+        Model.TypeEither v0 -> Eithers.bind (encodeType env (Model.eitherTypeLeft v0)) (\pyleft -> Eithers.bind (encodeType env (Model.eitherTypeRight v0)) (\pyright -> Right (Utils.pyPrimaryToPyExpression (Utils.primaryWithExpressionSlices (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Either"))) [
+          pyleft,
+          pyright]))))
+        Model.TypePair v0 -> Eithers.bind (encodeType env (Model.pairTypeFirst v0)) (\pyFirst -> Eithers.bind (encodeType env (Model.pairTypeSecond v0)) (\pySecond -> Right (Utils.nameAndParams (Syntax.Name "tuple") [
+          pyFirst,
+          pySecond])))
+        Model.TypeRecord _ -> dflt
+        Model.TypeSet v0 -> Eithers.bind (encodeType env v0) (\pyet -> Right (Utils.nameAndParams (Syntax.Name "Set") [
+          pyet]))
+        Model.TypeUnion _ -> dflt
+        Model.TypeUnit -> Right (Utils.pyNameToPyExpression Utils.pyNone)
+        Model.TypeVoid -> Right (Utils.pyNameToPyExpression Utils.pyNone)
+        Model.TypeVariable v0 -> Right (PythonNames.typeVariableReference env v0)
+        Model.TypeWrap _ -> dflt
+        Model.TypeAnnotated _ -> dflt
+        Model.TypeEffect v0 -> encodeType env v0
+
+-- | Encode a type definition, dispatching based on type structure
+encodeTypeAssignment :: t0 -> PythonEnvironment.PythonEnvironment -> Model.Name -> Model.Type -> Maybe String -> Either Errors.Error [[Syntax.Statement]]
+encodeTypeAssignment cx env name typ comment =
+    Eithers.bind (encodeTypeAssignmentInner cx env name typ comment) (\defStmts -> Right (Lists.map (\s -> [
+      s]) defStmts))
+
+-- | Encode the inner type definition, unwrapping forall types
+encodeTypeAssignmentInner :: t0 -> PythonEnvironment.PythonEnvironment -> Model.Name -> Model.Type -> Maybe String -> Either Errors.Error [Syntax.Statement]
+encodeTypeAssignmentInner cx env name typ comment =
+
+      let stripped = Strip.deannotateType typ
+          dflt = Eithers.bind (encodeType env typ) (\typeExpr -> Right (encodeTypeDefSingle env name comment typeExpr))
+      in case stripped of
+        Model.TypeForall v0 ->
+          let tvar = Model.forallTypeParameter v0
+              body = Model.forallTypeBody v0
+              newEnv = extendEnvWithTypeVar env tvar
+          in (encodeTypeAssignmentInner cx newEnv name body comment)
+        Model.TypeRecord v0 -> Eithers.map (\s -> [
+          s]) (encodeRecordType cx env name v0 comment)
+        Model.TypeUnion v0 -> encodeUnionType cx env name v0 comment
+        Model.TypeWrap v0 -> encodeWrappedType env name v0 comment
+        _ -> dflt
+
+-- | Encode a simple type alias definition
+encodeTypeDefSingle :: PythonEnvironment.PythonEnvironment -> Model.Name -> Maybe String -> Syntax.Expression -> [Syntax.Statement]
+encodeTypeDefSingle env name comment typeExpr =
+
+      let pyName = PythonNames.encodeName False Util.CaseConventionPascal env name
+          tparams = environmentTypeParameters env
+      in [
+        typeAliasStatementFor env pyName tparams comment typeExpr]
+
+-- | Encode a type to a Python expression, quoting if the type has free variables
+encodeTypeQuoted :: PythonEnvironment.PythonEnvironment -> Model.Type -> Either t0 Syntax.Expression
+encodeTypeQuoted env typ =
+    Eithers.bind (encodeType env typ) (\pytype -> Right (Logic.ifElse (Sets.isEmpty (Variables.freeVariablesInType typ)) pytype (Utils.doubleQuotedString (Serialization.printExpr (Serde.expressionToExpr pytype)))))
+
+-- | Encode a union elimination as an inline conditional chain (isinstance-based ternary)
+encodeUnionEliminationInline :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Model.CaseStatement -> Syntax.Expression -> Either Errors.Error Syntax.Expression
+encodeUnionEliminationInline cx env cs pyArg =
+
+      let tname = Model.caseStatementTypeName cs
+          mdefault = Model.caseStatementDefault cs
+          cases_ = Model.caseStatementCases cs
+      in (Eithers.bind (Resolution.requireUnionType cx (pythonEnvironmentGetGraph env) tname) (\rt ->
+        let isEnum = Predicates.isEnumRowType rt
+            valueExpr = Utils.projectFromExpression pyArg (Syntax.Name "value")
+            isinstancePrimary = Utils.pyNameToPyPrimary (Syntax.Name "isinstance")
+        in (Eithers.bind (Optionals.match mdefault (Right (unsupportedExpression "no matching case in inline union elimination")) (\dflt -> encodeTermInline cx env False dflt)) (\pyDefault ->
+          let encodeBranch =
+                  \field ->
+                    let fname = Model.caseAlternativeName field
+                        fterm = Model.caseAlternativeHandler field
+                        isUnitVariant = isVariantUnitType rt fname
+                        pyVariantName = deconflictVariantName True env tname fname (PythonEnvironment.pythonEnvironmentGraph env)
+                        pyTypeName = PythonNames.encodeName True Util.CaseConventionPascal env tname
+                        pyEnumValue = PythonNames.encodeEnumValue env fname
+                        enumMemberExpr =
+                                Utils.pyPrimaryToPyExpression (Syntax.PrimaryCompound (Syntax.PrimaryWithRhs {
+                                  Syntax.primaryWithRhsPrimary = (Utils.pyNameToPyPrimary pyTypeName),
+                                  Syntax.primaryWithRhsRhs = (Syntax.PrimaryRhsProject pyEnumValue)}))
+                        isinstanceCheck =
+                                Logic.ifElse isEnum (Syntax.ExpressionSimple (Syntax.Disjunction [
+                                  Syntax.Conjunction [
+                                    Syntax.InversionSimple (Syntax.Comparison {
+                                      Syntax.comparisonLhs = (Utils.pyExpressionToBitwiseOr pyArg),
+                                      Syntax.comparisonRhs = [
+                                        Syntax.CompareOpBitwiseOrPair {
+                                          Syntax.compareOpBitwiseOrPairOperator = Syntax.CompareOpEq,
+                                          Syntax.compareOpBitwiseOrPairRhs = (Utils.pyExpressionToBitwiseOr enumMemberExpr)}]})]])) (Utils.functionCall isinstancePrimary [
+                                  pyArg,
+                                  (Utils.pyNameToPyExpression pyVariantName)])
+                    in (Eithers.bind (encodeTermInline cx env False fterm) (\pyBranch ->
+                      let pyResult =
+                              Logic.ifElse isEnum (Utils.functionCall (Utils.pyExpressionToPyPrimary pyBranch) [
+                                pyArg]) (Logic.ifElse isUnitVariant (Utils.functionCall (Utils.pyExpressionToPyPrimary pyBranch) [
+                                pyArg]) (Utils.functionCall (Utils.pyExpressionToPyPrimary pyBranch) [
+                                valueExpr]))
+                      in (Right (isinstanceCheck, pyResult))))
+          in (Eithers.bind (Eithers.mapList encodeBranch cases_) (\encodedBranches ->
+            let buildChain =
+                    \elseExpr -> \branchPair ->
+                      let checkExpr = Pairs.first branchPair
+                          resultExpr = Pairs.second branchPair
+                      in (Syntax.ExpressionConditional (Syntax.Conditional {
+                        Syntax.conditionalBody = (Utils.pyExpressionToDisjunction resultExpr),
+                        Syntax.conditionalIf = (Utils.pyExpressionToDisjunction checkExpr),
+                        Syntax.conditionalElse = elseExpr}))
+            in (Right (Lists.foldl buildChain pyDefault (Lists.reverse encodedBranches)))))))))
+
+-- | Encode a union field as a variant class
+encodeUnionField :: t0 -> PythonEnvironment.PythonEnvironment -> Model.Name -> Model.FieldType -> Either Errors.Error Syntax.Statement
+encodeUnionField cx env unionName fieldType =
+
+      let fname = Model.fieldTypeName fieldType
+          ftype = Model.fieldTypeType fieldType
+      in (Eithers.bind (Annotations.getTypeDescription cx (pythonEnvironmentGetGraph env) ftype) (\fcomment ->
+        let isUnit = Equality.equal (Strip.deannotateType ftype) Model.TypeUnit
+            isDecimal = Equality.equal (Strip.deannotateType ftype) (Model.TypeLiteral Model.LiteralTypeDecimal)
+            varName = deconflictVariantName False env unionName fname (PythonEnvironment.pythonEnvironmentGraph env)
+            tparamNames = findTypeParams env ftype
+            tparamPyNames = Lists.map PythonNames.encodeTypeVariable tparamNames
+            fieldParams = Lists.map Utils.pyNameToPyTypeParameter tparamPyNames
+            body =
+                    Logic.ifElse isUnit (Utils.indentedBlock fcomment [
+                      Utils.unitVariantMethods varName]) (Logic.ifElse isDecimal (Utils.indentedBlock fcomment [
+                      Utils.decimalVariantMethods]) (Utils.indentedBlock fcomment []))
+        in (Eithers.bind (Logic.ifElse isUnit (Right Nothing) (Eithers.bind (encodeTypeQuoted env ftype) (\quotedType -> Right (Just (variantArgs quotedType []))))) (\margs -> Right (Utils.pyClassDefinitionToPyStatement (Syntax.ClassDefinition {
+          Syntax.classDefinitionDecorators = Nothing,
+          Syntax.classDefinitionName = varName,
+          Syntax.classDefinitionTypeParams = fieldParams,
+          Syntax.classDefinitionArguments = margs,
+          Syntax.classDefinitionBody = body}))))))
+
+-- | Encode a union field as a primary expression for | alternatives
+encodeUnionFieldAlt :: PythonEnvironment.PythonEnvironment -> Model.Name -> Model.FieldType -> Syntax.Primary
+encodeUnionFieldAlt env unionName fieldType =
+
+      let fname = Model.fieldTypeName fieldType
+          ftype = Model.fieldTypeType fieldType
+          tparamNames = findTypeParams env ftype
+          tparams = Lists.map PythonNames.encodeTypeVariable tparamNames
+          namePrim = Utils.pyNameToPyPrimary (PythonNames.variantName False env unionName fname)
+      in (Logic.ifElse (Lists.isEmpty tparams) namePrim (
+        let tparamExprs = Lists.map Utils.pyNameToPyExpression tparams
+        in (Utils.primaryWithExpressionSlices namePrim tparamExprs)))
+
+-- | Encode a union type as an enum (for unit-only fields) or variant classes
+encodeUnionType :: t0 -> PythonEnvironment.PythonEnvironment -> Model.Name -> [Model.FieldType] -> Maybe String -> Either Errors.Error [Syntax.Statement]
+encodeUnionType cx env name rowType comment =
+    Logic.ifElse (Predicates.isEnumRowType rowType) (Eithers.bind (Eithers.mapList (encodeEnumValueAssignment cx env) rowType) (\vals ->
+      let body = Utils.indentedBlock comment vals
+          enumName = Syntax.Name "Enum"
+          args = Just (Utils.pyExpressionsToPyArgs [
+                Utils.pyNameToPyExpression enumName])
+          pyName = PythonNames.encodeName False Util.CaseConventionPascal env name
+          typeConstStmt =
+                  Utils.dottedAssignmentStatement pyName (PythonNames.encodeConstantForTypeName env name) (Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionPascal env (Model.Name "hydra.core.model.Name"))) [
+                    Utils.doubleQuotedString (Model.unName name)])
+      in (Right [
+        Utils.pyClassDefinitionToPyStatement (Syntax.ClassDefinition {
+          Syntax.classDefinitionDecorators = Nothing,
+          Syntax.classDefinitionName = pyName,
+          Syntax.classDefinitionTypeParams = [],
+          Syntax.classDefinitionArguments = args,
+          Syntax.classDefinitionBody = body}),
+        typeConstStmt]))) (
+      let constStmts = encodeNameConstants env name rowType
+      in (Eithers.bind (Eithers.mapList (encodeUnionField cx env name) rowType) (\fieldStmts ->
+        let tparams = environmentTypeParameters env
+            unionAlts = Lists.map (encodeUnionFieldAlt env name) rowType
+            unionStmts =
+                    unionTypeStatementsFor env (PythonNames.encodeName False Util.CaseConventionPascal env name) tparams comment (Utils.orExpression unionAlts) constStmts
+        in (Right (Lists.concat2 fieldStmts unionStmts)))))
+
+-- | Encode a variable reference to a Python expression
+encodeVariable :: t0 -> PythonEnvironment.PythonEnvironment -> Model.Name -> [Syntax.Expression] -> Either Errors.Error Syntax.Expression
+encodeVariable cx env name args =
+
+      let g = pythonEnvironmentGetGraph env
+          tc = PythonEnvironment.pythonEnvironmentGraph env
+          tcTypes = Graph.graphBoundTypes tc
+          tcLambdaVars = Graph.graphLambdaVariables tc
+          tcMetadata = Graph.graphMetadata tc
+          inlineVars = PythonEnvironment.pythonEnvironmentInlineVariables env
+          mTypScheme = Maps.lookup name tcTypes
+          mTyp = Optionals.map (\ts_ -> Model.typeSchemeBody ts_) mTypScheme
+          asVariable = PythonNames.termVariableReference env name
+          asFunctionCall =
+                  Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionLowerSnake env name)) args
+          asLazyCall = Utils.functionCall (Utils.pyExpressionToPyPrimary (lazyDotGet asVariable)) args
+      in (Logic.ifElse (Logic.not (Lists.isEmpty args)) (Logic.ifElse (Sets.member name inlineVars) (Right asLazyCall) (Optionals.match (Lexical.lookupPrimitive g name) (Right asFunctionCall) (\prim ->
+        let primArity = Arity.primitiveArity prim
+        in (Logic.ifElse (Equality.equal primArity (Lists.length args)) (Right asFunctionCall) (
+          let numRemaining = Math.sub primArity (Lists.length args)
+              remainingParams =
+                      Lists.map (\i -> Syntax.Name (Strings.concat2 "x" (Literals.printInt32 i))) (Math.range 1 (Math.add numRemaining 1))
+              remainingExprs =
+                      Lists.map (\n -> Syntax.ExpressionSimple (Syntax.Disjunction [
+                        Syntax.Conjunction [
+                          Syntax.InversionSimple (Syntax.Comparison {
+                            Syntax.comparisonLhs = Syntax.BitwiseOr {
+                              Syntax.bitwiseOrLhs = Nothing,
+                              Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
+                                Syntax.bitwiseXorLhs = Nothing,
+                                Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
+                                  Syntax.bitwiseAndLhs = Nothing,
+                                  Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
+                                    Syntax.shiftExpressionLhs = Nothing,
+                                    Syntax.shiftExpressionRhs = Syntax.Sum {
+                                      Syntax.sumLhs = Nothing,
+                                      Syntax.sumRhs = Syntax.Term {
+                                        Syntax.termLhs = Nothing,
+                                        Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
+                                          Syntax.powerLhs = Syntax.AwaitPrimary {
+                                            Syntax.awaitPrimaryAwait = False,
+                                            Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName n))},
+                                          Syntax.powerRhs = Nothing}))}}}}}},
+                            Syntax.comparisonRhs = []})]])) remainingParams
+              allArgs = Lists.concat2 args remainingExprs
+              fullCall =
+                      Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionLowerSnake env name)) allArgs
+          in (Right (makeUncurriedLambda remainingParams fullCall))))))) (Optionals.match mTyp (Logic.ifElse (Sets.member name tcLambdaVars) (Right asVariable) (Logic.ifElse (Sets.member name inlineVars) (Right (lazyDotGet asVariable)) (Optionals.match (Lexical.lookupPrimitive g name) (Optionals.match (Lexical.lookupBinding g name) (Optionals.match (Maps.lookup name tcMetadata) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "Unknown variable: " (Model.unName name))))) (\_ -> Right asFunctionCall)) (\el ->
+        let elTrivial1 = Predicates.isTrivialTerm (Model.bindingTerm el)
+        in (Optionals.match (Model.bindingTypeScheme el) (Right asVariable) (\ts -> Logic.ifElse (Logic.and (Logic.and (Equality.equal (Arity.typeSchemeArity ts) 0) (Predicates.isComplexBinding tc el)) (Logic.not elTrivial1)) (Right asFunctionCall) (
+          let asFunctionRef =
+                  Logic.ifElse (Logic.not (Lists.isEmpty (Model.typeSchemeVariables ts))) (makeSimpleLambda (Arity.typeArity (Model.typeSchemeBody ts)) asVariable) asVariable
+          in (Right asFunctionRef)))))) (\prim ->
+        let primArity = Arity.primitiveArity prim
+        in (Logic.ifElse (Equality.equal primArity 0) (Right asFunctionCall) (
+          let ts = Scoping.termSignatureToTypeScheme (Packaging.primitiveDefinitionSignature (Graph.primitiveDefinition prim))
+              asFunctionRef =
+                      Logic.ifElse (Logic.not (Lists.isEmpty (Model.typeSchemeVariables ts))) (makeSimpleLambda (Arity.typeArity (Model.typeSchemeBody ts)) asVariable) asVariable
+          in (Right asFunctionRef))))))) (\typ -> Logic.ifElse (Sets.member name tcLambdaVars) (Right asVariable) (Logic.ifElse (Sets.member name inlineVars) (
+        let unwrapped = lazyDotGet asVariable
+            asFunctionRef =
+                    Logic.ifElse (Logic.not (Sets.isEmpty (Variables.freeVariablesInType typ))) (makeSimpleLambda (Arity.typeArity typ) unwrapped) unwrapped
+        in (Right asFunctionRef)) (Logic.ifElse (Logic.not (Maps.member name tcMetadata)) (Optionals.match (Lexical.lookupBinding g name) (
+        let asFunctionRef =
+                Logic.ifElse (Logic.not (Sets.isEmpty (Variables.freeVariablesInType typ))) (makeSimpleLambda (Arity.typeArity typ) asVariable) asVariable
+        in (Right asFunctionRef)) (\el ->
+        let elTrivial = Predicates.isTrivialTerm (Model.bindingTerm el)
+        in (Optionals.match (Model.bindingTypeScheme el) (Logic.ifElse (Logic.and (Equality.equal (Arity.typeArity typ) 0) (Logic.not elTrivial)) (Right asFunctionCall) (
+          let asFunctionRef =
+                  Logic.ifElse (Logic.not (Sets.isEmpty (Variables.freeVariablesInType typ))) (makeSimpleLambda (Arity.typeArity typ) asVariable) asVariable
+          in (Right asFunctionRef))) (\ts -> Logic.ifElse (Logic.and (Logic.and (Equality.equal (Arity.typeArity typ) 0) (Predicates.isComplexBinding tc el)) (Logic.not elTrivial)) (Right asFunctionCall) (
+          let asFunctionRef =
+                  Logic.ifElse (Logic.not (Sets.isEmpty (Variables.freeVariablesInType typ))) (makeSimpleLambda (Arity.typeArity typ) asVariable) asVariable
+          in (Right asFunctionRef)))))) (Logic.ifElse (Logic.and (Equality.equal (Arity.typeArity typ) 0) (Predicates.isComplexVariable tc name)) (Right asFunctionCall) (
+        let asFunctionRef =
+                Logic.ifElse (Logic.not (Sets.isEmpty (Variables.freeVariablesInType typ))) (makeSimpleLambda (Arity.typeArity typ) asVariable) asVariable
+        in (Right asFunctionRef))))))))
+
+-- | Encode a wrapped type (newtype) to a Python class definition
+encodeWrappedType :: PythonEnvironment.PythonEnvironment -> Model.Name -> Model.Type -> Maybe String -> Either t0 [Syntax.Statement]
+encodeWrappedType env name typ comment =
+
+      let tparamList = Pairs.first (PythonEnvironment.pythonEnvironmentBoundTypeVariables env)
+      in (Eithers.bind (encodeTypeQuoted env typ) (\ptypeQuoted ->
+        let pyName = PythonNames.encodeName False Util.CaseConventionPascal env name
+            body = Utils.indentedBlock comment []
+            typeConstStmt =
+                    Utils.dottedAssignmentStatement pyName (PythonNames.encodeConstantForTypeName env name) (Utils.functionCall (Utils.pyNameToPyPrimary (PythonNames.encodeName True Util.CaseConventionPascal env (Model.Name "hydra.core.model.Name"))) [
+                      Utils.doubleQuotedString (Model.unName name)])
+        in (Right [
+          Utils.pyClassDefinitionToPyStatement (Syntax.ClassDefinition {
+            Syntax.classDefinitionDecorators = Nothing,
+            Syntax.classDefinitionName = pyName,
+            Syntax.classDefinitionTypeParams = (Lists.map (\arg_ -> Utils.pyNameToPyTypeParameter (PythonNames.encodeTypeVariable arg_)) (findTypeParams env typ)),
+            Syntax.classDefinitionArguments = (Just (variantArgs ptypeQuoted tparamList)),
+            Syntax.classDefinitionBody = body}),
+          typeConstStmt])))
+
+-- | Create a value pattern for an enum variant
+enumVariantPattern :: PythonEnvironment.PythonEnvironment -> Model.Name -> Model.Name -> Syntax.ClosedPattern
+enumVariantPattern env typeName fieldName =
+    Syntax.ClosedPatternValue (Syntax.ValuePattern (Syntax.Attribute [
+      PythonNames.encodeName True Util.CaseConventionPascal env typeName,
+      (PythonNames.encodeEnumValue env fieldName)]))
+
+-- | Get type parameters from environment as Python TypeParameters
+environmentTypeParameters :: PythonEnvironment.PythonEnvironment -> [Syntax.TypeParameter]
+environmentTypeParameters env =
+    Lists.map (\arg_ -> Utils.pyNameToPyTypeParameter (PythonNames.encodeTypeVariable arg_)) (Pairs.first (PythonEnvironment.pythonEnvironmentBoundTypeVariables env))
+
+-- | Extend environment with lambda parameters from a term
+extendEnvWithLambdaParams :: PythonEnvironment.PythonEnvironment -> Model.Term -> PythonEnvironment.PythonEnvironment
+extendEnvWithLambdaParams env term =
+
+      let go =
+              \e -> \t -> case (Strip.deannotateAndDetypeTerm t) of
+                Model.TermLambda v0 ->
+                  let newTc = Scoping.extendGraphForLambda (pythonEnvironmentGetGraph e) v0
+                      newEnv = pythonEnvironmentSetGraph newTc e
+                  in (go newEnv (Model.lambdaBody v0))
+                _ -> e
+      in (go env term)
+
+-- | Extend a PythonEnvironment with a new bound type variable
+extendEnvWithTypeVar :: PythonEnvironment.PythonEnvironment -> Model.Name -> PythonEnvironment.PythonEnvironment
+extendEnvWithTypeVar env var_ =
+
+      let oldBound = PythonEnvironment.pythonEnvironmentBoundTypeVariables env
+          tparamList = Pairs.first oldBound
+          tparamMap = Pairs.second oldBound
+          newList = Lists.concat2 tparamList [
+                var_]
+          newMap = Maps.insert var_ (PythonNames.encodeTypeVariable var_) tparamMap
+      in PythonEnvironment.PythonEnvironment {
+        PythonEnvironment.pythonEnvironmentNamespaces = (PythonEnvironment.pythonEnvironmentNamespaces env),
+        PythonEnvironment.pythonEnvironmentBoundTypeVariables = (newList, newMap),
+        PythonEnvironment.pythonEnvironmentGraph = (PythonEnvironment.pythonEnvironmentGraph env),
+        PythonEnvironment.pythonEnvironmentNullaryBindings = (PythonEnvironment.pythonEnvironmentNullaryBindings env),
+        PythonEnvironment.pythonEnvironmentVersion = (PythonEnvironment.pythonEnvironmentVersion env),
+        PythonEnvironment.pythonEnvironmentSkipCasts = (PythonEnvironment.pythonEnvironmentSkipCasts env),
+        PythonEnvironment.pythonEnvironmentInlineVariables = (PythonEnvironment.pythonEnvironmentInlineVariables env),
+        PythonEnvironment.pythonEnvironmentOverlaySubs = (PythonEnvironment.pythonEnvironmentOverlaySubs env)}
+
+-- | Extend metadata based on a term (used during module encoding)
+extendMetaForTerm :: Bool -> PythonEnvironment.PythonModuleMetadata -> Model.Term -> PythonEnvironment.PythonModuleMetadata
+extendMetaForTerm topLevel meta0 term =
+
+      let step =
+              \meta -> \t -> case t of
+                Model.TermEither v0 ->
+                  let metaWithCast = setMetaUsesCast True meta
+                  in (Eithers.either (\_ -> setMetaUsesLeft metaWithCast True) (\_ -> setMetaUsesRight metaWithCast True) v0)
+                Model.TermLambda v0 -> Optionals.match (Model.lambdaDomain v0) meta (\dom -> Logic.ifElse topLevel (extendMetaForType True False dom meta) meta)
+                Model.TermLet v0 ->
+                  let bindings = Model.letBindings v0
+                  in (Lists.foldl (
+                    let forBinding =
+                            \m -> \b -> Optionals.match (Model.bindingTypeScheme b) m (\ts ->
+                              let term1 = Model.bindingTerm b
+                              in (Logic.ifElse (Analysis.isSimpleAssignment term1) m (extendMetaForType True True (Model.typeSchemeBody ts) m)))
+                    in forBinding) meta bindings)
+                Model.TermLiteral v0 -> case v0 of
+                  Model.LiteralDecimal _ -> setMetaUsesDecimal meta True
+                  _ -> meta
+                Model.TermList _ -> setMetaUsesFrozenList meta True
+                Model.TermMap _ -> setMetaUsesFrozenDict meta True
+                Model.TermSet _ -> setMetaUsesFrozenSet meta True
+                Model.TermOptional v0 -> Optionals.match v0 (setMetaUsesNothing meta True) (\_ -> setMetaUsesJust meta True)
+                Model.TermInject _ -> setMetaUsesCast True meta
+                _ -> meta
+      in (Rewriting.foldOverTerm Coders.TraversalOrderPre step meta0 term)
+
+-- | Extend metadata based on a type (used during module encoding)
+extendMetaForType :: Bool -> Bool -> Model.Type -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PythonModuleMetadata
+extendMetaForType topLevel isTermAnnot typ meta =
+
+      let currentTvars = PythonEnvironment.pythonModuleMetadataTypeVariables meta
+          newTvars = collectTypeVariables currentTvars typ
+          metaWithTvars = setMetaTypeVariables meta newTvars
+          metaWithSubtypes = Lists.foldl (\m -> \t -> extendMetaForType False isTermAnnot t m) metaWithTvars (Rewriting.subtypes typ)
+      in case (Strip.deannotateType typ) of
+        Model.TypeFunction _ -> Logic.ifElse (Logic.and isTermAnnot topLevel) metaWithSubtypes (setMetaUsesCallable metaWithSubtypes True)
+        Model.TypeList _ -> setMetaUsesFrozenList metaWithSubtypes True
+        Model.TypeMap _ -> setMetaUsesFrozenDict metaWithSubtypes True
+        Model.TypeSet _ -> setMetaUsesFrozenSet metaWithSubtypes True
+        Model.TypeOptional _ -> setMetaUsesMaybe metaWithSubtypes True
+        Model.TypeEither _ -> setMetaUsesEither metaWithSubtypes True
+        Model.TypeLiteral v0 -> case v0 of
+          Model.LiteralTypeDecimal -> setMetaUsesDecimal metaWithSubtypes True
+          _ -> metaWithSubtypes
+        Model.TypeUnion v0 -> Logic.ifElse (Predicates.isEnumRowType v0) (setMetaUsesEnum metaWithSubtypes True) (Logic.ifElse (Logic.not (Lists.isEmpty v0)) (setMetaUsesNode metaWithSubtypes True) metaWithSubtypes)
+        Model.TypeForall v0 ->
+          let body = Model.forallTypeBody v0
+              metaForWrap = digForWrap isTermAnnot metaWithSubtypes body
+          in case (Strip.deannotateType body) of
+            Model.TypeRecord _ -> setMetaUsesGeneric metaForWrap True
+            _ -> metaForWrap
+        Model.TypeRecord v0 ->
+          let hasAnnotated = Lists.foldl (\b -> \ft -> Logic.or b (Annotations.hasTypeDescription (Model.fieldTypeType ft))) False v0
+              meta1 = Logic.ifElse (Lists.isEmpty v0) metaWithSubtypes (setMetaUsesDataclass metaWithSubtypes True)
+          in (Logic.ifElse hasAnnotated (setMetaUsesAnnotated meta1 True) meta1)
+        Model.TypeWrap _ -> Logic.ifElse isTermAnnot metaWithSubtypes (setMetaUsesNode metaWithSubtypes True)
+        _ -> metaWithSubtypes
+
+-- | Extend metadata for a list of types
+extendMetaForTypes :: [Model.Type] -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PythonModuleMetadata
+extendMetaForTypes types meta =
+
+      let names = Sets.unions (Lists.map (\t -> Dependencies.typeDependencyNames False t) types)
+          currentNs = PythonEnvironment.pythonModuleMetadataNamespaces meta
+          updatedNs = Analysis.addNamesToModuleNames (PythonNames.encodeNamespaceWithOverrides Sets.empty) names currentNs
+          meta1 = setMetaNamespaces updatedNs meta
+      in (Lists.foldl (\m -> \t -> extendMetaForType True False t m) meta1 types)
+
+-- | Extract CaseStatement from a case elimination term
+extractCaseElimination :: Model.Term -> Maybe Model.CaseStatement
+extractCaseElimination term =
+    case (Strip.deannotateAndDetypeTerm term) of
+      Model.TermCases v0 -> Just v0
+      _ -> Nothing
+
+-- | Prefer signature parameter types over analysis-captured lambda domains when both are available in equal length (#488).
+fillDomsFromSignature :: [t0] -> [t0] -> [t0]
+fillDomsFromSignature doms sigParamTypes =
+    Logic.ifElse (Equality.equal (Lists.length doms) (Lists.length sigParamTypes)) sigParamTypes doms
+
+-- | Find type parameters in a type that are bound in the environment
+findTypeParams :: PythonEnvironment.PythonEnvironment -> Model.Type -> [Model.Name]
+findTypeParams env typ =
+
+      let boundVars = Pairs.second (PythonEnvironment.pythonEnvironmentBoundTypeVariables env)
+          isBound = \v -> Optionals.isGiven (Maps.lookup v boundVars)
+      in (Lists.filter isBound (Sets.toList (Variables.freeVariablesInType typ)))
+
+-- | Encode a function definition with parameters and body
+functionDefinitionToExpr :: Typing.InferenceContext -> PythonEnvironment.PythonEnvironment -> Model.Name -> [Model.Name] -> [Model.Name] -> Model.Term -> [Model.Type] -> Maybe Model.Type -> Maybe String -> [Syntax.Statement] -> Either Errors.Error Syntax.Statement
+functionDefinitionToExpr cx env name tparams args body doms mcod comment prefixes =
+    Eithers.bind (Eithers.mapList (\pair ->
+      let argName = Pairs.first pair
+          typ = Pairs.second pair
+      in (Eithers.bind (encodeType env typ) (\pyTyp -> Right (Syntax.ParamNoDefault {
+        Syntax.paramNoDefaultParam = Syntax.Param {
+          Syntax.paramName = (PythonNames.encodeName False Util.CaseConventionLowerSnake env argName),
+          Syntax.paramAnnotation = (Just (Syntax.Annotation pyTyp))},
+        Syntax.paramNoDefaultTypeComment = Nothing})))) (Lists.zip args doms)) (\pyArgs ->
+      let pyParams =
+              Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
+                Syntax.paramNoDefaultParametersParamNoDefault = pyArgs,
+                Syntax.paramNoDefaultParametersParamWithDefault = [],
+                Syntax.paramNoDefaultParametersStarEtc = Nothing})
+          isTCO = Logic.and (Logic.not (Lists.isEmpty args)) (Analysis.isSelfTailRecursive name body)
+      in (Eithers.bind (Logic.ifElse isTCO (Eithers.bind (encodeTermMultilineTCO cx env name args body) (\tcoStmts ->
+        let trueExpr = Syntax.NamedExpressionSimple (Utils.pyAtomToPyExpression Syntax.AtomTrue)
+            whileBody = Utils.indentedBlock Nothing [
+                  Lists.concat2 prefixes tcoStmts]
+            whileStmt =
+                    Syntax.StatementCompound (Syntax.CompoundStatementWhile (Syntax.WhileStatement {
+                      Syntax.whileStatementCondition = trueExpr,
+                      Syntax.whileStatementBody = whileBody,
+                      Syntax.whileStatementElse = Nothing}))
+        in (Right (Utils.indentedBlock comment [
+          [
+            whileStmt]])))) (Eithers.bind (encodeTermMultiline cx env body) (\stmts -> Right (Utils.indentedBlock comment [
+        Lists.concat2 prefixes stmts])))) (\block -> Eithers.bind (Optionals.match mcod (Right Nothing) (\cod -> Eithers.bind (encodeType env cod) (\pytyp -> Right (Just pytyp)))) (\mreturnType ->
+        let pyTparams =
+                Logic.ifElse useInlineTypeParams (Lists.map (\arg_ -> Utils.pyNameToPyTypeParameter (PythonNames.encodeTypeVariable arg_)) tparams) []
+            isThunk = Lists.isEmpty args
+            mDecorators = Logic.ifElse isThunk (Just (Syntax.Decorators [
+                  lruCacheDecorator])) Nothing
+            pyName = PythonNames.encodeName False Util.CaseConventionLowerSnake env name
+        in (Right (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
+          Syntax.functionDefinitionDecorators = mDecorators,
+          Syntax.functionDefinitionRaw = Syntax.FunctionDefRaw {
+            Syntax.functionDefRawAsync = False,
+            Syntax.functionDefRawName = pyName,
+            Syntax.functionDefRawTypeParams = pyTparams,
+            Syntax.functionDefRawParams = (Just pyParams),
+            Syntax.functionDefRawReturnType = mreturnType,
+            Syntax.functionDefRawFuncTypeComment = Nothing,
+            Syntax.functionDefRawBlock = block}}))))))))
+
+-- | Extract lambdas and their bodies from a term
+gatherLambdas :: Model.Term -> ([Model.Name], Model.Term)
+gatherLambdas term =
+
+      let go =
+              \params -> \t -> case (Strip.deannotateAndDetypeTerm t) of
+                Model.TermLambda v0 -> go (Lists.concat2 params [
+                  Model.lambdaParameter v0]) (Model.lambdaBody v0)
+                _ -> (params, t)
+      in (go [] term)
+
+-- | Gather metadata from definitions
+gatherMetadata :: S.Set String -> Packaging.ModuleName -> [Packaging.Definition] -> PythonEnvironment.PythonModuleMetadata
+gatherMetadata overlaySubs focusNs defs =
+
+      let start = emptyMetadata (Utils.findNamespaces overlaySubs focusNs defs)
+          addDef =
+                  \meta -> \def -> case def of
+                    Packaging.DefinitionTerm v0 ->
+                      let term = Packaging.termDefinitionBody v0
+                          typ =
+                                  Optionals.match (Packaging.termDefinitionSignature v0) (Model.TypeVariable (Model.Name "hydra.core.model.Unit")) (\sig -> Model.typeSchemeBody (Scoping.termSignatureToTypeScheme sig))
+                          meta2 = extendMetaForType True True typ meta
+                      in (extendMetaForTerm True meta2 term)
+                    Packaging.DefinitionType v0 ->
+                      let typ = Model.typeSchemeBody (Packaging.typeDefinitionBody v0)
+                          meta2 = setMetaUsesName meta True
+                      in (Rewriting.foldOverType Coders.TraversalOrderPre (\m -> \t -> extendMetaForType True False t m) meta2 typ)
+          result = Lists.foldl addDef start defs
+          tvars = PythonEnvironment.pythonModuleMetadataTypeVariables result
+          result2 = setMetaUsesCast True (setMetaUsesLruCache True result)
+      in (setMetaUsesTypeVar result2 (Logic.not (Sets.isEmpty tvars)))
+
+-- | Create Generic[...] argument expression for class definition
+genericArg :: [Model.Name] -> Maybe Syntax.Expression
+genericArg tparamList =
+    Logic.ifElse (Lists.isEmpty tparamList) Nothing (Just (Utils.pyPrimaryToPyExpression (Utils.primaryWithExpressionSlices (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Generic"))) (Lists.map (\n -> Syntax.ExpressionSimple (Syntax.Disjunction [
+      Syntax.Conjunction [
+        Syntax.InversionSimple (Syntax.Comparison {
+          Syntax.comparisonLhs = Syntax.BitwiseOr {
+            Syntax.bitwiseOrLhs = Nothing,
+            Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
+              Syntax.bitwiseXorLhs = Nothing,
+              Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
+                Syntax.bitwiseAndLhs = Nothing,
+                Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
+                  Syntax.shiftExpressionLhs = Nothing,
+                  Syntax.shiftExpressionRhs = Syntax.Sum {
+                    Syntax.sumLhs = Nothing,
+                    Syntax.sumRhs = Syntax.Term {
+                      Syntax.termLhs = Nothing,
+                      Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
+                        Syntax.powerLhs = Syntax.AwaitPrimary {
+                          Syntax.awaitPrimaryAwait = False,
+                          Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (PythonNames.encodeTypeVariable n)))},
+                        Syntax.powerRhs = Nothing}))}}}}}},
+          Syntax.comparisonRhs = []})]])) tparamList))))
+
+-- | Create an initial Python environment for code generation, given the on-disk overlay-existence set (#630) driving emission-time primitive-reference redirects
+initialEnvironment :: Util.ModuleNames Syntax.DottedName -> Graph.Graph -> S.Set String -> PythonEnvironment.PythonEnvironment
+initialEnvironment namespaces tcontext overlaySubs =
+    PythonEnvironment.PythonEnvironment {
+      PythonEnvironment.pythonEnvironmentNamespaces = namespaces,
+      PythonEnvironment.pythonEnvironmentBoundTypeVariables = ([], Maps.empty),
+      PythonEnvironment.pythonEnvironmentGraph = tcontext,
+      PythonEnvironment.pythonEnvironmentNullaryBindings = Sets.empty,
+      PythonEnvironment.pythonEnvironmentVersion = targetPythonVersion,
+      PythonEnvironment.pythonEnvironmentSkipCasts = True,
+      PythonEnvironment.pythonEnvironmentInlineVariables = Sets.empty,
+      PythonEnvironment.pythonEnvironmentOverlaySubs = overlaySubs}
+
+-- | Create initial empty metadata for a Python module
+initialMetadata :: Packaging.ModuleName -> PythonEnvironment.PythonModuleMetadata
+initialMetadata ns =
+
+      let dottedNs = PythonNames.encodeNamespace ns
+          emptyNs =
+                  Util.ModuleNames {
+                    Util.moduleNamesFocus = (ns, dottedNs),
+                    Util.moduleNamesMapping = Maps.empty}
+      in PythonEnvironment.PythonModuleMetadata {
+        PythonEnvironment.pythonModuleMetadataNamespaces = emptyNs,
+        PythonEnvironment.pythonModuleMetadataTypeVariables = Sets.empty,
+        PythonEnvironment.pythonModuleMetadataUsesAnnotated = False,
+        PythonEnvironment.pythonModuleMetadataUsesCallable = False,
+        PythonEnvironment.pythonModuleMetadataUsesCast = False,
+        PythonEnvironment.pythonModuleMetadataUsesLruCache = False,
+        PythonEnvironment.pythonModuleMetadataUsesTypeAlias = False,
+        PythonEnvironment.pythonModuleMetadataUsesDataclass = False,
+        PythonEnvironment.pythonModuleMetadataUsesDecimal = False,
+        PythonEnvironment.pythonModuleMetadataUsesEither = False,
+        PythonEnvironment.pythonModuleMetadataUsesEnum = False,
+        PythonEnvironment.pythonModuleMetadataUsesFrozenDict = False,
+        PythonEnvironment.pythonModuleMetadataUsesFrozenList = False,
+        PythonEnvironment.pythonModuleMetadataUsesFrozenSet = False,
+        PythonEnvironment.pythonModuleMetadataUsesGeneric = False,
+        PythonEnvironment.pythonModuleMetadataUsesJust = False,
+        PythonEnvironment.pythonModuleMetadataUsesLeft = False,
+        PythonEnvironment.pythonModuleMetadataUsesMaybe = False,
+        PythonEnvironment.pythonModuleMetadataUsesName = False,
+        PythonEnvironment.pythonModuleMetadataUsesNode = False,
+        PythonEnvironment.pythonModuleMetadataUsesNothing = False,
+        PythonEnvironment.pythonModuleMetadataUsesRight = False,
+        PythonEnvironment.pythonModuleMetadataUsesTypeVar = False}
+
+-- | Check if a term is a case statement applied to exactly one argument
+isCaseStatementApplication :: Model.Term -> Maybe (Model.Name, (Maybe Model.Term, ([Model.CaseAlternative], Model.Term)))
+isCaseStatementApplication term =
+
+      let gathered = Analysis.gatherApplications term
+          args = Pairs.first gathered
+          body = Pairs.second gathered
+      in (Logic.ifElse (Logic.not (Equality.equal (Lists.length args) 1)) Nothing (
+        let arg = Optionals.withDefault Model.TermUnit (Lists.head args)
+        in case (Strip.deannotateAndDetypeTerm body) of
+          Model.TermCases v0 -> Just (Model.caseStatementTypeName v0, (Model.caseStatementDefault v0, (Model.caseStatementCases v0, arg)))
+          _ -> Nothing))
+
+-- | Check if union cases are fully covered
+isCasesFull :: [t0] -> [t1] -> Bool
+isCasesFull rowType cases_ =
+
+      let numCases = Lists.length cases_
+          numFields = Lists.length rowType
+      in (Logic.not (Ordering.lt numCases numFields))
+
+-- | Check whether a list of definitions contains any type definitions
+isTypeModuleCheck :: [Packaging.Definition] -> Bool
+isTypeModuleCheck defs =
+    Logic.not (Lists.isEmpty (Lists.filter (\d -> case d of
+      Packaging.DefinitionType _ -> True
+      _ -> False) defs))
+
+-- | Check if a name is a type variable (unqualified - no dots)
+isTypeVariableName :: Model.Name -> Bool
+isTypeVariableName name = Equality.equal 1 (Lists.length (Strings.splitOn "." (Model.unName name)))
+
+-- | Check if a variant field has unit type
+isVariantUnitType :: [Model.FieldType] -> Model.Name -> Bool
+isVariantUnitType rowType fieldName =
+
+      let mfield = Lists.find (\ft -> Equality.equal (Model.fieldTypeName ft) fieldName) rowType
+      in (Optionals.withDefault False (Optionals.map (\ft -> Predicates.isUnitType (Strip.deannotateType (Model.fieldTypeType ft))) mfield))
+
+-- | Wrap an expression in a .get() method call (for Lazy unwrap at use sites)
+lazyDotGet :: Syntax.Expression -> Syntax.Expression
+lazyDotGet expr = Utils.functionCall (Utils.pyExpressionToPyPrimary (Utils.projectFromExpression expr (Syntax.Name "get"))) []
+
+-- | Per-parameter isLazy flags of a primitive (by name), or empty if not a primitive. Single source of truth for which arguments coders thunk; replaces hard-coded name tables (issue #391).
+lazyFlagsForPrimitive :: Graph.Graph -> Model.Name -> [Bool]
+lazyFlagsForPrimitive g name =
+    Optionals.match (Maps.lookup name (Graph.graphPrimitives g)) [] (\prim ->
+      let def0 = Graph.primitiveDefinition prim
+          sig = Packaging.primitiveDefinitionSignature def0
+      in (Lists.map (\p -> Typing.parameterIsLazy p) (Typing.termSignatureParameters sig)))
+
+-- | Decorator for @lru_cache(1) to memoize zero-argument function results
+lruCacheDecorator :: Syntax.NamedExpression
+lruCacheDecorator =
+    Syntax.NamedExpressionSimple (Utils.functionCall (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "lru_cache"))) [
+      pyInt 1])
+
+-- | Create a curried lambda chain from a list of parameter names and a body
+makeCurriedLambda :: [Syntax.Name] -> Syntax.Expression -> Syntax.Expression
+makeCurriedLambda params body =
+    Lists.foldl (\acc -> \p -> Syntax.ExpressionLambda (Syntax.Lambda {
+      Syntax.lambdaParams = Syntax.LambdaParameters {
+        Syntax.lambdaParametersSlashNoDefault = Nothing,
+        Syntax.lambdaParametersParamNoDefault = [
+          Syntax.LambdaParamNoDefault p],
+        Syntax.lambdaParametersParamWithDefault = [],
+        Syntax.lambdaParametersStarEtc = Nothing},
+      Syntax.lambdaBody = acc})) body (Lists.reverse params)
+
+-- | Wrap an expression in Lazy(lambda: ...) for one-shot lazy memoization
+makeLazy :: Syntax.Expression -> Syntax.Expression
+makeLazy pbody =
+    Utils.functionCall (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Lazy"))) [
+      wrapInNullaryLambda pbody]
+
+-- | Constructor for PyGraph record
+makePyGraph :: Graph.Graph -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PyGraph
+makePyGraph g m =
+    PythonEnvironment.PyGraph {
+      PythonEnvironment.pyGraphGraph = g,
+      PythonEnvironment.pyGraphMetadata = m}
+
+-- | Wrap a bare reference to a polymorphic function in an uncurried lambda
+makeSimpleLambda :: Int -> Syntax.Expression -> Syntax.Expression
+makeSimpleLambda arity lhs =
+
+      let args = Lists.map (\i -> Syntax.Name (Strings.concat2 "x" (Literals.printInt32 i))) (Math.range 1 (Math.add arity 1))
+      in (Logic.ifElse (Equality.equal arity 0) lhs (Syntax.ExpressionLambda (Syntax.Lambda {
+        Syntax.lambdaParams = Syntax.LambdaParameters {
+          Syntax.lambdaParametersSlashNoDefault = Nothing,
+          Syntax.lambdaParametersParamNoDefault = (Lists.map (\a -> Syntax.LambdaParamNoDefault a) args),
+          Syntax.lambdaParametersParamWithDefault = [],
+          Syntax.lambdaParametersStarEtc = Nothing},
+        Syntax.lambdaBody = (Utils.functionCall (Utils.pyExpressionToPyPrimary lhs) (Lists.map (\a -> Syntax.ExpressionSimple (Syntax.Disjunction [
+          Syntax.Conjunction [
+            Syntax.InversionSimple (Syntax.Comparison {
+              Syntax.comparisonLhs = Syntax.BitwiseOr {
+                Syntax.bitwiseOrLhs = Nothing,
+                Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
+                  Syntax.bitwiseXorLhs = Nothing,
+                  Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
+                    Syntax.bitwiseAndLhs = Nothing,
+                    Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
+                      Syntax.shiftExpressionLhs = Nothing,
+                      Syntax.shiftExpressionRhs = Syntax.Sum {
+                        Syntax.sumLhs = Nothing,
+                        Syntax.sumRhs = Syntax.Term {
+                          Syntax.termLhs = Nothing,
+                          Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
+                            Syntax.powerLhs = Syntax.AwaitPrimary {
+                              Syntax.awaitPrimaryAwait = False,
+                              Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName a))},
+                            Syntax.powerRhs = Nothing}))}}}}}},
+              Syntax.comparisonRhs = []})]])) args))})))
+
+-- | Create a thunk (zero-argument lambda) wrapped with lru_cache(1) for memoization
+makeThunk :: Syntax.Expression -> Syntax.Expression
+makeThunk pbody =
+    Utils.functionCall (Utils.pyExpressionToPyPrimary (Utils.functionCall (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "lru_cache"))) [
+      pyInt 1])) [
+      wrapInNullaryLambda pbody]
+
+-- | Create an uncurried lambda with multiple parameters
+makeUncurriedLambda :: [Syntax.Name] -> Syntax.Expression -> Syntax.Expression
+makeUncurriedLambda params body =
+    Syntax.ExpressionLambda (Syntax.Lambda {
+      Syntax.lambdaParams = Syntax.LambdaParameters {
+        Syntax.lambdaParametersSlashNoDefault = Nothing,
+        Syntax.lambdaParametersParamNoDefault = (Lists.map (\p -> Syntax.LambdaParamNoDefault p) params),
+        Syntax.lambdaParametersParamWithDefault = [],
+        Syntax.lambdaParametersStarEtc = Nothing},
+      Syntax.lambdaBody = body})
+
+-- | Generate domain import statements from namespace mappings
+moduleDomainImports :: Util.ModuleNames Syntax.DottedName -> [Syntax.ImportStatement]
+moduleDomainImports namespaces =
+
+      let names = Lists.sort (Maps.elems (Util.moduleNamesMapping namespaces))
+      in (Lists.map (\ns -> Syntax.ImportStatementName (Syntax.ImportName [
+        Syntax.DottedAsName {
+          Syntax.dottedAsNameName = ns,
+          Syntax.dottedAsNameAs = Nothing}])) names)
+
+-- | Generate all import statements for a Python module
+moduleImports :: Util.ModuleNames Syntax.DottedName -> PythonEnvironment.PythonModuleMetadata -> [Syntax.Statement]
+moduleImports namespaces meta =
+    Lists.map (\imp -> Utils.pySimpleStatementToPyStatement (Syntax.SimpleStatementImport imp)) (Lists.concat [
+      moduleStandardImports meta,
+      (moduleDomainImports namespaces)])
+
+-- | Generate standard import statements based on module metadata
+moduleStandardImports :: PythonEnvironment.PythonModuleMetadata -> [Syntax.ImportStatement]
+moduleStandardImports meta =
+
+      let pairs =
+              [
+                ("__future__", [
+                  condImportSymbol "annotations" PythonNames.useFutureAnnotations]),
+                (
+                  "collections.abc",
+                  [
+                    condImportSymbol "Callable" (PythonEnvironment.pythonModuleMetadataUsesCallable meta),
+                    (condImportSymbol "Mapping" (PythonEnvironment.pythonModuleMetadataUsesFrozenDict meta)),
+                    (condImportSymbol "Sequence" (PythonEnvironment.pythonModuleMetadataUsesFrozenList meta)),
+                    (condImportSymbol "Set" (PythonEnvironment.pythonModuleMetadataUsesFrozenSet meta))]),
+                (
+                  "dataclasses",
+                  [
+                    condImportSymbol "dataclass" (PythonEnvironment.pythonModuleMetadataUsesDataclass meta),
+                    (condImportSymbol "replace" (PythonEnvironment.pythonModuleMetadataUsesDataclass meta))]),
+                ("decimal", [
+                  condImportSymbol "Decimal" (PythonEnvironment.pythonModuleMetadataUsesDecimal meta)]),
+                ("enum", [
+                  condImportSymbol "Enum" (PythonEnvironment.pythonModuleMetadataUsesEnum meta)]),
+                ("functools", [
+                  condImportSymbol "lru_cache" (PythonEnvironment.pythonModuleMetadataUsesLruCache meta)]),
+                (
+                  "hydra.core.overlay.python.dsl.python",
+                  [
+                    condImportSymbol "Either" (PythonEnvironment.pythonModuleMetadataUsesEither meta),
+                    (condImportSymbol "Given" (PythonEnvironment.pythonModuleMetadataUsesJust meta)),
+                    (condImportSymbol "Left" (PythonEnvironment.pythonModuleMetadataUsesLeft meta)),
+                    (condImportSymbol "Node" (PythonEnvironment.pythonModuleMetadataUsesNode meta)),
+                    (condImportSymbol "None_" (PythonEnvironment.pythonModuleMetadataUsesNothing meta)),
+                    (condImportSymbol "Optional" (PythonEnvironment.pythonModuleMetadataUsesMaybe meta)),
+                    (condImportSymbol "Right" (PythonEnvironment.pythonModuleMetadataUsesRight meta))]),
+                (
+                  "hydra.core.overlay.python.util",
+                  [
+                    condImportSymbol "ConsList" (PythonEnvironment.pythonModuleMetadataUsesFrozenList meta),
+                    (condImportSymbol "Lazy" True),
+                    (condImportSymbol "PersistentMap" (PythonEnvironment.pythonModuleMetadataUsesFrozenDict meta)),
+                    (condImportSymbol "PersistentSet" (PythonEnvironment.pythonModuleMetadataUsesFrozenSet meta))]),
+                (
+                  "hydra.core.overlay.python.util._decimal",
+                  [
+                    condImportSymbol "decimal_node_eq" (PythonEnvironment.pythonModuleMetadataUsesDecimal meta),
+                    (condImportSymbol "decimal_node_hash" (PythonEnvironment.pythonModuleMetadataUsesDecimal meta))]),
+                (
+                  "typing",
+                  [
+                    condImportSymbol "Annotated" (PythonEnvironment.pythonModuleMetadataUsesAnnotated meta),
+                    (condImportSymbol "Generic" (PythonEnvironment.pythonModuleMetadataUsesGeneric meta)),
+                    (condImportSymbol "TypeAlias" (PythonEnvironment.pythonModuleMetadataUsesTypeAlias meta)),
+                    (condImportSymbol "TypeVar" (PythonEnvironment.pythonModuleMetadataUsesTypeVar meta)),
+                    (condImportSymbol "cast" (PythonEnvironment.pythonModuleMetadataUsesCast meta))])]
+          simplified =
+                  Optionals.givens (Lists.map (\p ->
+                    let modName = Pairs.first p
+                        symbols = Optionals.givens (Pairs.second p)
+                    in (Logic.ifElse (Lists.isEmpty symbols) Nothing (Just (modName, symbols)))) pairs)
+      in (Lists.map (\p -> standardImportStatement (Pairs.first p) (Pairs.second p)) simplified)
+
+-- | Convert a Hydra module to Python source files
+moduleToPython :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (M.Map String String)
+moduleToPython overlaySubs mod defs cx g =
+    Eithers.bind (encodePythonModule overlaySubs cx g mod defs) (\file ->
+      let s = Serialization.printExpr (Serialization.parenthesize (Serde.moduleToExpr file))
+          path = CoreNames.moduleNameToFilePath Util.CaseConventionLowerSnake (File.FileExtension "py") (Packaging.moduleName mod)
+      in (Right (Maps.singleton path s)))
+
+-- | Accessor for the graph field of PyGraph
+pyGraphGraph :: PythonEnvironment.PyGraph -> Graph.Graph
+pyGraphGraph pyg = PythonEnvironment.pyGraphGraph pyg
+
+-- | Accessor for the metadata field of PyGraph
+pyGraphMetadata :: PythonEnvironment.PyGraph -> PythonEnvironment.PythonModuleMetadata
+pyGraphMetadata pyg = PythonEnvironment.pyGraphMetadata pyg
+
+-- | Create integer literal expression
+pyInt :: Integer -> Syntax.Expression
+pyInt n = Utils.pyAtomToPyExpression (Syntax.AtomNumber (Syntax.NumberInteger n))
+
+-- | Like bindingMetadata, but only for bindings that will actually be thunked
+pythonBindingMetadata :: Graph.Graph -> Model.Binding -> Maybe Model.Term
+pythonBindingMetadata g b =
+    Logic.ifElse (shouldThunkBinding g b) (Logic.ifElse (Predicates.isComplexBinding g b) (Just (Model.TermLiteral (Model.LiteralBoolean True))) Nothing) Nothing
+
+-- | Get the Graph from a PythonEnvironment
+pythonEnvironmentGetGraph :: PythonEnvironment.PythonEnvironment -> Graph.Graph
+pythonEnvironmentGetGraph env = PythonEnvironment.pythonEnvironmentGraph env
+
+-- | Set the Graph in a PythonEnvironment
+pythonEnvironmentSetGraph :: Graph.Graph -> PythonEnvironment.PythonEnvironment -> PythonEnvironment.PythonEnvironment
+pythonEnvironmentSetGraph tc env =
+    PythonEnvironment.PythonEnvironment {
+      PythonEnvironment.pythonEnvironmentNamespaces = (PythonEnvironment.pythonEnvironmentNamespaces env),
+      PythonEnvironment.pythonEnvironmentBoundTypeVariables = (PythonEnvironment.pythonEnvironmentBoundTypeVariables env),
+      PythonEnvironment.pythonEnvironmentGraph = tc,
+      PythonEnvironment.pythonEnvironmentNullaryBindings = (PythonEnvironment.pythonEnvironmentNullaryBindings env),
+      PythonEnvironment.pythonEnvironmentVersion = (PythonEnvironment.pythonEnvironmentVersion env),
+      PythonEnvironment.pythonEnvironmentSkipCasts = (PythonEnvironment.pythonEnvironmentSkipCasts env),
+      PythonEnvironment.pythonEnvironmentInlineVariables = (PythonEnvironment.pythonEnvironmentInlineVariables env),
+      PythonEnvironment.pythonEnvironmentOverlaySubs = (PythonEnvironment.pythonEnvironmentOverlaySubs env)}
+
+-- | Build a fluent builder (factory + nested Builder dataclass) for a record
+recordBuilderClass :: PythonEnvironment.PythonEnvironment -> Model.Name -> [Model.FieldType] -> Maybe Syntax.Args -> Either t0 [Syntax.Statement]
+recordBuilderClass env name rowType recordArgs =
+    Eithers.bind (Eithers.mapList (\ft -> Eithers.map (\pyType -> Utils.pyAssignmentToPyStatement (Syntax.AssignmentTyped (Syntax.TypedAssignment {
+      Syntax.typedAssignmentLhs = (Syntax.SingleTargetName (Syntax.Name (Strings.concat2 "_" (Syntax.unName (PythonNames.encodeFieldName env (Model.fieldTypeName ft)))))),
+      Syntax.typedAssignmentType = pyType,
+      Syntax.typedAssignmentRhs = (Just (Syntax.AnnotatedRhsStar [
+        Syntax.StarExpressionSimple (Utils.pyNameToPyExpression Utils.pyNone)]))}))) (encodeType env (Model.fieldTypeType ft))) rowType) (\builderFields ->
+      let setters = Lists.map (\ft -> recordBuilderSetter env ft) rowType
+          pyName = PythonNames.encodeName False Util.CaseConventionPascal env name
+          buildKwargs =
+                  Lists.map (\ft -> Syntax.KwargOrStarredKwarg (Syntax.Kwarg {
+                    Syntax.kwargName = (Syntax.Name (Syntax.unName (PythonNames.encodeFieldName env (Model.fieldTypeName ft)))),
+                    Syntax.kwargValue = (Utils.projectFromExpression (Utils.pyNameToPyExpression (Syntax.Name "self")) (Syntax.Name (Strings.concat2 "_" (Syntax.unName (PythonNames.encodeFieldName env (Model.fieldTypeName ft))))))})) rowType
+          ctorCall =
+                  Utils.pyPrimaryToPyExpression (Utils.primaryWithRhs (Utils.pyNameToPyPrimary pyName) (Syntax.PrimaryRhsCall (Syntax.Args {
+                    Syntax.argsPositional = [],
+                    Syntax.argsKwargOrStarred = buildKwargs,
+                    Syntax.argsKwargOrDoubleStarred = []})))
+          buildMethod =
+                  Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
+                    Syntax.functionDefinitionDecorators = Nothing,
+                    Syntax.functionDefinitionRaw = Syntax.FunctionDefRaw {
+                      Syntax.functionDefRawAsync = False,
+                      Syntax.functionDefRawName = (Syntax.Name "build"),
+                      Syntax.functionDefRawTypeParams = [],
+                      Syntax.functionDefRawParams = (Just (Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
+                        Syntax.paramNoDefaultParametersParamNoDefault = [
+                          Syntax.ParamNoDefault {
+                            Syntax.paramNoDefaultParam = Syntax.Param {
+                              Syntax.paramName = (Syntax.Name "self"),
+                              Syntax.paramAnnotation = Nothing},
+                            Syntax.paramNoDefaultTypeComment = Nothing}],
+                        Syntax.paramNoDefaultParametersParamWithDefault = [],
+                        Syntax.paramNoDefaultParametersStarEtc = Nothing}))),
+                      Syntax.functionDefRawReturnType = Nothing,
+                      Syntax.functionDefRawFuncTypeComment = Nothing,
+                      Syntax.functionDefRawBlock = (Utils.indentedBlock Nothing [
+                        [
+                          Utils.returnSingle ctorCall]])}}))
+          builderBody =
+                  Utils.indentedBlock Nothing [
+                    Lists.concat [
+                      builderFields,
+                      setters,
+                      [
+                        buildMethod]]]
+          builderDecs = Just (Syntax.Decorators [
+                dataclassDecorator])
+          builderClass =
+                  Utils.pyClassDefinitionToPyStatement (Syntax.ClassDefinition {
+                    Syntax.classDefinitionDecorators = builderDecs,
+                    Syntax.classDefinitionName = (Syntax.Name "Builder"),
+                    Syntax.classDefinitionTypeParams = [],
+                    Syntax.classDefinitionArguments = recordArgs,
+                    Syntax.classDefinitionBody = builderBody})
+          qualifiedBuilderName = Syntax.Name (Strings.concat2 (Syntax.unName pyName) ".Builder")
+          builderCall = Utils.functionCall (Utils.pyNameToPyPrimary qualifiedBuilderName) []
+          factoryMethod =
+                  Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
+                    Syntax.functionDefinitionDecorators = (Just (Syntax.Decorators [
+                      Syntax.NamedExpressionSimple (Utils.pyNameToPyExpression (Syntax.Name "staticmethod"))])),
+                    Syntax.functionDefinitionRaw = Syntax.FunctionDefRaw {
+                      Syntax.functionDefRawAsync = False,
+                      Syntax.functionDefRawName = (Syntax.Name "builder"),
+                      Syntax.functionDefRawTypeParams = [],
+                      Syntax.functionDefRawParams = (Just (Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
+                        Syntax.paramNoDefaultParametersParamNoDefault = [],
+                        Syntax.paramNoDefaultParametersParamWithDefault = [],
+                        Syntax.paramNoDefaultParametersStarEtc = Nothing}))),
+                      Syntax.functionDefRawReturnType = Nothing,
+                      Syntax.functionDefRawFuncTypeComment = Nothing,
+                      Syntax.functionDefRawBlock = (Utils.indentedBlock Nothing [
+                        [
+                          Utils.returnSingle builderCall]])}}))
+      in (Right [
+        factoryMethod,
+        builderClass]))
+
+-- | Build a fluent setter for the nested Builder of a record
+recordBuilderSetter :: PythonEnvironment.PythonEnvironment -> Model.FieldType -> Syntax.Statement
+recordBuilderSetter env fieldType =
+
+      let fname = Model.fieldTypeName fieldType
+          setterName = builderSetterName env fname
+          paramName = Syntax.Name setterName
+          storageName = Strings.concat2 "_" (Syntax.unName (PythonNames.encodeFieldName env (Model.fieldTypeName fieldType)))
+          kwarg =
+                  Syntax.KwargOrStarredKwarg (Syntax.Kwarg {
+                    Syntax.kwargName = (Syntax.Name storageName),
+                    Syntax.kwargValue = (Utils.pyNameToPyExpression paramName)})
+      in (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
+        Syntax.functionDefinitionDecorators = Nothing,
+        Syntax.functionDefinitionRaw = Syntax.FunctionDefRaw {
+          Syntax.functionDefRawAsync = False,
+          Syntax.functionDefRawName = (Syntax.Name setterName),
+          Syntax.functionDefRawTypeParams = [],
+          Syntax.functionDefRawParams = (Just (Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
+            Syntax.paramNoDefaultParametersParamNoDefault = [
+              Syntax.ParamNoDefault {
+                Syntax.paramNoDefaultParam = Syntax.Param {
+                  Syntax.paramName = (Syntax.Name "self"),
+                  Syntax.paramAnnotation = Nothing},
+                Syntax.paramNoDefaultTypeComment = Nothing},
+              Syntax.ParamNoDefault {
+                Syntax.paramNoDefaultParam = Syntax.Param {
+                  Syntax.paramName = paramName,
+                  Syntax.paramAnnotation = Nothing},
+                Syntax.paramNoDefaultTypeComment = Nothing}],
+            Syntax.paramNoDefaultParametersParamWithDefault = [],
+            Syntax.paramNoDefaultParametersStarEtc = Nothing}))),
+          Syntax.functionDefRawReturnType = Nothing,
+          Syntax.functionDefRawFuncTypeComment = Nothing,
+          Syntax.functionDefRawBlock = (Utils.indentedBlock Nothing [
+            [
+              Utils.returnSingle (Utils.pyPrimaryToPyExpression (Utils.primaryWithRhs (Utils.pyNameToPyPrimary (Syntax.Name "replace")) (Syntax.PrimaryRhsCall (Syntax.Args {
+                Syntax.argsPositional = [
+                  Syntax.PosArgExpression (Utils.pyNameToPyExpression (Syntax.Name "self"))],
+                Syntax.argsKwargOrStarred = [
+                  kwarg],
+                Syntax.argsKwargOrDoubleStarred = []}))))]])}})))
+
+-- | Build a per-field copy-update method (with_<field>) for a record
+recordWithMethod :: PythonEnvironment.PythonEnvironment -> Model.FieldType -> Syntax.Statement
+recordWithMethod env fieldType =
+
+      let fname = Model.fieldTypeName fieldType
+          snake = Syntax.unName (PythonNames.encodeFieldName env fname)
+          methodName = Strings.concat2 "with_" snake
+          kwargKey = Syntax.Name snake
+          paramSnake = Logic.ifElse (Equality.equal snake "self") "_self" snake
+          paramName = Syntax.Name paramSnake
+          kwarg =
+                  Syntax.KwargOrStarredKwarg (Syntax.Kwarg {
+                    Syntax.kwargName = kwargKey,
+                    Syntax.kwargValue = (Utils.pyNameToPyExpression paramName)})
+      in (Syntax.StatementCompound (Syntax.CompoundStatementFunction (Syntax.FunctionDefinition {
+        Syntax.functionDefinitionDecorators = Nothing,
+        Syntax.functionDefinitionRaw = Syntax.FunctionDefRaw {
+          Syntax.functionDefRawAsync = False,
+          Syntax.functionDefRawName = (Syntax.Name methodName),
+          Syntax.functionDefRawTypeParams = [],
+          Syntax.functionDefRawParams = (Just (Syntax.ParametersParamNoDefault (Syntax.ParamNoDefaultParameters {
+            Syntax.paramNoDefaultParametersParamNoDefault = [
+              Syntax.ParamNoDefault {
+                Syntax.paramNoDefaultParam = Syntax.Param {
+                  Syntax.paramName = (Syntax.Name "self"),
+                  Syntax.paramAnnotation = Nothing},
+                Syntax.paramNoDefaultTypeComment = Nothing},
+              Syntax.ParamNoDefault {
+                Syntax.paramNoDefaultParam = Syntax.Param {
+                  Syntax.paramName = paramName,
+                  Syntax.paramAnnotation = Nothing},
+                Syntax.paramNoDefaultTypeComment = Nothing}],
+            Syntax.paramNoDefaultParametersParamWithDefault = [],
+            Syntax.paramNoDefaultParametersStarEtc = Nothing}))),
+          Syntax.functionDefRawReturnType = Nothing,
+          Syntax.functionDefRawFuncTypeComment = Nothing,
+          Syntax.functionDefRawBlock = (Utils.indentedBlock Nothing [
+            [
+              Utils.returnSingle (Utils.pyPrimaryToPyExpression (Utils.primaryWithRhs (Utils.pyNameToPyPrimary (Syntax.Name "replace")) (Syntax.PrimaryRhsCall (Syntax.Args {
+                Syntax.argsPositional = [
+                  Syntax.PosArgExpression (Utils.pyNameToPyExpression (Syntax.Name "self"))],
+                Syntax.argsKwargOrStarred = [
+                  kwarg],
+                Syntax.argsKwargOrDoubleStarred = []}))))]])}})))
+
+setMetaNamespaces :: Util.ModuleNames Syntax.DottedName -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PythonModuleMetadata
+setMetaNamespaces ns m =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = ns,
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaTypeVariables :: PythonEnvironment.PythonModuleMetadata -> S.Set Model.Name -> PythonEnvironment.PythonModuleMetadata
+setMetaTypeVariables m tvars =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = tvars,
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesAnnotated :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesAnnotated m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = b,
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesCallable :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesCallable m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = b,
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesCast :: Bool -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesCast b m =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = b,
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesDataclass :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesDataclass m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = b,
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesDecimal :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesDecimal m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = b,
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesEither :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesEither m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = b,
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesEnum :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesEnum m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = b,
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesFrozenDict :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesFrozenDict m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = b,
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesFrozenList :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesFrozenList m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = b,
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesFrozenSet :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesFrozenSet m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = b,
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesGeneric :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesGeneric m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = b,
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesJust :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesJust m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = b,
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesLeft :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesLeft m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = b,
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesLruCache :: Bool -> PythonEnvironment.PythonModuleMetadata -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesLruCache b m =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = b,
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesMaybe :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesMaybe m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = b,
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesName :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesName m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = b,
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesNode :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesNode m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = b,
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesNothing :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesNothing m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = b,
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesRight :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesRight m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = b,
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesTypeAlias :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesTypeAlias m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = b,
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = (PythonEnvironment.pythonModuleMetadataUsesTypeVar m)}
+
+setMetaUsesTypeVar :: PythonEnvironment.PythonModuleMetadata -> Bool -> PythonEnvironment.PythonModuleMetadata
+setMetaUsesTypeVar m b =
+    PythonEnvironment.PythonModuleMetadata {
+      PythonEnvironment.pythonModuleMetadataNamespaces = (PythonEnvironment.pythonModuleMetadataNamespaces m),
+      PythonEnvironment.pythonModuleMetadataTypeVariables = (PythonEnvironment.pythonModuleMetadataTypeVariables m),
+      PythonEnvironment.pythonModuleMetadataUsesAnnotated = (PythonEnvironment.pythonModuleMetadataUsesAnnotated m),
+      PythonEnvironment.pythonModuleMetadataUsesCallable = (PythonEnvironment.pythonModuleMetadataUsesCallable m),
+      PythonEnvironment.pythonModuleMetadataUsesCast = (PythonEnvironment.pythonModuleMetadataUsesCast m),
+      PythonEnvironment.pythonModuleMetadataUsesLruCache = (PythonEnvironment.pythonModuleMetadataUsesLruCache m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeAlias = (PythonEnvironment.pythonModuleMetadataUsesTypeAlias m),
+      PythonEnvironment.pythonModuleMetadataUsesDataclass = (PythonEnvironment.pythonModuleMetadataUsesDataclass m),
+      PythonEnvironment.pythonModuleMetadataUsesDecimal = (PythonEnvironment.pythonModuleMetadataUsesDecimal m),
+      PythonEnvironment.pythonModuleMetadataUsesEither = (PythonEnvironment.pythonModuleMetadataUsesEither m),
+      PythonEnvironment.pythonModuleMetadataUsesEnum = (PythonEnvironment.pythonModuleMetadataUsesEnum m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenDict = (PythonEnvironment.pythonModuleMetadataUsesFrozenDict m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenList = (PythonEnvironment.pythonModuleMetadataUsesFrozenList m),
+      PythonEnvironment.pythonModuleMetadataUsesFrozenSet = (PythonEnvironment.pythonModuleMetadataUsesFrozenSet m),
+      PythonEnvironment.pythonModuleMetadataUsesGeneric = (PythonEnvironment.pythonModuleMetadataUsesGeneric m),
+      PythonEnvironment.pythonModuleMetadataUsesJust = (PythonEnvironment.pythonModuleMetadataUsesJust m),
+      PythonEnvironment.pythonModuleMetadataUsesLeft = (PythonEnvironment.pythonModuleMetadataUsesLeft m),
+      PythonEnvironment.pythonModuleMetadataUsesMaybe = (PythonEnvironment.pythonModuleMetadataUsesMaybe m),
+      PythonEnvironment.pythonModuleMetadataUsesName = (PythonEnvironment.pythonModuleMetadataUsesName m),
+      PythonEnvironment.pythonModuleMetadataUsesNode = (PythonEnvironment.pythonModuleMetadataUsesNode m),
+      PythonEnvironment.pythonModuleMetadataUsesNothing = (PythonEnvironment.pythonModuleMetadataUsesNothing m),
+      PythonEnvironment.pythonModuleMetadataUsesRight = (PythonEnvironment.pythonModuleMetadataUsesRight m),
+      PythonEnvironment.pythonModuleMetadataUsesTypeVar = b}
+
+-- | Determine if a binding should be thunked based on its complexity and triviality
+shouldThunkBinding :: Graph.Graph -> Model.Binding -> Bool
+shouldThunkBinding g b =
+    Logic.and (Predicates.isComplexBinding g b) (Logic.not (Predicates.isTrivialTerm (Model.bindingTerm b)))
+
+-- | Generate a single from-import statement
+standardImportStatement :: String -> [String] -> Syntax.ImportStatement
+standardImportStatement modName symbols =
+    Syntax.ImportStatementFrom (Syntax.ImportFrom {
+      Syntax.importFromPrefixes = [],
+      Syntax.importFromDottedName = (Just (Syntax.DottedName [
+        Syntax.Name modName])),
+      Syntax.importFromTargets = (Syntax.ImportFromTargetsSimple (Lists.map (\s -> Syntax.ImportFromAsName {
+        Syntax.importFromAsNameName = (Syntax.Name s),
+        Syntax.importFromAsNameAs = Nothing}) symbols))})
+
+-- | The target Python version for code generation
+targetPythonVersion :: PythonEnvironment.PythonVersion
+targetPythonVersion = Utils.targetPythonVersion
+
+-- | Calculate term arity with proper primitive handling
+termArityWithPrimitives :: Graph.Graph -> Model.Term -> Int
+termArityWithPrimitives graph term =
+    case (Strip.deannotateAndDetypeTerm term) of
+      Model.TermApplication v0 -> Ordering.max 0 (Math.sub (termArityWithPrimitives graph (Model.applicationFunction v0)) 1)
+      Model.TermLambda v0 -> Math.add 1 (termArityWithPrimitives graph (Model.lambdaBody v0))
+      Model.TermProject _ -> 1
+      Model.TermUnwrap _ -> 1
+      Model.TermCases _ -> 1
+      Model.TermVariable v0 -> Optionals.match (Lexical.lookupBinding graph v0) 0 (\el -> Optionals.match (Model.bindingTypeScheme el) (Arity.termArity (Model.bindingTerm el)) (\ts -> Arity.typeSchemeArity ts))
+      _ -> 0
+
+-- | Create a TypeVar assignment statement for a type variable name
+tvarStatement :: Syntax.Name -> Syntax.Statement
+tvarStatement name =
+    Utils.assignmentStatement name (Utils.functionCall (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "TypeVar"))) [
+      Utils.doubleQuotedString (Syntax.unName name)])
+
+-- | Version-aware type alias statement generation
+typeAliasStatementFor :: PythonEnvironment.PythonEnvironment -> Syntax.Name -> [Syntax.TypeParameter] -> Maybe String -> Syntax.Expression -> Syntax.Statement
+typeAliasStatementFor env name tparams mcomment tyexpr =
+    Logic.ifElse (useInlineTypeParamsFor (PythonEnvironment.pythonEnvironmentVersion env)) (Utils.typeAliasStatement name tparams mcomment tyexpr) (Utils.typeAliasStatement310 name tparams mcomment tyexpr)
+
+-- | Version-aware union type statement generation
+unionTypeStatementsFor :: PythonEnvironment.PythonEnvironment -> Syntax.Name -> [Syntax.TypeParameter] -> Maybe String -> Syntax.Expression -> [Syntax.Statement] -> [Syntax.Statement]
+unionTypeStatementsFor env name tparams mcomment tyexpr extraStmts =
+    Logic.ifElse (useInlineTypeParamsFor (PythonEnvironment.pythonEnvironmentVersion env)) (Lists.concat2 [
+      Utils.typeAliasStatement name tparams mcomment tyexpr] extraStmts) (Utils.unionTypeClassStatements310 name mcomment tyexpr extraStmts)
+
+-- | Create an expression that calls hydra.core.overlay.python.dsl.python.unsupported(message) at runtime
+unsupportedExpression :: String -> Syntax.Expression
+unsupportedExpression msg =
+    Utils.functionCall (Utils.pyExpressionToPyPrimary (Utils.projectFromExpression (Utils.projectFromExpression (Utils.projectFromExpression (Utils.projectFromExpression (Utils.projectFromExpression (Utils.projectFromExpression (Syntax.ExpressionSimple (Syntax.Disjunction [
+      Syntax.Conjunction [
+        Syntax.InversionSimple (Syntax.Comparison {
+          Syntax.comparisonLhs = Syntax.BitwiseOr {
+            Syntax.bitwiseOrLhs = Nothing,
+            Syntax.bitwiseOrRhs = Syntax.BitwiseXor {
+              Syntax.bitwiseXorLhs = Nothing,
+              Syntax.bitwiseXorRhs = Syntax.BitwiseAnd {
+                Syntax.bitwiseAndLhs = Nothing,
+                Syntax.bitwiseAndRhs = Syntax.ShiftExpression {
+                  Syntax.shiftExpressionLhs = Nothing,
+                  Syntax.shiftExpressionRhs = Syntax.Sum {
+                    Syntax.sumLhs = Nothing,
+                    Syntax.sumRhs = Syntax.Term {
+                      Syntax.termLhs = Nothing,
+                      Syntax.termRhs = (Syntax.FactorSimple (Syntax.Power {
+                        Syntax.powerLhs = Syntax.AwaitPrimary {
+                          Syntax.awaitPrimaryAwait = False,
+                          Syntax.awaitPrimaryPrimary = (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "hydra")))},
+                        Syntax.powerRhs = Nothing}))}}}}}},
+          Syntax.comparisonRhs = []})]])) (Syntax.Name "core")) (Syntax.Name "overlay")) (Syntax.Name "python")) (Syntax.Name "dsl")) (Syntax.Name "python")) (Syntax.Name "unsupported"))) [
+      Utils.stringToPyExpression Syntax.QuoteStyleDouble msg]
+
+-- | Legacy constant for backward compatibility; use useInlineTypeParamsFor in new code
+useInlineTypeParams :: Bool
+useInlineTypeParams = useInlineTypeParamsFor Utils.targetPythonVersion
+
+-- | Version-aware inline type parameters
+useInlineTypeParamsFor :: PythonEnvironment.PythonVersion -> Bool
+useInlineTypeParamsFor version = Equality.equal version PythonEnvironment.PythonVersionPython312
+
+-- | Create args for variant (Node[type], Generic[tparams])
+variantArgs :: Syntax.Expression -> [Model.Name] -> Syntax.Args
+variantArgs ptype tparams =
+    Utils.pyExpressionsToPyArgs (Optionals.givens [
+      Just (Utils.pyPrimaryToPyExpression (Utils.primaryWithExpressionSlices (Syntax.PrimarySimple (Syntax.AtomName (Syntax.Name "Node"))) [
+        ptype])),
+      (genericArg tparams)])
+
+-- | Create a ClosedPattern for a variant based on its characteristics
+variantClosedPattern :: PythonEnvironment.PythonEnvironment -> Model.Name -> Model.Name -> Syntax.Name -> t0 -> Bool -> Model.Name -> Bool -> Syntax.ClosedPattern
+variantClosedPattern env typeName fieldName pyVariantName rowType isEnum varName shouldCapture =
+    Logic.ifElse isEnum (enumVariantPattern env typeName fieldName) (Logic.ifElse (Logic.not shouldCapture) (classVariantPatternUnit pyVariantName) (classVariantPatternWithCapture env pyVariantName varName))
+
+-- | Create a wildcard case block with a given body statement
+wildcardCaseBlock :: Syntax.Statement -> Syntax.CaseBlock
+wildcardCaseBlock stmt =
+    Syntax.CaseBlock {
+      Syntax.caseBlockPatterns = (Utils.pyClosedPatternToPyPatterns Syntax.ClosedPatternWildcard),
+      Syntax.caseBlockGuard = Nothing,
+      Syntax.caseBlockBody = (Utils.indentedBlock Nothing [
+        [
+          stmt]])}
+
+-- | Execute a computation with definitions in scope
+withDefinitions :: PythonEnvironment.PythonEnvironment -> [Packaging.Definition] -> (PythonEnvironment.PythonEnvironment -> t0) -> t0
+withDefinitions env defs body =
+
+      let bindings =
+              Optionals.givens (Lists.map (\def_ -> case def_ of
+                Packaging.DefinitionTerm v0 -> Just (Model.Binding {
+                  Model.bindingName = (Packaging.termDefinitionName v0),
+                  Model.bindingTerm = (Packaging.termDefinitionBody v0),
+                  Model.bindingTypeScheme = (Optionals.map (\sig -> Scoping.termSignatureToTypeScheme sig) (Packaging.termDefinitionSignature v0))})
+                Packaging.DefinitionType _ -> Nothing
+                _ -> Nothing) defs)
+          dummyLet =
+                  Model.Let {
+                    Model.letBindings = bindings,
+                    Model.letBody = (Model.TermLiteral (Model.LiteralString "dummy"))}
+      in (withLet env dummyLet body)
+
+-- | Execute a computation with lambda context (adds lambda parameter to Graph)
+withLambda :: PythonEnvironment.PythonEnvironment -> Model.Lambda -> (PythonEnvironment.PythonEnvironment -> t0) -> t0
+withLambda = CoreEnvironment.withLambdaContext pythonEnvironmentGetGraph pythonEnvironmentSetGraph
+
+-- | Execute a computation with let context (adds let bindings to Graph)
+withLet :: PythonEnvironment.PythonEnvironment -> Model.Let -> (PythonEnvironment.PythonEnvironment -> t0) -> t0
+withLet = CoreEnvironment.withLetContext pythonEnvironmentGetGraph pythonEnvironmentSetGraph pythonBindingMetadata
+
+-- | Execute a computation with inline let context (for walrus operators)
+withLetInline :: PythonEnvironment.PythonEnvironment -> Model.Let -> (PythonEnvironment.PythonEnvironment -> t0) -> t0
+withLetInline env lt body =
+
+      let bindingNames = Lists.map (\b -> Model.bindingName b) (Model.letBindings lt)
+          inlineVars = Sets.fromList bindingNames
+          noMetadata = \tc -> \b -> Nothing
+      in (CoreEnvironment.withLetContext pythonEnvironmentGetGraph pythonEnvironmentSetGraph noMetadata env lt (\innerEnv ->
+        let updatedEnv =
+                PythonEnvironment.PythonEnvironment {
+                  PythonEnvironment.pythonEnvironmentNamespaces = (PythonEnvironment.pythonEnvironmentNamespaces innerEnv),
+                  PythonEnvironment.pythonEnvironmentBoundTypeVariables = (PythonEnvironment.pythonEnvironmentBoundTypeVariables innerEnv),
+                  PythonEnvironment.pythonEnvironmentGraph = (PythonEnvironment.pythonEnvironmentGraph innerEnv),
+                  PythonEnvironment.pythonEnvironmentNullaryBindings = (PythonEnvironment.pythonEnvironmentNullaryBindings innerEnv),
+                  PythonEnvironment.pythonEnvironmentVersion = (PythonEnvironment.pythonEnvironmentVersion innerEnv),
+                  PythonEnvironment.pythonEnvironmentSkipCasts = (PythonEnvironment.pythonEnvironmentSkipCasts innerEnv),
+                  PythonEnvironment.pythonEnvironmentInlineVariables = (Sets.union inlineVars (PythonEnvironment.pythonEnvironmentInlineVariables innerEnv)),
+                  PythonEnvironment.pythonEnvironmentOverlaySubs = (PythonEnvironment.pythonEnvironmentOverlaySubs innerEnv)}
+        in (body updatedEnv)))
+
+-- | Execute a computation with type lambda context
+withTypeLambda :: PythonEnvironment.PythonEnvironment -> Model.TypeLambda -> (PythonEnvironment.PythonEnvironment -> t0) -> t0
+withTypeLambda = CoreEnvironment.withTypeLambdaContext pythonEnvironmentGetGraph pythonEnvironmentSetGraph
+
+-- | Wrap a Python expression in a nullary lambda (thunk) for lazy evaluation
+wrapInNullaryLambda :: Syntax.Expression -> Syntax.Expression
+wrapInNullaryLambda expr =
+    Syntax.ExpressionLambda (Syntax.Lambda {
+      Syntax.lambdaParams = Syntax.LambdaParameters {
+        Syntax.lambdaParametersSlashNoDefault = Nothing,
+        Syntax.lambdaParametersParamNoDefault = [],
+        Syntax.lambdaParametersParamWithDefault = [],
+        Syntax.lambdaParametersStarEtc = Nothing},
+      Syntax.lambdaBody = expr})
+
+-- | Wrap lazy-flagged arguments of a primitive call in nullary lambdas, per isLazy metadata (issue #391)
+wrapLazyArguments :: Graph.Graph -> Model.Name -> [Syntax.Expression] -> [Syntax.Expression]
 wrapLazyArguments g name args =
 
       let lazyFlags = lazyFlagsForPrimitive g name
diff --git a/src/main/haskell/Hydra/Python/Dsl/Environment.hs b/src/main/haskell/Hydra/Python/Dsl/Environment.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Python/Dsl/Environment.hs
@@ -0,0 +1,4749 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | DSL functions for hydra.python.environment
+
+module Hydra.Python.Dsl.Environment where
+
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Packaging as Packaging
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Core.Typing as Typing
+import qualified Hydra.Core.Util as Util
+import qualified Hydra.Python.Dsl.Syntax as DslSyntax
+import qualified Hydra.Python.Environment as Environment
+import qualified Hydra.Python.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.Map as M
+import qualified Data.Set as S
+
+-- | DSL constructor for hydra.python.environment.PyGraph
+pyGraph :: Typed.TypedTerm Graph.Graph -> Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Environment.PyGraph
+pyGraph graph metadata =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PyGraph"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Typed.unTypedTerm graph)},
+        Model.Field {
+          Model.fieldName = (Model.Name "metadata"),
+          Model.fieldTerm = (Typed.unTypedTerm metadata)}]}))
+
+-- | DSL accessor for the graph field of hydra.python.environment.PyGraph
+pyGraphGraph :: Typed.TypedTerm Environment.PyGraph -> Typed.TypedTerm Graph.Graph
+pyGraphGraph x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PyGraph"),
+        Model.projectionFieldName = (Model.Name "graph")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the metadata field of hydra.python.environment.PyGraph
+pyGraphMetadata :: Typed.TypedTerm Environment.PyGraph -> Typed.TypedTerm Environment.PythonModuleMetadata
+pyGraphMetadata x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PyGraph"),
+        Model.projectionFieldName = (Model.Name "metadata")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.environment.PyGraph
+pyGraphPyGraph :: Typed.TypedName Environment.PyGraph
+pyGraphPyGraph = Typed.TypedName (Model.Name "hydra.python.environment.PyGraph")
+
+-- | DSL updater for the graph field of hydra.python.environment.PyGraph
+pyGraphWithGraph :: Typed.TypedTerm Environment.PyGraph -> Typed.TypedTerm Graph.Graph -> Typed.TypedTerm Environment.PyGraph
+pyGraphWithGraph original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PyGraph"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "metadata"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PyGraph"),
+              Model.projectionFieldName = (Model.Name "metadata")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the metadata field of hydra.python.environment.PyGraph
+pyGraphWithMetadata :: Typed.TypedTerm Environment.PyGraph -> Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Environment.PyGraph
+pyGraphWithMetadata original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PyGraph"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PyGraph"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "metadata"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.environment.PythonEnvironment
+pythonEnvironment :: Typed.TypedTerm (Util.ModuleNames Syntax.DottedName) -> Typed.TypedTerm ([Model.Name], (M.Map Model.Name Syntax.Name)) -> Typed.TypedTerm Graph.Graph -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.PythonVersion -> Typed.TypedTerm Bool -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Environment.PythonEnvironment
+pythonEnvironment namespaces boundTypeVariables graph nullaryBindings version skipCasts inlineVariables overlaySubs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Typed.unTypedTerm namespaces)},
+        Model.Field {
+          Model.fieldName = (Model.Name "boundTypeVariables"),
+          Model.fieldTerm = (Typed.unTypedTerm boundTypeVariables)},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Typed.unTypedTerm graph)},
+        Model.Field {
+          Model.fieldName = (Model.Name "nullaryBindings"),
+          Model.fieldTerm = (Typed.unTypedTerm nullaryBindings)},
+        Model.Field {
+          Model.fieldName = (Model.Name "version"),
+          Model.fieldTerm = (Typed.unTypedTerm version)},
+        Model.Field {
+          Model.fieldName = (Model.Name "skipCasts"),
+          Model.fieldTerm = (Typed.unTypedTerm skipCasts)},
+        Model.Field {
+          Model.fieldName = (Model.Name "inlineVariables"),
+          Model.fieldTerm = (Typed.unTypedTerm inlineVariables)},
+        Model.Field {
+          Model.fieldName = (Model.Name "overlaySubs"),
+          Model.fieldTerm = (Typed.unTypedTerm overlaySubs)}]}))
+
+-- | DSL accessor for the boundTypeVariables field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentBoundTypeVariables :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm ([Model.Name], (M.Map Model.Name Syntax.Name))
+pythonEnvironmentBoundTypeVariables x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+        Model.projectionFieldName = (Model.Name "boundTypeVariables")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the graph field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentGraph :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Graph.Graph
+pythonEnvironmentGraph x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+        Model.projectionFieldName = (Model.Name "graph")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the inlineVariables field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentInlineVariables :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set Model.Name)
+pythonEnvironmentInlineVariables x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+        Model.projectionFieldName = (Model.Name "inlineVariables")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the namespaces field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentNamespaces :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (Util.ModuleNames Syntax.DottedName)
+pythonEnvironmentNamespaces x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+        Model.projectionFieldName = (Model.Name "namespaces")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the nullaryBindings field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentNullaryBindings :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set Model.Name)
+pythonEnvironmentNullaryBindings x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+        Model.projectionFieldName = (Model.Name "nullaryBindings")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the overlaySubs field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentOverlaySubs :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set String)
+pythonEnvironmentOverlaySubs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+        Model.projectionFieldName = (Model.Name "overlaySubs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.environment.PythonEnvironment
+pythonEnvironmentPythonEnvironment :: Typed.TypedName Environment.PythonEnvironment
+pythonEnvironmentPythonEnvironment = Typed.TypedName (Model.Name "hydra.python.environment.PythonEnvironment")
+
+-- | DSL accessor for the skipCasts field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentSkipCasts :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Bool
+pythonEnvironmentSkipCasts x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+        Model.projectionFieldName = (Model.Name "skipCasts")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the version field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentVersion :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Environment.PythonVersion
+pythonEnvironmentVersion x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+        Model.projectionFieldName = (Model.Name "version")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the boundTypeVariables field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentWithBoundTypeVariables :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm ([Model.Name], (M.Map Model.Name Syntax.Name)) -> Typed.TypedTerm Environment.PythonEnvironment
+pythonEnvironmentWithBoundTypeVariables original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "boundTypeVariables"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "nullaryBindings"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "nullaryBindings")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "version"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "version")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "skipCasts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "skipCasts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inlineVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "inlineVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "overlaySubs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "overlaySubs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the graph field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentWithGraph :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Graph.Graph -> Typed.TypedTerm Environment.PythonEnvironment
+pythonEnvironmentWithGraph original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "boundTypeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "boundTypeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "nullaryBindings"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "nullaryBindings")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "version"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "version")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "skipCasts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "skipCasts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inlineVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "inlineVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "overlaySubs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "overlaySubs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the inlineVariables field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentWithInlineVariables :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.PythonEnvironment
+pythonEnvironmentWithInlineVariables original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "boundTypeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "boundTypeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "nullaryBindings"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "nullaryBindings")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "version"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "version")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "skipCasts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "skipCasts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inlineVariables"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "overlaySubs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "overlaySubs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the namespaces field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentWithNamespaces :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (Util.ModuleNames Syntax.DottedName) -> Typed.TypedTerm Environment.PythonEnvironment
+pythonEnvironmentWithNamespaces original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "boundTypeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "boundTypeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "nullaryBindings"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "nullaryBindings")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "version"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "version")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "skipCasts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "skipCasts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inlineVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "inlineVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "overlaySubs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "overlaySubs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the nullaryBindings field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentWithNullaryBindings :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.PythonEnvironment
+pythonEnvironmentWithNullaryBindings original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "boundTypeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "boundTypeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "nullaryBindings"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "version"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "version")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "skipCasts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "skipCasts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inlineVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "inlineVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "overlaySubs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "overlaySubs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the overlaySubs field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentWithOverlaySubs :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Environment.PythonEnvironment
+pythonEnvironmentWithOverlaySubs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "boundTypeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "boundTypeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "nullaryBindings"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "nullaryBindings")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "version"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "version")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "skipCasts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "skipCasts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inlineVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "inlineVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "overlaySubs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the skipCasts field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentWithSkipCasts :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonEnvironment
+pythonEnvironmentWithSkipCasts original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "boundTypeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "boundTypeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "nullaryBindings"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "nullaryBindings")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "version"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "version")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "skipCasts"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "inlineVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "inlineVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "overlaySubs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "overlaySubs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the version field of hydra.python.environment.PythonEnvironment
+pythonEnvironmentWithVersion :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Environment.PythonVersion -> Typed.TypedTerm Environment.PythonEnvironment
+pythonEnvironmentWithVersion original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "boundTypeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "boundTypeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "nullaryBindings"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "nullaryBindings")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "version"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "skipCasts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "skipCasts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "inlineVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "inlineVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "overlaySubs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonEnvironment"),
+              Model.projectionFieldName = (Model.Name "overlaySubs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadata :: Typed.TypedTerm (Util.ModuleNames Syntax.DottedName) -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadata namespaces typeVariables usesAnnotated usesCallable usesCast usesLruCache usesTypeAlias usesDataclass usesDecimal usesEither usesEnum usesFrozenDict usesFrozenList usesFrozenSet usesGeneric usesJust usesLeft usesMaybe usesName usesNode usesNothing usesRight usesTypeVar =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Typed.unTypedTerm namespaces)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Typed.unTypedTerm typeVariables)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Typed.unTypedTerm usesAnnotated)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Typed.unTypedTerm usesCallable)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Typed.unTypedTerm usesCast)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Typed.unTypedTerm usesLruCache)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Typed.unTypedTerm usesTypeAlias)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Typed.unTypedTerm usesDataclass)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Typed.unTypedTerm usesDecimal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Typed.unTypedTerm usesEither)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Typed.unTypedTerm usesEnum)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Typed.unTypedTerm usesFrozenDict)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Typed.unTypedTerm usesFrozenList)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Typed.unTypedTerm usesFrozenSet)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Typed.unTypedTerm usesGeneric)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Typed.unTypedTerm usesJust)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Typed.unTypedTerm usesLeft)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Typed.unTypedTerm usesMaybe)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Typed.unTypedTerm usesName)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Typed.unTypedTerm usesNode)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Typed.unTypedTerm usesNothing)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Typed.unTypedTerm usesRight)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Typed.unTypedTerm usesTypeVar)}]}))
+
+-- | DSL accessor for the namespaces field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataNamespaces :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm (Util.ModuleNames Syntax.DottedName)
+pythonModuleMetadataNamespaces x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "namespaces")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataPythonModuleMetadata :: Typed.TypedName Environment.PythonModuleMetadata
+pythonModuleMetadataPythonModuleMetadata = Typed.TypedName (Model.Name "hydra.python.environment.PythonModuleMetadata")
+
+-- | DSL accessor for the typeVariables field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataTypeVariables :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm (S.Set Model.Name)
+pythonModuleMetadataTypeVariables x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "typeVariables")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesAnnotated field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesAnnotated :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesAnnotated x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesCallable field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesCallable :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesCallable x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesCallable")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesCast field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesCast :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesCast x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesCast")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesDataclass field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesDataclass :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesDataclass x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesDataclass")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesDecimal field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesDecimal :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesDecimal x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesDecimal")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesEither field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesEither :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesEither x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesEither")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesEnum field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesEnum :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesEnum x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesEnum")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesFrozenDict field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesFrozenDict :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesFrozenDict x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesFrozenList field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesFrozenList :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesFrozenList x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesFrozenSet field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesFrozenSet :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesFrozenSet x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesGeneric field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesGeneric :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesGeneric x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesGeneric")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesJust field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesJust :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesJust x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesJust")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesLeft field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesLeft :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesLeft x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesLeft")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesLruCache field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesLruCache :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesLruCache x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesLruCache")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesMaybe field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesMaybe :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesMaybe x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesMaybe")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesName field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesName :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesName")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesNode field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesNode :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesNode x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesNode")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesNothing field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesNothing :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesNothing x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesNothing")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesRight field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesRight :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesRight x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesRight")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesTypeAlias field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesTypeAlias :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesTypeAlias x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the usesTypeVar field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataUsesTypeVar :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool
+pythonModuleMetadataUsesTypeVar x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+        Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the namespaces field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithNamespaces :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm (Util.ModuleNames Syntax.DottedName) -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithNamespaces original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the typeVariables field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithTypeVariables :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithTypeVariables original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesAnnotated field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesAnnotated :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesAnnotated original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesCallable field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesCallable :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesCallable original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesCast field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesCast :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesCast original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesDataclass field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesDataclass :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesDataclass original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesDecimal field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesDecimal :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesDecimal original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesEither field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesEither :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesEither original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesEnum field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesEnum :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesEnum original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesFrozenDict field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesFrozenDict :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesFrozenDict original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesFrozenList field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesFrozenList :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesFrozenList original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesFrozenSet field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesFrozenSet :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesFrozenSet original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesGeneric field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesGeneric :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesGeneric original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesJust field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesJust :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesJust original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesLeft field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesLeft :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesLeft original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesLruCache field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesLruCache :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesLruCache original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesMaybe field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesMaybe :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesMaybe original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesName field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesName :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesNode field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesNode :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesNode original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesNothing field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesNothing :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesNothing original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesRight field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesRight :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesRight original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesTypeAlias field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesTypeAlias :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesTypeAlias original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeVar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the usesTypeVar field of hydra.python.environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesTypeVar :: Typed.TypedTerm Environment.PythonModuleMetadata -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonModuleMetadata
+pythonModuleMetadataWithUsesTypeVar original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "namespaces"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "namespaces")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeVariables"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "typeVariables")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesAnnotated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesAnnotated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCallable"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCallable")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesCast"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesCast")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLruCache"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLruCache")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeAlias"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesTypeAlias")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDataclass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDataclass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesDecimal"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesDecimal")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEither"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEither")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesEnum"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesEnum")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenDict"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenDict")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenList"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenList")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesFrozenSet"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesFrozenSet")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesGeneric"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesGeneric")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesJust"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesJust")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesLeft"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesLeft")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesMaybe"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesMaybe")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesNothing"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesNothing")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesRight"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.environment.PythonModuleMetadata"),
+              Model.projectionFieldName = (Model.Name "usesRight")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "usesTypeVar"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the python310 variant of hydra.python.environment.PythonVersion
+pythonVersionPython310 :: Typed.TypedTerm Environment.PythonVersion
+pythonVersionPython310 =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.environment.PythonVersion"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "python310"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the python312 variant of hydra.python.environment.PythonVersion
+pythonVersionPython312 :: Typed.TypedTerm Environment.PythonVersion
+pythonVersionPython312 =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.environment.PythonVersion"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "python312"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.python.environment.PythonVersion
+pythonVersionPythonVersion :: Typed.TypedName Environment.PythonVersion
+pythonVersionPythonVersion = Typed.TypedName (Model.Name "hydra.python.environment.PythonVersion")
diff --git a/src/main/haskell/Hydra/Python/Dsl/Names.hs b/src/main/haskell/Hydra/Python/Dsl/Names.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Python/Dsl/Names.hs
@@ -0,0 +1,195 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | DSL functions for hydra.python.names
+
+module Hydra.Python.Dsl.Names where
+
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Classes as Classes
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Errors as Errors
+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.Model as Model
+import qualified Hydra.Core.Names as CoreNames
+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.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+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.Python.Dsl.Environment as DslEnvironment
+import qualified Hydra.Python.Dsl.Syntax as DslSyntax
+import qualified Hydra.Python.Environment as Environment
+import qualified Hydra.Python.Language as Language
+import qualified Hydra.Python.Names as PythonNames
+import qualified Hydra.Python.Serde as Serde
+import qualified Hydra.Python.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.Map as M
+import qualified Data.Set as S
+
+-- | DSL reference to hydra.python.names.encodeConstantForFieldName
+encodeConstantForFieldName :: Typed.TypedTerm t0 -> Typed.TypedTerm t1 -> Typed.TypedTerm Model.Name -> Typed.TypedTerm Syntax.Name
+encodeConstantForFieldName arg0 arg1 arg2 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermApplication (Model.Application {
+          Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.encodeConstantForFieldName")),
+          Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+        Model.applicationArgument = (Typed.unTypedTerm arg1)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg2)}))
+
+-- | DSL reference to hydra.python.names.encodeConstantForTypeName
+encodeConstantForTypeName :: Typed.TypedTerm t0 -> Typed.TypedTerm t1 -> Typed.TypedTerm Syntax.Name
+encodeConstantForTypeName arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.encodeConstantForTypeName")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.names.encodeEnumValue
+encodeEnumValue :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Model.Name -> Typed.TypedTerm Syntax.Name
+encodeEnumValue arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.encodeEnumValue")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.names.encodeFieldName
+encodeFieldName :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Model.Name -> Typed.TypedTerm Syntax.Name
+encodeFieldName arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.encodeFieldName")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.names.encodeName
+encodeName :: Typed.TypedTerm Bool -> Typed.TypedTerm Util.CaseConvention -> Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Model.Name -> Typed.TypedTerm Syntax.Name
+encodeName arg0 arg1 arg2 arg3 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermApplication (Model.Application {
+          Model.applicationFunction = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.encodeName")),
+            Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+          Model.applicationArgument = (Typed.unTypedTerm arg1)})),
+        Model.applicationArgument = (Typed.unTypedTerm arg2)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg3)}))
+
+-- | DSL reference to hydra.python.names.encodeNameQualified
+encodeNameQualified :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Model.Name -> Typed.TypedTerm Syntax.Name
+encodeNameQualified arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.encodeNameQualified")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.names.encodeNamespace
+encodeNamespace :: Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm Syntax.DottedName
+encodeNamespace arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.encodeNamespace")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.names.encodeNamespaceStringWithOverrides
+encodeNamespaceStringWithOverrides :: Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm String
+encodeNamespaceStringWithOverrides arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.encodeNamespaceStringWithOverrides")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.names.encodeNamespaceWithOverrides
+encodeNamespaceWithOverrides :: Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm Syntax.DottedName
+encodeNamespaceWithOverrides arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.encodeNamespaceWithOverrides")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.names.encodeTypeVariable
+encodeTypeVariable :: Typed.TypedTerm Model.Name -> Typed.TypedTerm Syntax.Name
+encodeTypeVariable arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.encodeTypeVariable")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.names.overlayPythonModuleAliases
+overlayPythonModuleAliases :: Typed.TypedTerm (M.Map Packaging.ModuleName String)
+overlayPythonModuleAliases =
+    Typed.TypedTerm (Model.TermVariable (Model.Name "hydra.python.names.overlayPythonModuleAliases"))
+
+-- | DSL reference to hydra.python.names.sanitizePythonName
+sanitizePythonName :: Typed.TypedTerm String -> Typed.TypedTerm String
+sanitizePythonName arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.sanitizePythonName")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.names.termVariableReference
+termVariableReference :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Model.Name -> Typed.TypedTerm Syntax.Expression
+termVariableReference arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.termVariableReference")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.names.typeVariableReference
+typeVariableReference :: Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Model.Name -> Typed.TypedTerm Syntax.Expression
+typeVariableReference arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.typeVariableReference")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.names.useFutureAnnotations
+useFutureAnnotations :: Typed.TypedTerm Bool
+useFutureAnnotations = Typed.TypedTerm (Model.TermVariable (Model.Name "hydra.python.names.useFutureAnnotations"))
+
+-- | DSL reference to hydra.python.names.variableReference
+variableReference :: Typed.TypedTerm Util.CaseConvention -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Model.Name -> Typed.TypedTerm Syntax.Expression
+variableReference arg0 arg1 arg2 arg3 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermApplication (Model.Application {
+          Model.applicationFunction = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.variableReference")),
+            Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+          Model.applicationArgument = (Typed.unTypedTerm arg1)})),
+        Model.applicationArgument = (Typed.unTypedTerm arg2)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg3)}))
+
+-- | DSL reference to hydra.python.names.variantName
+variantName :: Typed.TypedTerm Bool -> Typed.TypedTerm Environment.PythonEnvironment -> Typed.TypedTerm Model.Name -> Typed.TypedTerm Model.Name -> Typed.TypedTerm Syntax.Name
+variantName arg0 arg1 arg2 arg3 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermApplication (Model.Application {
+          Model.applicationFunction = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.names.variantName")),
+            Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+          Model.applicationArgument = (Typed.unTypedTerm arg1)})),
+        Model.applicationArgument = (Typed.unTypedTerm arg2)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg3)}))
diff --git a/src/main/haskell/Hydra/Python/Dsl/Syntax.hs b/src/main/haskell/Hydra/Python/Dsl/Syntax.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Python/Dsl/Syntax.hs
@@ -0,0 +1,11745 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | DSL functions for hydra.python.syntax
+
+module Hydra.Python.Dsl.Syntax where
+
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Python.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
+
+-- | DSL name token for hydra.python.syntax.AnnotatedRhs
+annotatedRhsAnnotatedRhs :: Typed.TypedName Syntax.AnnotatedRhs
+annotatedRhsAnnotatedRhs = Typed.TypedName (Model.Name "hydra.python.syntax.AnnotatedRhs")
+
+-- | DSL injection for the star variant of hydra.python.syntax.AnnotatedRhs
+annotatedRhsStar :: Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm Syntax.AnnotatedRhs
+annotatedRhsStar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AnnotatedRhs"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "star"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the yield variant of hydra.python.syntax.AnnotatedRhs
+annotatedRhsYield :: Typed.TypedTerm Syntax.YieldExpression -> Typed.TypedTerm Syntax.AnnotatedRhs
+annotatedRhsYield x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AnnotatedRhs"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "yield"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.python.syntax.AnnotatedStatement
+annotatedStatement :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.AnnotatedStatement
+annotatedStatement comment statement =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AnnotatedStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "comment"),
+          Model.fieldTerm = (Typed.unTypedTerm comment)},
+        Model.Field {
+          Model.fieldName = (Model.Name "statement"),
+          Model.fieldTerm = (Typed.unTypedTerm statement)}]}))
+
+-- | DSL name token for hydra.python.syntax.AnnotatedStatement
+annotatedStatementAnnotatedStatement :: Typed.TypedName Syntax.AnnotatedStatement
+annotatedStatementAnnotatedStatement = Typed.TypedName (Model.Name "hydra.python.syntax.AnnotatedStatement")
+
+-- | DSL accessor for the comment field of hydra.python.syntax.AnnotatedStatement
+annotatedStatementComment :: Typed.TypedTerm Syntax.AnnotatedStatement -> Typed.TypedTerm String
+annotatedStatementComment x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AnnotatedStatement"),
+        Model.projectionFieldName = (Model.Name "comment")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the statement field of hydra.python.syntax.AnnotatedStatement
+annotatedStatementStatement :: Typed.TypedTerm Syntax.AnnotatedStatement -> Typed.TypedTerm Syntax.Statement
+annotatedStatementStatement x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AnnotatedStatement"),
+        Model.projectionFieldName = (Model.Name "statement")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the comment field of hydra.python.syntax.AnnotatedStatement
+annotatedStatementWithComment :: Typed.TypedTerm Syntax.AnnotatedStatement -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.AnnotatedStatement
+annotatedStatementWithComment original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AnnotatedStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "comment"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "statement"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.AnnotatedStatement"),
+              Model.projectionFieldName = (Model.Name "statement")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the statement field of hydra.python.syntax.AnnotatedStatement
+annotatedStatementWithStatement :: Typed.TypedTerm Syntax.AnnotatedStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.AnnotatedStatement
+annotatedStatementWithStatement original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AnnotatedStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "comment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.AnnotatedStatement"),
+              Model.projectionFieldName = (Model.Name "comment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "statement"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for the hydra.python.syntax.Annotation wrapper
+annotation :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Annotation
+annotation x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Annotation"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Annotation
+annotationAnnotation :: Typed.TypedName Syntax.Annotation
+annotationAnnotation = Typed.TypedName (Model.Name "hydra.python.syntax.Annotation")
+
+-- | DSL constructor for hydra.python.syntax.Args
+args :: Typed.TypedTerm [Syntax.PosArg] -> Typed.TypedTerm [Syntax.KwargOrStarred] -> Typed.TypedTerm [Syntax.KwargOrDoubleStarred] -> Typed.TypedTerm Syntax.Args
+args positional kwargOrStarred kwargOrDoubleStarred =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Args"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "positional"),
+          Model.fieldTerm = (Typed.unTypedTerm positional)},
+        Model.Field {
+          Model.fieldName = (Model.Name "kwargOrStarred"),
+          Model.fieldTerm = (Typed.unTypedTerm kwargOrStarred)},
+        Model.Field {
+          Model.fieldName = (Model.Name "kwargOrDoubleStarred"),
+          Model.fieldTerm = (Typed.unTypedTerm kwargOrDoubleStarred)}]}))
+
+-- | DSL name token for hydra.python.syntax.Args
+argsArgs :: Typed.TypedName Syntax.Args
+argsArgs = Typed.TypedName (Model.Name "hydra.python.syntax.Args")
+
+-- | DSL accessor for the kwargOrDoubleStarred field of hydra.python.syntax.Args
+argsKwargOrDoubleStarred :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.KwargOrDoubleStarred]
+argsKwargOrDoubleStarred x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Args"),
+        Model.projectionFieldName = (Model.Name "kwargOrDoubleStarred")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the kwargOrStarred field of hydra.python.syntax.Args
+argsKwargOrStarred :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.KwargOrStarred]
+argsKwargOrStarred x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Args"),
+        Model.projectionFieldName = (Model.Name "kwargOrStarred")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the positional field of hydra.python.syntax.Args
+argsPositional :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.PosArg]
+argsPositional x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Args"),
+        Model.projectionFieldName = (Model.Name "positional")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the kwargOrDoubleStarred field of hydra.python.syntax.Args
+argsWithKwargOrDoubleStarred :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.KwargOrDoubleStarred] -> Typed.TypedTerm Syntax.Args
+argsWithKwargOrDoubleStarred original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Args"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "positional"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Args"),
+              Model.projectionFieldName = (Model.Name "positional")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "kwargOrStarred"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Args"),
+              Model.projectionFieldName = (Model.Name "kwargOrStarred")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "kwargOrDoubleStarred"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the kwargOrStarred field of hydra.python.syntax.Args
+argsWithKwargOrStarred :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.KwargOrStarred] -> Typed.TypedTerm Syntax.Args
+argsWithKwargOrStarred original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Args"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "positional"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Args"),
+              Model.projectionFieldName = (Model.Name "positional")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "kwargOrStarred"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "kwargOrDoubleStarred"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Args"),
+              Model.projectionFieldName = (Model.Name "kwargOrDoubleStarred")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the positional field of hydra.python.syntax.Args
+argsWithPositional :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm [Syntax.PosArg] -> Typed.TypedTerm Syntax.Args
+argsWithPositional original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Args"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "positional"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "kwargOrStarred"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Args"),
+              Model.projectionFieldName = (Model.Name "kwargOrStarred")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "kwargOrDoubleStarred"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Args"),
+              Model.projectionFieldName = (Model.Name "kwargOrDoubleStarred")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.AsPattern
+asPattern :: Typed.TypedTerm Syntax.OrPattern -> Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.AsPattern
+asPattern pattern as =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AsPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pattern"),
+          Model.fieldTerm = (Typed.unTypedTerm pattern)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Typed.unTypedTerm as)}]}))
+
+-- | DSL accessor for the as field of hydra.python.syntax.AsPattern
+asPatternAs :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.PatternCaptureTarget
+asPatternAs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AsPattern"),
+        Model.projectionFieldName = (Model.Name "as")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.AsPattern
+asPatternAsPattern :: Typed.TypedName Syntax.AsPattern
+asPatternAsPattern = Typed.TypedName (Model.Name "hydra.python.syntax.AsPattern")
+
+-- | DSL accessor for the pattern field of hydra.python.syntax.AsPattern
+asPatternPattern :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.OrPattern
+asPatternPattern x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AsPattern"),
+        Model.projectionFieldName = (Model.Name "pattern")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the as field of hydra.python.syntax.AsPattern
+asPatternWithAs :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.AsPattern
+asPatternWithAs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AsPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pattern"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.AsPattern"),
+              Model.projectionFieldName = (Model.Name "pattern")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the pattern field of hydra.python.syntax.AsPattern
+asPatternWithPattern :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.OrPattern -> Typed.TypedTerm Syntax.AsPattern
+asPatternWithPattern original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AsPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "pattern"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.AsPattern"),
+              Model.projectionFieldName = (Model.Name "as")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.AssertStatement
+assertStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.AssertStatement
+assertStatement expression1 expression2 =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AssertStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression1"),
+          Model.fieldTerm = (Typed.unTypedTerm expression1)},
+        Model.Field {
+          Model.fieldName = (Model.Name "expression2"),
+          Model.fieldTerm = (Typed.unTypedTerm expression2)}]}))
+
+-- | DSL name token for hydra.python.syntax.AssertStatement
+assertStatementAssertStatement :: Typed.TypedName Syntax.AssertStatement
+assertStatementAssertStatement = Typed.TypedName (Model.Name "hydra.python.syntax.AssertStatement")
+
+-- | DSL accessor for the expression1 field of hydra.python.syntax.AssertStatement
+assertStatementExpression1 :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm Syntax.Expression
+assertStatementExpression1 x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AssertStatement"),
+        Model.projectionFieldName = (Model.Name "expression1")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the expression2 field of hydra.python.syntax.AssertStatement
+assertStatementExpression2 :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm (Maybe Syntax.Expression)
+assertStatementExpression2 x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AssertStatement"),
+        Model.projectionFieldName = (Model.Name "expression2")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the expression1 field of hydra.python.syntax.AssertStatement
+assertStatementWithExpression1 :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssertStatement
+assertStatementWithExpression1 original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AssertStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression1"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "expression2"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.AssertStatement"),
+              Model.projectionFieldName = (Model.Name "expression2")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the expression2 field of hydra.python.syntax.AssertStatement
+assertStatementWithExpression2 :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.AssertStatement
+assertStatementWithExpression2 original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AssertStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression1"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.AssertStatement"),
+              Model.projectionFieldName = (Model.Name "expression1")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "expression2"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL name token for hydra.python.syntax.Assignment
+assignmentAssignment :: Typed.TypedName Syntax.Assignment
+assignmentAssignment = Typed.TypedName (Model.Name "hydra.python.syntax.Assignment")
+
+-- | DSL injection for the aug variant of hydra.python.syntax.Assignment
+assignmentAug :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.Assignment
+assignmentAug x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Assignment"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "aug"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.python.syntax.AssignmentExpression
+assignmentExpression :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression
+assignmentExpression name expression =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AssignmentExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm expression)}]}))
+
+-- | DSL name token for hydra.python.syntax.AssignmentExpression
+assignmentExpressionAssignmentExpression :: Typed.TypedName Syntax.AssignmentExpression
+assignmentExpressionAssignmentExpression = Typed.TypedName (Model.Name "hydra.python.syntax.AssignmentExpression")
+
+-- | DSL accessor for the expression field of hydra.python.syntax.AssignmentExpression
+assignmentExpressionExpression :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression
+assignmentExpressionExpression x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AssignmentExpression"),
+        Model.projectionFieldName = (Model.Name "expression")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.python.syntax.AssignmentExpression
+assignmentExpressionName :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Name
+assignmentExpressionName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AssignmentExpression"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the expression field of hydra.python.syntax.AssignmentExpression
+assignmentExpressionWithExpression :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression
+assignmentExpressionWithExpression original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AssignmentExpression"),
+      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.python.syntax.AssignmentExpression"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the name field of hydra.python.syntax.AssignmentExpression
+assignmentExpressionWithName :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.AssignmentExpression
+assignmentExpressionWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AssignmentExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.AssignmentExpression"),
+              Model.projectionFieldName = (Model.Name "expression")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the typed variant of hydra.python.syntax.Assignment
+assignmentTyped :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm Syntax.Assignment
+assignmentTyped x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Assignment"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "typed"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the untyped variant of hydra.python.syntax.Assignment
+assignmentUntyped :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm Syntax.Assignment
+assignmentUntyped x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Assignment"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "untyped"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.Atom
+atomAtom :: Typed.TypedName Syntax.Atom
+atomAtom = Typed.TypedName (Model.Name "hydra.python.syntax.Atom")
+
+-- | DSL injection for the dict variant of hydra.python.syntax.Atom
+atomDict :: Typed.TypedTerm Syntax.Dict -> Typed.TypedTerm Syntax.Atom
+atomDict x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "dict"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the dictcomp variant of hydra.python.syntax.Atom
+atomDictcomp :: Typed.TypedTerm Syntax.Dictcomp -> Typed.TypedTerm Syntax.Atom
+atomDictcomp x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "dictcomp"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the ellipsis variant of hydra.python.syntax.Atom
+atomEllipsis :: Typed.TypedTerm Syntax.Atom
+atomEllipsis =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "ellipsis"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the false variant of hydra.python.syntax.Atom
+atomFalse :: Typed.TypedTerm Syntax.Atom
+atomFalse =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "false"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the genexp variant of hydra.python.syntax.Atom
+atomGenexp :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.Atom
+atomGenexp x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "genexp"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the group variant of hydra.python.syntax.Atom
+atomGroup :: Typed.TypedTerm Syntax.Group -> Typed.TypedTerm Syntax.Atom
+atomGroup x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "group"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the list variant of hydra.python.syntax.Atom
+atomList :: Typed.TypedTerm Syntax.List -> Typed.TypedTerm Syntax.Atom
+atomList x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "list"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the listcomp variant of hydra.python.syntax.Atom
+atomListcomp :: Typed.TypedTerm Syntax.Listcomp -> Typed.TypedTerm Syntax.Atom
+atomListcomp x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "listcomp"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the name variant of hydra.python.syntax.Atom
+atomName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Atom
+atomName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "name"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the none variant of hydra.python.syntax.Atom
+atomNone :: Typed.TypedTerm Syntax.Atom
+atomNone =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "none"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the number variant of hydra.python.syntax.Atom
+atomNumber :: Typed.TypedTerm Syntax.Number -> Typed.TypedTerm Syntax.Atom
+atomNumber x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "number"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the set variant of hydra.python.syntax.Atom
+atomSet :: Typed.TypedTerm Syntax.Set -> Typed.TypedTerm Syntax.Atom
+atomSet x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "set"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the setcomp variant of hydra.python.syntax.Atom
+atomSetcomp :: Typed.TypedTerm Syntax.Setcomp -> Typed.TypedTerm Syntax.Atom
+atomSetcomp x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "setcomp"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the string variant of hydra.python.syntax.Atom
+atomString :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm Syntax.Atom
+atomString x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "string"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the true variant of hydra.python.syntax.Atom
+atomTrue :: Typed.TypedTerm Syntax.Atom
+atomTrue =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "true"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the tuple variant of hydra.python.syntax.Atom
+atomTuple :: Typed.TypedTerm Syntax.Tuple -> Typed.TypedTerm Syntax.Atom
+atomTuple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Atom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "tuple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.Attribute wrapper
+attribute :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.Attribute
+attribute x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Attribute"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Attribute
+attributeAttribute :: Typed.TypedName Syntax.Attribute
+attributeAttribute = Typed.TypedName (Model.Name "hydra.python.syntax.Attribute")
+
+-- | DSL injection for the ampersandEqual variant of hydra.python.syntax.AugAssign
+augAssignAmpersandEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignAmpersandEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "ampersandEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the atEqual variant of hydra.python.syntax.AugAssign
+augAssignAtEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignAtEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "atEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.python.syntax.AugAssign
+augAssignAugAssign :: Typed.TypedName Syntax.AugAssign
+augAssignAugAssign = Typed.TypedName (Model.Name "hydra.python.syntax.AugAssign")
+
+-- | DSL injection for the barEqual variant of hydra.python.syntax.AugAssign
+augAssignBarEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignBarEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "barEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the caretEqual variant of hydra.python.syntax.AugAssign
+augAssignCaretEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignCaretEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "caretEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the doubleSlashEqual variant of hydra.python.syntax.AugAssign
+augAssignDoubleSlashEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignDoubleSlashEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "doubleSlashEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the leftShiftEqual variant of hydra.python.syntax.AugAssign
+augAssignLeftShiftEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignLeftShiftEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "leftShiftEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the minusEqual variant of hydra.python.syntax.AugAssign
+augAssignMinusEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignMinusEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "minusEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the percentEqual variant of hydra.python.syntax.AugAssign
+augAssignPercentEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignPercentEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "percentEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the plusEqual variant of hydra.python.syntax.AugAssign
+augAssignPlusEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignPlusEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "plusEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the rightShiftEqual variant of hydra.python.syntax.AugAssign
+augAssignRightShiftEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignRightShiftEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "rightShiftEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the slashEqual variant of hydra.python.syntax.AugAssign
+augAssignSlashEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignSlashEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "slashEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the starStarEqual variant of hydra.python.syntax.AugAssign
+augAssignStarStarEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignStarStarEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starStarEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the timesEqual variant of hydra.python.syntax.AugAssign
+augAssignTimesEqual :: Typed.TypedTerm Syntax.AugAssign
+augAssignTimesEqual =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.AugAssign"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "timesEqual"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL constructor for hydra.python.syntax.AugAssignment
+augAssignment :: Typed.TypedTerm Syntax.SingleTarget -> Typed.TypedTerm Syntax.AugAssign -> Typed.TypedTerm Syntax.AnnotatedRhs -> Typed.TypedTerm Syntax.AugAssignment
+augAssignment lhs augassign rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AugAssignment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "augassign"),
+          Model.fieldTerm = (Typed.unTypedTerm augassign)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL name token for hydra.python.syntax.AugAssignment
+augAssignmentAugAssignment :: Typed.TypedName Syntax.AugAssignment
+augAssignmentAugAssignment = Typed.TypedName (Model.Name "hydra.python.syntax.AugAssignment")
+
+-- | DSL accessor for the augassign field of hydra.python.syntax.AugAssignment
+augAssignmentAugassign :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.AugAssign
+augAssignmentAugassign x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AugAssignment"),
+        Model.projectionFieldName = (Model.Name "augassign")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the lhs field of hydra.python.syntax.AugAssignment
+augAssignmentLhs :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.SingleTarget
+augAssignmentLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AugAssignment"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.AugAssignment
+augAssignmentRhs :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.AnnotatedRhs
+augAssignmentRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AugAssignment"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the augassign field of hydra.python.syntax.AugAssignment
+augAssignmentWithAugassign :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.AugAssign -> Typed.TypedTerm Syntax.AugAssignment
+augAssignmentWithAugassign original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AugAssignment"),
+      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.python.syntax.AugAssignment"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "augassign"),
+          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.python.syntax.AugAssignment"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the lhs field of hydra.python.syntax.AugAssignment
+augAssignmentWithLhs :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.SingleTarget -> Typed.TypedTerm Syntax.AugAssignment
+augAssignmentWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AugAssignment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "augassign"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.AugAssignment"),
+              Model.projectionFieldName = (Model.Name "augassign")})),
+            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.python.syntax.AugAssignment"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.AugAssignment
+augAssignmentWithRhs :: Typed.TypedTerm Syntax.AugAssignment -> Typed.TypedTerm Syntax.AnnotatedRhs -> Typed.TypedTerm Syntax.AugAssignment
+augAssignmentWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AugAssignment"),
+      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.python.syntax.AugAssignment"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "augassign"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.AugAssignment"),
+              Model.projectionFieldName = (Model.Name "augassign")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.AwaitPrimary
+awaitPrimary :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.AwaitPrimary
+awaitPrimary await primary =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AwaitPrimary"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "await"),
+          Model.fieldTerm = (Typed.unTypedTerm await)},
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Typed.unTypedTerm primary)}]}))
+
+-- | DSL accessor for the await field of hydra.python.syntax.AwaitPrimary
+awaitPrimaryAwait :: Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm Bool
+awaitPrimaryAwait x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AwaitPrimary"),
+        Model.projectionFieldName = (Model.Name "await")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.AwaitPrimary
+awaitPrimaryAwaitPrimary :: Typed.TypedName Syntax.AwaitPrimary
+awaitPrimaryAwaitPrimary = Typed.TypedName (Model.Name "hydra.python.syntax.AwaitPrimary")
+
+-- | DSL accessor for the primary field of hydra.python.syntax.AwaitPrimary
+awaitPrimaryPrimary :: Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm Syntax.Primary
+awaitPrimaryPrimary x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.AwaitPrimary"),
+        Model.projectionFieldName = (Model.Name "primary")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the await field of hydra.python.syntax.AwaitPrimary
+awaitPrimaryWithAwait :: Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.AwaitPrimary
+awaitPrimaryWithAwait original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AwaitPrimary"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "await"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.AwaitPrimary"),
+              Model.projectionFieldName = (Model.Name "primary")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the primary field of hydra.python.syntax.AwaitPrimary
+awaitPrimaryWithPrimary :: Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.AwaitPrimary
+awaitPrimaryWithPrimary original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.AwaitPrimary"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "await"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.AwaitPrimary"),
+              Model.projectionFieldName = (Model.Name "await")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.BitwiseAnd
+bitwiseAnd :: Typed.TypedTerm (Maybe Syntax.BitwiseAnd) -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.BitwiseAnd
+bitwiseAnd lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.BitwiseAnd"),
+      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 name token for hydra.python.syntax.BitwiseAnd
+bitwiseAndBitwiseAnd :: Typed.TypedName Syntax.BitwiseAnd
+bitwiseAndBitwiseAnd = Typed.TypedName (Model.Name "hydra.python.syntax.BitwiseAnd")
+
+-- | DSL accessor for the lhs field of hydra.python.syntax.BitwiseAnd
+bitwiseAndLhs :: Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm (Maybe Syntax.BitwiseAnd)
+bitwiseAndLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.BitwiseAnd"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.BitwiseAnd
+bitwiseAndRhs :: Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm Syntax.ShiftExpression
+bitwiseAndRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.BitwiseAnd"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.python.syntax.BitwiseAnd
+bitwiseAndWithLhs :: Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm (Maybe Syntax.BitwiseAnd) -> Typed.TypedTerm Syntax.BitwiseAnd
+bitwiseAndWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.BitwiseAnd"),
+      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.python.syntax.BitwiseAnd"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.BitwiseAnd
+bitwiseAndWithRhs :: Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.BitwiseAnd
+bitwiseAndWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.BitwiseAnd"),
+      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.python.syntax.BitwiseAnd"),
+              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.python.syntax.BitwiseOr
+bitwiseOr :: Typed.TypedTerm (Maybe Syntax.BitwiseOr) -> Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm Syntax.BitwiseOr
+bitwiseOr lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.BitwiseOr"),
+      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 name token for hydra.python.syntax.BitwiseOr
+bitwiseOrBitwiseOr :: Typed.TypedName Syntax.BitwiseOr
+bitwiseOrBitwiseOr = Typed.TypedName (Model.Name "hydra.python.syntax.BitwiseOr")
+
+-- | DSL accessor for the lhs field of hydra.python.syntax.BitwiseOr
+bitwiseOrLhs :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm (Maybe Syntax.BitwiseOr)
+bitwiseOrLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.BitwiseOr"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.BitwiseOr
+bitwiseOrRhs :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.BitwiseXor
+bitwiseOrRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.BitwiseOr"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.python.syntax.BitwiseOr
+bitwiseOrWithLhs :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm (Maybe Syntax.BitwiseOr) -> Typed.TypedTerm Syntax.BitwiseOr
+bitwiseOrWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.BitwiseOr"),
+      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.python.syntax.BitwiseOr"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.BitwiseOr
+bitwiseOrWithRhs :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm Syntax.BitwiseOr
+bitwiseOrWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.BitwiseOr"),
+      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.python.syntax.BitwiseOr"),
+              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.python.syntax.BitwiseXor
+bitwiseXor :: Typed.TypedTerm (Maybe Syntax.BitwiseXor) -> Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm Syntax.BitwiseXor
+bitwiseXor lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.BitwiseXor"),
+      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 name token for hydra.python.syntax.BitwiseXor
+bitwiseXorBitwiseXor :: Typed.TypedName Syntax.BitwiseXor
+bitwiseXorBitwiseXor = Typed.TypedName (Model.Name "hydra.python.syntax.BitwiseXor")
+
+-- | DSL accessor for the lhs field of hydra.python.syntax.BitwiseXor
+bitwiseXorLhs :: Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm (Maybe Syntax.BitwiseXor)
+bitwiseXorLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.BitwiseXor"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.BitwiseXor
+bitwiseXorRhs :: Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm Syntax.BitwiseAnd
+bitwiseXorRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.BitwiseXor"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.python.syntax.BitwiseXor
+bitwiseXorWithLhs :: Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm (Maybe Syntax.BitwiseXor) -> Typed.TypedTerm Syntax.BitwiseXor
+bitwiseXorWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.BitwiseXor"),
+      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.python.syntax.BitwiseXor"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.BitwiseXor
+bitwiseXorWithRhs :: Typed.TypedTerm Syntax.BitwiseXor -> Typed.TypedTerm Syntax.BitwiseAnd -> Typed.TypedTerm Syntax.BitwiseXor
+bitwiseXorWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.BitwiseXor"),
+      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.python.syntax.BitwiseXor"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL name token for hydra.python.syntax.Block
+blockBlock :: Typed.TypedName Syntax.Block
+blockBlock = Typed.TypedName (Model.Name "hydra.python.syntax.Block")
+
+-- | DSL injection for the indented variant of hydra.python.syntax.Block
+blockIndented :: Typed.TypedTerm [[Syntax.Statement]] -> Typed.TypedTerm Syntax.Block
+blockIndented x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Block"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "indented"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the simple variant of hydra.python.syntax.Block
+blockSimple :: Typed.TypedTerm [Syntax.SimpleStatement] -> Typed.TypedTerm Syntax.Block
+blockSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Block"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.CapturePattern wrapper
+capturePattern :: Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.CapturePattern
+capturePattern x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.CapturePattern"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.CapturePattern
+capturePatternCapturePattern :: Typed.TypedName Syntax.CapturePattern
+capturePatternCapturePattern = Typed.TypedName (Model.Name "hydra.python.syntax.CapturePattern")
+
+-- | DSL constructor for hydra.python.syntax.CaseBlock
+caseBlock :: Typed.TypedTerm Syntax.Patterns -> Typed.TypedTerm (Maybe Syntax.Guard) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.CaseBlock
+caseBlock patterns guard body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.CaseBlock"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "patterns"),
+          Model.fieldTerm = (Typed.unTypedTerm patterns)},
+        Model.Field {
+          Model.fieldName = (Model.Name "guard"),
+          Model.fieldTerm = (Typed.unTypedTerm guard)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.CaseBlock
+caseBlockBody :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm Syntax.Block
+caseBlockBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.CaseBlock"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.CaseBlock
+caseBlockCaseBlock :: Typed.TypedName Syntax.CaseBlock
+caseBlockCaseBlock = Typed.TypedName (Model.Name "hydra.python.syntax.CaseBlock")
+
+-- | DSL accessor for the guard field of hydra.python.syntax.CaseBlock
+caseBlockGuard :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm (Maybe Syntax.Guard)
+caseBlockGuard x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.CaseBlock"),
+        Model.projectionFieldName = (Model.Name "guard")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the patterns field of hydra.python.syntax.CaseBlock
+caseBlockPatterns :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm Syntax.Patterns
+caseBlockPatterns x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.CaseBlock"),
+        Model.projectionFieldName = (Model.Name "patterns")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.python.syntax.CaseBlock
+caseBlockWithBody :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.CaseBlock
+caseBlockWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.CaseBlock"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "patterns"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.CaseBlock"),
+              Model.projectionFieldName = (Model.Name "patterns")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "guard"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.CaseBlock"),
+              Model.projectionFieldName = (Model.Name "guard")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the guard field of hydra.python.syntax.CaseBlock
+caseBlockWithGuard :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm (Maybe Syntax.Guard) -> Typed.TypedTerm Syntax.CaseBlock
+caseBlockWithGuard original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.CaseBlock"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "patterns"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.CaseBlock"),
+              Model.projectionFieldName = (Model.Name "patterns")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "guard"),
+          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.python.syntax.CaseBlock"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the patterns field of hydra.python.syntax.CaseBlock
+caseBlockWithPatterns :: Typed.TypedTerm Syntax.CaseBlock -> Typed.TypedTerm Syntax.Patterns -> Typed.TypedTerm Syntax.CaseBlock
+caseBlockWithPatterns original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.CaseBlock"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "patterns"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "guard"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.CaseBlock"),
+              Model.projectionFieldName = (Model.Name "guard")})),
+            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.python.syntax.CaseBlock"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.ClassDefinition
+classDefinition :: Typed.TypedTerm (Maybe Syntax.Decorators) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm (Maybe Syntax.Args) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ClassDefinition
+classDefinition decorators name typeParams arguments body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "decorators"),
+          Model.fieldTerm = (Typed.unTypedTerm decorators)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Typed.unTypedTerm typeParams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "arguments"),
+          Model.fieldTerm = (Typed.unTypedTerm arguments)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the arguments field of hydra.python.syntax.ClassDefinition
+classDefinitionArguments :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm (Maybe Syntax.Args)
+classDefinitionArguments x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+        Model.projectionFieldName = (Model.Name "arguments")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.ClassDefinition
+classDefinitionBody :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.Block
+classDefinitionBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ClassDefinition
+classDefinitionClassDefinition :: Typed.TypedName Syntax.ClassDefinition
+classDefinitionClassDefinition = Typed.TypedName (Model.Name "hydra.python.syntax.ClassDefinition")
+
+-- | DSL accessor for the decorators field of hydra.python.syntax.ClassDefinition
+classDefinitionDecorators :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm (Maybe Syntax.Decorators)
+classDefinitionDecorators x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+        Model.projectionFieldName = (Model.Name "decorators")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.python.syntax.ClassDefinition
+classDefinitionName :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.Name
+classDefinitionName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the typeParams field of hydra.python.syntax.ClassDefinition
+classDefinitionTypeParams :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm [Syntax.TypeParameter]
+classDefinitionTypeParams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+        Model.projectionFieldName = (Model.Name "typeParams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the arguments field of hydra.python.syntax.ClassDefinition
+classDefinitionWithArguments :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm (Maybe Syntax.Args) -> Typed.TypedTerm Syntax.ClassDefinition
+classDefinitionWithArguments original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "decorators"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "decorators")})),
+            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.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "arguments"),
+          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.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the body field of hydra.python.syntax.ClassDefinition
+classDefinitionWithBody :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ClassDefinition
+classDefinitionWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "decorators"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "decorators")})),
+            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.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "arguments"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "arguments")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the decorators field of hydra.python.syntax.ClassDefinition
+classDefinitionWithDecorators :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm (Maybe Syntax.Decorators) -> Typed.TypedTerm Syntax.ClassDefinition
+classDefinitionWithDecorators original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "decorators"),
+          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.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "arguments"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "arguments")})),
+            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.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.python.syntax.ClassDefinition
+classDefinitionWithName :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ClassDefinition
+classDefinitionWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "decorators"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "decorators")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "arguments"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "arguments")})),
+            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.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the typeParams field of hydra.python.syntax.ClassDefinition
+classDefinitionWithTypeParams :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.ClassDefinition
+classDefinitionWithTypeParams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "decorators"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "decorators")})),
+            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.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "arguments"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "arguments")})),
+            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.python.syntax.ClassDefinition"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.ClassPattern
+classPattern :: Typed.TypedTerm Syntax.NameOrAttribute -> Typed.TypedTerm (Maybe Syntax.PositionalPatterns) -> Typed.TypedTerm (Maybe Syntax.KeywordPatterns) -> Typed.TypedTerm Syntax.ClassPattern
+classPattern nameOrAttribute positionalPatterns keywordPatterns =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "nameOrAttribute"),
+          Model.fieldTerm = (Typed.unTypedTerm nameOrAttribute)},
+        Model.Field {
+          Model.fieldName = (Model.Name "positionalPatterns"),
+          Model.fieldTerm = (Typed.unTypedTerm positionalPatterns)},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywordPatterns"),
+          Model.fieldTerm = (Typed.unTypedTerm keywordPatterns)}]}))
+
+-- | DSL name token for hydra.python.syntax.ClassPattern
+classPatternClassPattern :: Typed.TypedName Syntax.ClassPattern
+classPatternClassPattern = Typed.TypedName (Model.Name "hydra.python.syntax.ClassPattern")
+
+-- | DSL accessor for the keywordPatterns field of hydra.python.syntax.ClassPattern
+classPatternKeywordPatterns :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm (Maybe Syntax.KeywordPatterns)
+classPatternKeywordPatterns x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+        Model.projectionFieldName = (Model.Name "keywordPatterns")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the nameOrAttribute field of hydra.python.syntax.ClassPattern
+classPatternNameOrAttribute :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm Syntax.NameOrAttribute
+classPatternNameOrAttribute x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+        Model.projectionFieldName = (Model.Name "nameOrAttribute")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the positionalPatterns field of hydra.python.syntax.ClassPattern
+classPatternPositionalPatterns :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm (Maybe Syntax.PositionalPatterns)
+classPatternPositionalPatterns x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+        Model.projectionFieldName = (Model.Name "positionalPatterns")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the keywordPatterns field of hydra.python.syntax.ClassPattern
+classPatternWithKeywordPatterns :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm (Maybe Syntax.KeywordPatterns) -> Typed.TypedTerm Syntax.ClassPattern
+classPatternWithKeywordPatterns original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "nameOrAttribute"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+              Model.projectionFieldName = (Model.Name "nameOrAttribute")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "positionalPatterns"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+              Model.projectionFieldName = (Model.Name "positionalPatterns")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywordPatterns"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the nameOrAttribute field of hydra.python.syntax.ClassPattern
+classPatternWithNameOrAttribute :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm Syntax.NameOrAttribute -> Typed.TypedTerm Syntax.ClassPattern
+classPatternWithNameOrAttribute original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "nameOrAttribute"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "positionalPatterns"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+              Model.projectionFieldName = (Model.Name "positionalPatterns")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywordPatterns"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+              Model.projectionFieldName = (Model.Name "keywordPatterns")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the positionalPatterns field of hydra.python.syntax.ClassPattern
+classPatternWithPositionalPatterns :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm (Maybe Syntax.PositionalPatterns) -> Typed.TypedTerm Syntax.ClassPattern
+classPatternWithPositionalPatterns original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "nameOrAttribute"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+              Model.projectionFieldName = (Model.Name "nameOrAttribute")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "positionalPatterns"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywordPatterns"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ClassPattern"),
+              Model.projectionFieldName = (Model.Name "keywordPatterns")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the capture variant of hydra.python.syntax.ClosedPattern
+closedPatternCapture :: Typed.TypedTerm Syntax.CapturePattern -> Typed.TypedTerm Syntax.ClosedPattern
+closedPatternCapture x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ClosedPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "capture"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the class variant of hydra.python.syntax.ClosedPattern
+closedPatternClass :: Typed.TypedTerm Syntax.ClassPattern -> Typed.TypedTerm Syntax.ClosedPattern
+closedPatternClass x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ClosedPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "class"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.ClosedPattern
+closedPatternClosedPattern :: Typed.TypedName Syntax.ClosedPattern
+closedPatternClosedPattern = Typed.TypedName (Model.Name "hydra.python.syntax.ClosedPattern")
+
+-- | DSL injection for the group variant of hydra.python.syntax.ClosedPattern
+closedPatternGroup :: Typed.TypedTerm Syntax.GroupPattern -> Typed.TypedTerm Syntax.ClosedPattern
+closedPatternGroup x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ClosedPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "group"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the literal variant of hydra.python.syntax.ClosedPattern
+closedPatternLiteral :: Typed.TypedTerm Syntax.LiteralExpression -> Typed.TypedTerm Syntax.ClosedPattern
+closedPatternLiteral x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ClosedPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "literal"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the mapping variant of hydra.python.syntax.ClosedPattern
+closedPatternMapping :: Typed.TypedTerm Syntax.MappingPattern -> Typed.TypedTerm Syntax.ClosedPattern
+closedPatternMapping x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ClosedPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "mapping"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the sequence variant of hydra.python.syntax.ClosedPattern
+closedPatternSequence :: Typed.TypedTerm Syntax.SequencePattern -> Typed.TypedTerm Syntax.ClosedPattern
+closedPatternSequence x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ClosedPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "sequence"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the value variant of hydra.python.syntax.ClosedPattern
+closedPatternValue :: Typed.TypedTerm Syntax.ValuePattern -> Typed.TypedTerm Syntax.ClosedPattern
+closedPatternValue x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ClosedPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "value"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the wildcard variant of hydra.python.syntax.ClosedPattern
+closedPatternWildcard :: Typed.TypedTerm Syntax.ClosedPattern
+closedPatternWildcard =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ClosedPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "wildcard"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL constructor for hydra.python.syntax.CommaStarEtc
+commaStarEtc :: Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.CommaStarEtc
+commaStarEtc paramMaybeDefault keywords =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.CommaStarEtc"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramMaybeDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramMaybeDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywords"),
+          Model.fieldTerm = (Typed.unTypedTerm keywords)}]}))
+
+-- | DSL name token for hydra.python.syntax.CommaStarEtc
+commaStarEtcCommaStarEtc :: Typed.TypedName Syntax.CommaStarEtc
+commaStarEtcCommaStarEtc = Typed.TypedName (Model.Name "hydra.python.syntax.CommaStarEtc")
+
+-- | DSL accessor for the keywords field of hydra.python.syntax.CommaStarEtc
+commaStarEtcKeywords :: Typed.TypedTerm Syntax.CommaStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords)
+commaStarEtcKeywords x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.CommaStarEtc"),
+        Model.projectionFieldName = (Model.Name "keywords")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramMaybeDefault field of hydra.python.syntax.CommaStarEtc
+commaStarEtcParamMaybeDefault :: Typed.TypedTerm Syntax.CommaStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault]
+commaStarEtcParamMaybeDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.CommaStarEtc"),
+        Model.projectionFieldName = (Model.Name "paramMaybeDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the keywords field of hydra.python.syntax.CommaStarEtc
+commaStarEtcWithKeywords :: Typed.TypedTerm Syntax.CommaStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.CommaStarEtc
+commaStarEtcWithKeywords original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.CommaStarEtc"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramMaybeDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.CommaStarEtc"),
+              Model.projectionFieldName = (Model.Name "paramMaybeDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywords"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the paramMaybeDefault field of hydra.python.syntax.CommaStarEtc
+commaStarEtcWithParamMaybeDefault :: Typed.TypedTerm Syntax.CommaStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm Syntax.CommaStarEtc
+commaStarEtcWithParamMaybeDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.CommaStarEtc"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramMaybeDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywords"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.CommaStarEtc"),
+              Model.projectionFieldName = (Model.Name "keywords")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.CompareOpBitwiseOrPair
+compareOpBitwiseOrPair :: Typed.TypedTerm Syntax.CompareOp -> Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.CompareOpBitwiseOrPair
+compareOpBitwiseOrPair operator rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          Model.fieldTerm = (Typed.unTypedTerm operator)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL name token for hydra.python.syntax.CompareOpBitwiseOrPair
+compareOpBitwiseOrPairCompareOpBitwiseOrPair :: Typed.TypedName Syntax.CompareOpBitwiseOrPair
+compareOpBitwiseOrPairCompareOpBitwiseOrPair = Typed.TypedName (Model.Name "hydra.python.syntax.CompareOpBitwiseOrPair")
+
+-- | DSL accessor for the operator field of hydra.python.syntax.CompareOpBitwiseOrPair
+compareOpBitwiseOrPairOperator :: Typed.TypedTerm Syntax.CompareOpBitwiseOrPair -> Typed.TypedTerm Syntax.CompareOp
+compareOpBitwiseOrPairOperator x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
+        Model.projectionFieldName = (Model.Name "operator")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.CompareOpBitwiseOrPair
+compareOpBitwiseOrPairRhs :: Typed.TypedTerm Syntax.CompareOpBitwiseOrPair -> Typed.TypedTerm Syntax.BitwiseOr
+compareOpBitwiseOrPairRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the operator field of hydra.python.syntax.CompareOpBitwiseOrPair
+compareOpBitwiseOrPairWithOperator :: Typed.TypedTerm Syntax.CompareOpBitwiseOrPair -> Typed.TypedTerm Syntax.CompareOp -> Typed.TypedTerm Syntax.CompareOpBitwiseOrPair
+compareOpBitwiseOrPairWithOperator original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          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.python.syntax.CompareOpBitwiseOrPair"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.CompareOpBitwiseOrPair
+compareOpBitwiseOrPairWithRhs :: Typed.TypedTerm Syntax.CompareOpBitwiseOrPair -> Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.CompareOpBitwiseOrPair
+compareOpBitwiseOrPairWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.CompareOpBitwiseOrPair"),
+              Model.projectionFieldName = (Model.Name "operator")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL name token for hydra.python.syntax.CompareOp
+compareOpCompareOp :: Typed.TypedName Syntax.CompareOp
+compareOpCompareOp = Typed.TypedName (Model.Name "hydra.python.syntax.CompareOp")
+
+-- | DSL injection for the eq variant of hydra.python.syntax.CompareOp
+compareOpEq :: Typed.TypedTerm Syntax.CompareOp
+compareOpEq =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompareOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "eq"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the gt variant of hydra.python.syntax.CompareOp
+compareOpGt :: Typed.TypedTerm Syntax.CompareOp
+compareOpGt =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompareOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "gt"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the gte variant of hydra.python.syntax.CompareOp
+compareOpGte :: Typed.TypedTerm Syntax.CompareOp
+compareOpGte =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompareOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "gte"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the in variant of hydra.python.syntax.CompareOp
+compareOpIn :: Typed.TypedTerm Syntax.CompareOp
+compareOpIn =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompareOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "in"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the is variant of hydra.python.syntax.CompareOp
+compareOpIs :: Typed.TypedTerm Syntax.CompareOp
+compareOpIs =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompareOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "is"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the isnot variant of hydra.python.syntax.CompareOp
+compareOpIsnot :: Typed.TypedTerm Syntax.CompareOp
+compareOpIsnot =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompareOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "isnot"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the lt variant of hydra.python.syntax.CompareOp
+compareOpLt :: Typed.TypedTerm Syntax.CompareOp
+compareOpLt =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompareOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "lt"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the lte variant of hydra.python.syntax.CompareOp
+compareOpLte :: Typed.TypedTerm Syntax.CompareOp
+compareOpLte =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompareOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "lte"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the noteq variant of hydra.python.syntax.CompareOp
+compareOpNoteq :: Typed.TypedTerm Syntax.CompareOp
+compareOpNoteq =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompareOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "noteq"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the notin variant of hydra.python.syntax.CompareOp
+compareOpNotin :: Typed.TypedTerm Syntax.CompareOp
+compareOpNotin =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompareOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "notin"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL constructor for hydra.python.syntax.Comparison
+comparison :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm [Syntax.CompareOpBitwiseOrPair] -> Typed.TypedTerm Syntax.Comparison
+comparison lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Comparison"),
+      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 name token for hydra.python.syntax.Comparison
+comparisonComparison :: Typed.TypedName Syntax.Comparison
+comparisonComparison = Typed.TypedName (Model.Name "hydra.python.syntax.Comparison")
+
+-- | DSL accessor for the lhs field of hydra.python.syntax.Comparison
+comparisonLhs :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm Syntax.BitwiseOr
+comparisonLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Comparison"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.Comparison
+comparisonRhs :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm [Syntax.CompareOpBitwiseOrPair]
+comparisonRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Comparison"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.python.syntax.Comparison
+comparisonWithLhs :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.Comparison
+comparisonWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Comparison"),
+      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.python.syntax.Comparison"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.Comparison
+comparisonWithRhs :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm [Syntax.CompareOpBitwiseOrPair] -> Typed.TypedTerm Syntax.Comparison
+comparisonWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Comparison"),
+      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.python.syntax.Comparison"),
+              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.python.syntax.ComplexNumber
+complexNumber :: Typed.TypedTerm Syntax.SignedRealNumber -> Typed.TypedTerm Syntax.PlusOrMinus -> Typed.TypedTerm Syntax.ImaginaryNumber -> Typed.TypedTerm Syntax.ComplexNumber
+complexNumber real plusOrMinus imaginary =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "real"),
+          Model.fieldTerm = (Typed.unTypedTerm real)},
+        Model.Field {
+          Model.fieldName = (Model.Name "plusOrMinus"),
+          Model.fieldTerm = (Typed.unTypedTerm plusOrMinus)},
+        Model.Field {
+          Model.fieldName = (Model.Name "imaginary"),
+          Model.fieldTerm = (Typed.unTypedTerm imaginary)}]}))
+
+-- | DSL name token for hydra.python.syntax.ComplexNumber
+complexNumberComplexNumber :: Typed.TypedName Syntax.ComplexNumber
+complexNumberComplexNumber = Typed.TypedName (Model.Name "hydra.python.syntax.ComplexNumber")
+
+-- | DSL accessor for the imaginary field of hydra.python.syntax.ComplexNumber
+complexNumberImaginary :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.ImaginaryNumber
+complexNumberImaginary x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+        Model.projectionFieldName = (Model.Name "imaginary")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the plusOrMinus field of hydra.python.syntax.ComplexNumber
+complexNumberPlusOrMinus :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.PlusOrMinus
+complexNumberPlusOrMinus x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+        Model.projectionFieldName = (Model.Name "plusOrMinus")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the real field of hydra.python.syntax.ComplexNumber
+complexNumberReal :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.SignedRealNumber
+complexNumberReal x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+        Model.projectionFieldName = (Model.Name "real")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the imaginary field of hydra.python.syntax.ComplexNumber
+complexNumberWithImaginary :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.ImaginaryNumber -> Typed.TypedTerm Syntax.ComplexNumber
+complexNumberWithImaginary original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "real"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+              Model.projectionFieldName = (Model.Name "real")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "plusOrMinus"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+              Model.projectionFieldName = (Model.Name "plusOrMinus")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "imaginary"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the plusOrMinus field of hydra.python.syntax.ComplexNumber
+complexNumberWithPlusOrMinus :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.PlusOrMinus -> Typed.TypedTerm Syntax.ComplexNumber
+complexNumberWithPlusOrMinus original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "real"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+              Model.projectionFieldName = (Model.Name "real")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "plusOrMinus"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "imaginary"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+              Model.projectionFieldName = (Model.Name "imaginary")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the real field of hydra.python.syntax.ComplexNumber
+complexNumberWithReal :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.SignedRealNumber -> Typed.TypedTerm Syntax.ComplexNumber
+complexNumberWithReal original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "real"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "plusOrMinus"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+              Model.projectionFieldName = (Model.Name "plusOrMinus")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "imaginary"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ComplexNumber"),
+              Model.projectionFieldName = (Model.Name "imaginary")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the classDef variant of hydra.python.syntax.CompoundStatement
+compoundStatementClassDef :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.CompoundStatement
+compoundStatementClassDef x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompoundStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "classDef"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.CompoundStatement
+compoundStatementCompoundStatement :: Typed.TypedName Syntax.CompoundStatement
+compoundStatementCompoundStatement = Typed.TypedName (Model.Name "hydra.python.syntax.CompoundStatement")
+
+-- | DSL injection for the for variant of hydra.python.syntax.CompoundStatement
+compoundStatementFor :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.CompoundStatement
+compoundStatementFor x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompoundStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "for"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the function variant of hydra.python.syntax.CompoundStatement
+compoundStatementFunction :: Typed.TypedTerm Syntax.FunctionDefinition -> Typed.TypedTerm Syntax.CompoundStatement
+compoundStatementFunction x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompoundStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "function"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the if variant of hydra.python.syntax.CompoundStatement
+compoundStatementIf :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.CompoundStatement
+compoundStatementIf x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompoundStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "if"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the match variant of hydra.python.syntax.CompoundStatement
+compoundStatementMatch :: Typed.TypedTerm Syntax.MatchStatement -> Typed.TypedTerm Syntax.CompoundStatement
+compoundStatementMatch x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompoundStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "match"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the try variant of hydra.python.syntax.CompoundStatement
+compoundStatementTry :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.CompoundStatement
+compoundStatementTry x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompoundStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "try"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the while variant of hydra.python.syntax.CompoundStatement
+compoundStatementWhile :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.CompoundStatement
+compoundStatementWhile x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompoundStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "while"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the with variant of hydra.python.syntax.CompoundStatement
+compoundStatementWith :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm Syntax.CompoundStatement
+compoundStatementWith x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.CompoundStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "with"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.python.syntax.Conditional
+conditional :: Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Conditional
+conditional body if_ else_ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Conditional"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)},
+        Model.Field {
+          Model.fieldName = (Model.Name "if"),
+          Model.fieldTerm = (Typed.unTypedTerm if_)},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Typed.unTypedTerm else_)}]}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.Conditional
+conditionalBody :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Disjunction
+conditionalBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Conditional"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Conditional
+conditionalConditional :: Typed.TypedName Syntax.Conditional
+conditionalConditional = Typed.TypedName (Model.Name "hydra.python.syntax.Conditional")
+
+-- | DSL accessor for the else field of hydra.python.syntax.Conditional
+conditionalElse :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Expression
+conditionalElse x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Conditional"),
+        Model.projectionFieldName = (Model.Name "else")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the if field of hydra.python.syntax.Conditional
+conditionalIf :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Disjunction
+conditionalIf x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Conditional"),
+        Model.projectionFieldName = (Model.Name "if")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.python.syntax.Conditional
+conditionalWithBody :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.Conditional
+conditionalWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Conditional"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "if"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Conditional"),
+              Model.projectionFieldName = (Model.Name "if")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Conditional"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the else field of hydra.python.syntax.Conditional
+conditionalWithElse :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Conditional
+conditionalWithElse original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Conditional"),
+      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.python.syntax.Conditional"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "if"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Conditional"),
+              Model.projectionFieldName = (Model.Name "if")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the if field of hydra.python.syntax.Conditional
+conditionalWithIf :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.Conditional
+conditionalWithIf original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Conditional"),
+      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.python.syntax.Conditional"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "if"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Conditional"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.python.syntax.Conjunction wrapper
+conjunction :: Typed.TypedTerm [Syntax.Inversion] -> Typed.TypedTerm Syntax.Conjunction
+conjunction x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Conjunction"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Conjunction
+conjunctionConjunction :: Typed.TypedName Syntax.Conjunction
+conjunctionConjunction = Typed.TypedName (Model.Name "hydra.python.syntax.Conjunction")
+
+-- | DSL constructor for the hydra.python.syntax.Decorators wrapper
+decorators :: Typed.TypedTerm [Syntax.NamedExpression] -> Typed.TypedTerm Syntax.Decorators
+decorators x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Decorators"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Decorators
+decoratorsDecorators :: Typed.TypedName Syntax.Decorators
+decoratorsDecorators = Typed.TypedName (Model.Name "hydra.python.syntax.Decorators")
+
+-- | DSL constructor for the hydra.python.syntax.Default wrapper
+default_ :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Default
+default_ x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Default"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Default
+defaultDefault :: Typed.TypedName Syntax.Default
+defaultDefault = Typed.TypedName (Model.Name "hydra.python.syntax.Default")
+
+-- | DSL constructor for the hydra.python.syntax.DelStatement wrapper
+delStatement :: Typed.TypedTerm Syntax.DelTargets -> Typed.TypedTerm Syntax.DelStatement
+delStatement x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.DelStatement"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.DelStatement
+delStatementDelStatement :: Typed.TypedName Syntax.DelStatement
+delStatementDelStatement = Typed.TypedName (Model.Name "hydra.python.syntax.DelStatement")
+
+-- | DSL name token for hydra.python.syntax.DelTAtom
+delTAtomDelTAtom :: Typed.TypedName Syntax.DelTAtom
+delTAtomDelTAtom = Typed.TypedName (Model.Name "hydra.python.syntax.DelTAtom")
+
+-- | DSL injection for the name variant of hydra.python.syntax.DelTAtom
+delTAtomName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.DelTAtom
+delTAtomName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.DelTAtom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "name"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the target variant of hydra.python.syntax.DelTAtom
+delTAtomTarget :: Typed.TypedTerm Syntax.DelTarget -> Typed.TypedTerm Syntax.DelTAtom
+delTAtomTarget x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.DelTAtom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "target"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the targets variant of hydra.python.syntax.DelTAtom
+delTAtomTargets :: Typed.TypedTerm Syntax.DelTargets -> Typed.TypedTerm Syntax.DelTAtom
+delTAtomTargets x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.DelTAtom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "targets"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the delTAtom variant of hydra.python.syntax.DelTarget
+delTargetDelTAtom :: Typed.TypedTerm Syntax.DelTAtom -> Typed.TypedTerm Syntax.DelTarget
+delTargetDelTAtom x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.DelTarget"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "delTAtom"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.DelTarget
+delTargetDelTarget :: Typed.TypedName Syntax.DelTarget
+delTargetDelTarget = Typed.TypedName (Model.Name "hydra.python.syntax.DelTarget")
+
+-- | DSL injection for the primaryAndName variant of hydra.python.syntax.DelTarget
+delTargetPrimaryAndName :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.DelTarget
+delTargetPrimaryAndName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.DelTarget"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "primaryAndName"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the primaryAndSlices variant of hydra.python.syntax.DelTarget
+delTargetPrimaryAndSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.DelTarget
+delTargetPrimaryAndSlices x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.DelTarget"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "primaryAndSlices"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.DelTargets wrapper
+delTargets :: Typed.TypedTerm [Syntax.DelTarget] -> Typed.TypedTerm Syntax.DelTargets
+delTargets x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.DelTargets"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.DelTargets
+delTargetsDelTargets :: Typed.TypedName Syntax.DelTargets
+delTargetsDelTargets = Typed.TypedName (Model.Name "hydra.python.syntax.DelTargets")
+
+-- | DSL constructor for the hydra.python.syntax.Dict wrapper
+dict :: Typed.TypedTerm [Syntax.DoubleStarredKvpair] -> Typed.TypedTerm Syntax.Dict
+dict x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Dict"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Dict
+dictDict :: Typed.TypedName Syntax.Dict
+dictDict = Typed.TypedName (Model.Name "hydra.python.syntax.Dict")
+
+-- | DSL constructor for hydra.python.syntax.Dictcomp
+dictcomp :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Dictcomp
+dictcomp kvpair forIfClauses =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Dictcomp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "kvpair"),
+          Model.fieldTerm = (Typed.unTypedTerm kvpair)},
+        Model.Field {
+          Model.fieldName = (Model.Name "forIfClauses"),
+          Model.fieldTerm = (Typed.unTypedTerm forIfClauses)}]}))
+
+-- | DSL name token for hydra.python.syntax.Dictcomp
+dictcompDictcomp :: Typed.TypedName Syntax.Dictcomp
+dictcompDictcomp = Typed.TypedName (Model.Name "hydra.python.syntax.Dictcomp")
+
+-- | DSL accessor for the forIfClauses field of hydra.python.syntax.Dictcomp
+dictcompForIfClauses :: Typed.TypedTerm Syntax.Dictcomp -> Typed.TypedTerm Syntax.ForIfClauses
+dictcompForIfClauses x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Dictcomp"),
+        Model.projectionFieldName = (Model.Name "forIfClauses")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the kvpair field of hydra.python.syntax.Dictcomp
+dictcompKvpair :: Typed.TypedTerm Syntax.Dictcomp -> Typed.TypedTerm Syntax.Kvpair
+dictcompKvpair x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Dictcomp"),
+        Model.projectionFieldName = (Model.Name "kvpair")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the forIfClauses field of hydra.python.syntax.Dictcomp
+dictcompWithForIfClauses :: Typed.TypedTerm Syntax.Dictcomp -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Dictcomp
+dictcompWithForIfClauses original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Dictcomp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "kvpair"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Dictcomp"),
+              Model.projectionFieldName = (Model.Name "kvpair")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "forIfClauses"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the kvpair field of hydra.python.syntax.Dictcomp
+dictcompWithKvpair :: Typed.TypedTerm Syntax.Dictcomp -> Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.Dictcomp
+dictcompWithKvpair original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Dictcomp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "kvpair"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "forIfClauses"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Dictcomp"),
+              Model.projectionFieldName = (Model.Name "forIfClauses")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.python.syntax.Disjunction wrapper
+disjunction :: Typed.TypedTerm [Syntax.Conjunction] -> Typed.TypedTerm Syntax.Disjunction
+disjunction x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Disjunction"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Disjunction
+disjunctionDisjunction :: Typed.TypedName Syntax.Disjunction
+disjunctionDisjunction = Typed.TypedName (Model.Name "hydra.python.syntax.Disjunction")
+
+-- | DSL constructor for hydra.python.syntax.DottedAsName
+dottedAsName :: Typed.TypedTerm Syntax.DottedName -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.DottedAsName
+dottedAsName name as =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.DottedAsName"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Typed.unTypedTerm as)}]}))
+
+-- | DSL accessor for the as field of hydra.python.syntax.DottedAsName
+dottedAsNameAs :: Typed.TypedTerm Syntax.DottedAsName -> Typed.TypedTerm (Maybe Syntax.Name)
+dottedAsNameAs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.DottedAsName"),
+        Model.projectionFieldName = (Model.Name "as")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.DottedAsName
+dottedAsNameDottedAsName :: Typed.TypedName Syntax.DottedAsName
+dottedAsNameDottedAsName = Typed.TypedName (Model.Name "hydra.python.syntax.DottedAsName")
+
+-- | DSL accessor for the name field of hydra.python.syntax.DottedAsName
+dottedAsNameName :: Typed.TypedTerm Syntax.DottedAsName -> Typed.TypedTerm Syntax.DottedName
+dottedAsNameName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.DottedAsName"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the as field of hydra.python.syntax.DottedAsName
+dottedAsNameWithAs :: Typed.TypedTerm Syntax.DottedAsName -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.DottedAsName
+dottedAsNameWithAs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.DottedAsName"),
+      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.python.syntax.DottedAsName"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the name field of hydra.python.syntax.DottedAsName
+dottedAsNameWithName :: Typed.TypedTerm Syntax.DottedAsName -> Typed.TypedTerm Syntax.DottedName -> Typed.TypedTerm Syntax.DottedAsName
+dottedAsNameWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.DottedAsName"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.DottedAsName"),
+              Model.projectionFieldName = (Model.Name "as")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.python.syntax.DottedName wrapper
+dottedName :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.DottedName
+dottedName x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.DottedName"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.DottedName
+dottedNameDottedName :: Typed.TypedName Syntax.DottedName
+dottedNameDottedName = Typed.TypedName (Model.Name "hydra.python.syntax.DottedName")
+
+-- | DSL constructor for the hydra.python.syntax.DoubleStarPattern wrapper
+doubleStarPattern :: Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.DoubleStarPattern
+doubleStarPattern x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.DoubleStarPattern"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.DoubleStarPattern
+doubleStarPatternDoubleStarPattern :: Typed.TypedName Syntax.DoubleStarPattern
+doubleStarPatternDoubleStarPattern = Typed.TypedName (Model.Name "hydra.python.syntax.DoubleStarPattern")
+
+-- | DSL constructor for hydra.python.syntax.DoubleStarTypeParameter
+doubleStarTypeParameter :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.DoubleStarTypeParameter
+doubleStarTypeParameter name default_ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.DoubleStarTypeParameter"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm default_)}]}))
+
+-- | DSL accessor for the default field of hydra.python.syntax.DoubleStarTypeParameter
+doubleStarTypeParameterDefault :: Typed.TypedTerm Syntax.DoubleStarTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression)
+doubleStarTypeParameterDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.DoubleStarTypeParameter"),
+        Model.projectionFieldName = (Model.Name "default")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.DoubleStarTypeParameter
+doubleStarTypeParameterDoubleStarTypeParameter :: Typed.TypedName Syntax.DoubleStarTypeParameter
+doubleStarTypeParameterDoubleStarTypeParameter =
+    Typed.TypedName (Model.Name "hydra.python.syntax.DoubleStarTypeParameter")
+
+-- | DSL accessor for the name field of hydra.python.syntax.DoubleStarTypeParameter
+doubleStarTypeParameterName :: Typed.TypedTerm Syntax.DoubleStarTypeParameter -> Typed.TypedTerm Syntax.Name
+doubleStarTypeParameterName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.DoubleStarTypeParameter"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the default field of hydra.python.syntax.DoubleStarTypeParameter
+doubleStarTypeParameterWithDefault :: Typed.TypedTerm Syntax.DoubleStarTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.DoubleStarTypeParameter
+doubleStarTypeParameterWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.DoubleStarTypeParameter"),
+      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.python.syntax.DoubleStarTypeParameter"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the name field of hydra.python.syntax.DoubleStarTypeParameter
+doubleStarTypeParameterWithName :: Typed.TypedTerm Syntax.DoubleStarTypeParameter -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.DoubleStarTypeParameter
+doubleStarTypeParameterWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.DoubleStarTypeParameter"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          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.python.syntax.DoubleStarTypeParameter"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL name token for hydra.python.syntax.DoubleStarredKvpair
+doubleStarredKvpairDoubleStarredKvpair :: Typed.TypedName Syntax.DoubleStarredKvpair
+doubleStarredKvpairDoubleStarredKvpair = Typed.TypedName (Model.Name "hydra.python.syntax.DoubleStarredKvpair")
+
+-- | DSL injection for the pair variant of hydra.python.syntax.DoubleStarredKvpair
+doubleStarredKvpairPair :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.DoubleStarredKvpair
+doubleStarredKvpairPair x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.DoubleStarredKvpair"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "pair"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the starred variant of hydra.python.syntax.DoubleStarredKvpair
+doubleStarredKvpairStarred :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.DoubleStarredKvpair
+doubleStarredKvpairStarred x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.DoubleStarredKvpair"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starred"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.Eval wrapper
+eval :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Eval
+eval x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Eval"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Eval
+evalEval :: Typed.TypedName Syntax.Eval
+evalEval = Typed.TypedName (Model.Name "hydra.python.syntax.Eval")
+
+-- | DSL constructor for hydra.python.syntax.ExceptBlock
+exceptBlock :: Typed.TypedTerm (Maybe Syntax.ExceptExpression) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ExceptBlock
+exceptBlock expression body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ExceptBlock"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm expression)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.ExceptBlock
+exceptBlockBody :: Typed.TypedTerm Syntax.ExceptBlock -> Typed.TypedTerm Syntax.Block
+exceptBlockBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptBlock"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ExceptBlock
+exceptBlockExceptBlock :: Typed.TypedName Syntax.ExceptBlock
+exceptBlockExceptBlock = Typed.TypedName (Model.Name "hydra.python.syntax.ExceptBlock")
+
+-- | DSL accessor for the expression field of hydra.python.syntax.ExceptBlock
+exceptBlockExpression :: Typed.TypedTerm Syntax.ExceptBlock -> Typed.TypedTerm (Maybe Syntax.ExceptExpression)
+exceptBlockExpression x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptBlock"),
+        Model.projectionFieldName = (Model.Name "expression")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the body field of hydra.python.syntax.ExceptBlock
+exceptBlockWithBody :: Typed.TypedTerm Syntax.ExceptBlock -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ExceptBlock
+exceptBlockWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ExceptBlock"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptBlock"),
+              Model.projectionFieldName = (Model.Name "expression")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the expression field of hydra.python.syntax.ExceptBlock
+exceptBlockWithExpression :: Typed.TypedTerm Syntax.ExceptBlock -> Typed.TypedTerm (Maybe Syntax.ExceptExpression) -> Typed.TypedTerm Syntax.ExceptBlock
+exceptBlockWithExpression original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ExceptBlock"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          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.python.syntax.ExceptBlock"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.ExceptExpression
+exceptExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.ExceptExpression
+exceptExpression expression as =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ExceptExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm expression)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Typed.unTypedTerm as)}]}))
+
+-- | DSL accessor for the as field of hydra.python.syntax.ExceptExpression
+exceptExpressionAs :: Typed.TypedTerm Syntax.ExceptExpression -> Typed.TypedTerm (Maybe Syntax.Name)
+exceptExpressionAs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptExpression"),
+        Model.projectionFieldName = (Model.Name "as")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ExceptExpression
+exceptExpressionExceptExpression :: Typed.TypedName Syntax.ExceptExpression
+exceptExpressionExceptExpression = Typed.TypedName (Model.Name "hydra.python.syntax.ExceptExpression")
+
+-- | DSL accessor for the expression field of hydra.python.syntax.ExceptExpression
+exceptExpressionExpression :: Typed.TypedTerm Syntax.ExceptExpression -> Typed.TypedTerm Syntax.Expression
+exceptExpressionExpression x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptExpression"),
+        Model.projectionFieldName = (Model.Name "expression")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the as field of hydra.python.syntax.ExceptExpression
+exceptExpressionWithAs :: Typed.TypedTerm Syntax.ExceptExpression -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.ExceptExpression
+exceptExpressionWithAs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ExceptExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptExpression"),
+              Model.projectionFieldName = (Model.Name "expression")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the expression field of hydra.python.syntax.ExceptExpression
+exceptExpressionWithExpression :: Typed.TypedTerm Syntax.ExceptExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ExceptExpression
+exceptExpressionWithExpression original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ExceptExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptExpression"),
+              Model.projectionFieldName = (Model.Name "as")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.ExceptStarBlock
+exceptStarBlock :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ExceptStarBlock
+exceptStarBlock expression as body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ExceptStarBlock"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm expression)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Typed.unTypedTerm as)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the as field of hydra.python.syntax.ExceptStarBlock
+exceptStarBlockAs :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm (Maybe Syntax.Name)
+exceptStarBlockAs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptStarBlock"),
+        Model.projectionFieldName = (Model.Name "as")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.ExceptStarBlock
+exceptStarBlockBody :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm Syntax.Block
+exceptStarBlockBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptStarBlock"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ExceptStarBlock
+exceptStarBlockExceptStarBlock :: Typed.TypedName Syntax.ExceptStarBlock
+exceptStarBlockExceptStarBlock = Typed.TypedName (Model.Name "hydra.python.syntax.ExceptStarBlock")
+
+-- | DSL accessor for the expression field of hydra.python.syntax.ExceptStarBlock
+exceptStarBlockExpression :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm Syntax.Expression
+exceptStarBlockExpression x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptStarBlock"),
+        Model.projectionFieldName = (Model.Name "expression")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the as field of hydra.python.syntax.ExceptStarBlock
+exceptStarBlockWithAs :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.ExceptStarBlock
+exceptStarBlockWithAs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ExceptStarBlock"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptStarBlock"),
+              Model.projectionFieldName = (Model.Name "expression")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          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.python.syntax.ExceptStarBlock"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the body field of hydra.python.syntax.ExceptStarBlock
+exceptStarBlockWithBody :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ExceptStarBlock
+exceptStarBlockWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ExceptStarBlock"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptStarBlock"),
+              Model.projectionFieldName = (Model.Name "expression")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptStarBlock"),
+              Model.projectionFieldName = (Model.Name "as")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the expression field of hydra.python.syntax.ExceptStarBlock
+exceptStarBlockWithExpression :: Typed.TypedTerm Syntax.ExceptStarBlock -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ExceptStarBlock
+exceptStarBlockWithExpression original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ExceptStarBlock"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ExceptStarBlock"),
+              Model.projectionFieldName = (Model.Name "as")})),
+            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.python.syntax.ExceptStarBlock"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the conditional variant of hydra.python.syntax.Expression
+expressionConditional :: Typed.TypedTerm Syntax.Conditional -> Typed.TypedTerm Syntax.Expression
+expressionConditional x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Expression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "conditional"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.Expression
+expressionExpression :: Typed.TypedName Syntax.Expression
+expressionExpression = Typed.TypedName (Model.Name "hydra.python.syntax.Expression")
+
+-- | DSL injection for the lambda variant of hydra.python.syntax.Expression
+expressionLambda :: Typed.TypedTerm Syntax.Lambda -> Typed.TypedTerm Syntax.Expression
+expressionLambda x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Expression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "lambda"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the simple variant of hydra.python.syntax.Expression
+expressionSimple :: Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.Expression
+expressionSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Expression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the complement variant of hydra.python.syntax.Factor
+factorComplement :: Typed.TypedTerm Syntax.Factor -> Typed.TypedTerm Syntax.Factor
+factorComplement x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Factor"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "complement"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.Factor
+factorFactor :: Typed.TypedName Syntax.Factor
+factorFactor = Typed.TypedName (Model.Name "hydra.python.syntax.Factor")
+
+-- | DSL injection for the negative variant of hydra.python.syntax.Factor
+factorNegative :: Typed.TypedTerm Syntax.Factor -> Typed.TypedTerm Syntax.Factor
+factorNegative x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Factor"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "negative"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the positive variant of hydra.python.syntax.Factor
+factorPositive :: Typed.TypedTerm Syntax.Factor -> Typed.TypedTerm Syntax.Factor
+factorPositive x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Factor"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "positive"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the simple variant of hydra.python.syntax.Factor
+factorSimple :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm Syntax.Factor
+factorSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Factor"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.File wrapper
+file :: Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.File
+file x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.File"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.File
+fileFile :: Typed.TypedName Syntax.File
+fileFile = Typed.TypedName (Model.Name "hydra.python.syntax.File")
+
+-- | DSL constructor for hydra.python.syntax.ForIfClause
+forIfClause :: Typed.TypedTerm Bool -> Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm [Syntax.Disjunction] -> Typed.TypedTerm Syntax.ForIfClause
+forIfClause async targets in_ ifs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Typed.unTypedTerm async)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Typed.unTypedTerm targets)},
+        Model.Field {
+          Model.fieldName = (Model.Name "in"),
+          Model.fieldTerm = (Typed.unTypedTerm in_)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ifs"),
+          Model.fieldTerm = (Typed.unTypedTerm ifs)}]}))
+
+-- | DSL accessor for the async field of hydra.python.syntax.ForIfClause
+forIfClauseAsync :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm Bool
+forIfClauseAsync x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+        Model.projectionFieldName = (Model.Name "async")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ForIfClause
+forIfClauseForIfClause :: Typed.TypedName Syntax.ForIfClause
+forIfClauseForIfClause = Typed.TypedName (Model.Name "hydra.python.syntax.ForIfClause")
+
+-- | DSL accessor for the ifs field of hydra.python.syntax.ForIfClause
+forIfClauseIfs :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm [Syntax.Disjunction]
+forIfClauseIfs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+        Model.projectionFieldName = (Model.Name "ifs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the in field of hydra.python.syntax.ForIfClause
+forIfClauseIn :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm Syntax.Disjunction
+forIfClauseIn x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+        Model.projectionFieldName = (Model.Name "in")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the targets field of hydra.python.syntax.ForIfClause
+forIfClauseTargets :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm [Syntax.StarTarget]
+forIfClauseTargets x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+        Model.projectionFieldName = (Model.Name "targets")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the async field of hydra.python.syntax.ForIfClause
+forIfClauseWithAsync :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForIfClause
+forIfClauseWithAsync original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "in"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "in")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ifs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "ifs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the ifs field of hydra.python.syntax.ForIfClause
+forIfClauseWithIfs :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm [Syntax.Disjunction] -> Typed.TypedTerm Syntax.ForIfClause
+forIfClauseWithIfs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "in"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "in")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ifs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the in field of hydra.python.syntax.ForIfClause
+forIfClauseWithIn :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm Syntax.ForIfClause
+forIfClauseWithIn original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "in"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ifs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "ifs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the targets field of hydra.python.syntax.ForIfClause
+forIfClauseWithTargets :: Typed.TypedTerm Syntax.ForIfClause -> Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.ForIfClause
+forIfClauseWithTargets original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "in"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "in")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ifs"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForIfClause"),
+              Model.projectionFieldName = (Model.Name "ifs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.python.syntax.ForIfClauses wrapper
+forIfClauses :: Typed.TypedTerm [Syntax.ForIfClause] -> Typed.TypedTerm Syntax.ForIfClauses
+forIfClauses x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.ForIfClauses"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ForIfClauses
+forIfClausesForIfClauses :: Typed.TypedName Syntax.ForIfClauses
+forIfClausesForIfClauses = Typed.TypedName (Model.Name "hydra.python.syntax.ForIfClauses")
+
+-- | DSL constructor for hydra.python.syntax.ForStatement
+forStatement :: Typed.TypedTerm Bool -> Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.ForStatement
+forStatement async targets expressions typeComment body else_ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Typed.unTypedTerm async)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Typed.unTypedTerm targets)},
+        Model.Field {
+          Model.fieldName = (Model.Name "expressions"),
+          Model.fieldTerm = (Typed.unTypedTerm expressions)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm typeComment)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Typed.unTypedTerm else_)}]}))
+
+-- | DSL accessor for the async field of hydra.python.syntax.ForStatement
+forStatementAsync :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Bool
+forStatementAsync x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+        Model.projectionFieldName = (Model.Name "async")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.ForStatement
+forStatementBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Block
+forStatementBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the else field of hydra.python.syntax.ForStatement
+forStatementElse :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Block)
+forStatementElse x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+        Model.projectionFieldName = (Model.Name "else")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the expressions field of hydra.python.syntax.ForStatement
+forStatementExpressions :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm [Syntax.StarExpression]
+forStatementExpressions x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+        Model.projectionFieldName = (Model.Name "expressions")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ForStatement
+forStatementForStatement :: Typed.TypedName Syntax.ForStatement
+forStatementForStatement = Typed.TypedName (Model.Name "hydra.python.syntax.ForStatement")
+
+-- | DSL accessor for the targets field of hydra.python.syntax.ForStatement
+forStatementTargets :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm [Syntax.StarTarget]
+forStatementTargets x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+        Model.projectionFieldName = (Model.Name "targets")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the typeComment field of hydra.python.syntax.ForStatement
+forStatementTypeComment :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.TypeComment)
+forStatementTypeComment x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+        Model.projectionFieldName = (Model.Name "typeComment")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the async field of hydra.python.syntax.ForStatement
+forStatementWithAsync :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForStatement
+forStatementWithAsync original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "expressions"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "expressions")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            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.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the body field of hydra.python.syntax.ForStatement
+forStatementWithBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.ForStatement
+forStatementWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "expressions"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "expressions")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the else field of hydra.python.syntax.ForStatement
+forStatementWithElse :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.ForStatement
+forStatementWithElse original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "expressions"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "expressions")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            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.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the expressions field of hydra.python.syntax.ForStatement
+forStatementWithExpressions :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm Syntax.ForStatement
+forStatementWithExpressions original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "expressions"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            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.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the targets field of hydra.python.syntax.ForStatement
+forStatementWithTargets :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.ForStatement
+forStatementWithTargets original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "expressions"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "expressions")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            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.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the typeComment field of hydra.python.syntax.ForStatement
+forStatementWithTypeComment :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ForStatement
+forStatementWithTypeComment original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "expressions"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "expressions")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          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.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ForStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.python.syntax.FuncTypeComment wrapper
+funcTypeComment :: Typed.TypedTerm Syntax.TypeComment -> Typed.TypedTerm Syntax.FuncTypeComment
+funcTypeComment x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.FuncTypeComment"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.FuncTypeComment
+funcTypeCommentFuncTypeComment :: Typed.TypedName Syntax.FuncTypeComment
+funcTypeCommentFuncTypeComment = Typed.TypedName (Model.Name "hydra.python.syntax.FuncTypeComment")
+
+-- | DSL constructor for hydra.python.syntax.FunctionDefRaw
+functionDefRaw :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm (Maybe Syntax.Parameters) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.FuncTypeComment) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.FunctionDefRaw
+functionDefRaw async name typeParams params returnType funcTypeComment block =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Typed.unTypedTerm async)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Typed.unTypedTerm typeParams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm params)},
+        Model.Field {
+          Model.fieldName = (Model.Name "returnType"),
+          Model.fieldTerm = (Typed.unTypedTerm returnType)},
+        Model.Field {
+          Model.fieldName = (Model.Name "funcTypeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm funcTypeComment)},
+        Model.Field {
+          Model.fieldName = (Model.Name "block"),
+          Model.fieldTerm = (Typed.unTypedTerm block)}]}))
+
+-- | DSL accessor for the async field of hydra.python.syntax.FunctionDefRaw
+functionDefRawAsync :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Bool
+functionDefRawAsync x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+        Model.projectionFieldName = (Model.Name "async")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the block field of hydra.python.syntax.FunctionDefRaw
+functionDefRawBlock :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.Block
+functionDefRawBlock x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+        Model.projectionFieldName = (Model.Name "block")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the funcTypeComment field of hydra.python.syntax.FunctionDefRaw
+functionDefRawFuncTypeComment :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.FuncTypeComment)
+functionDefRawFuncTypeComment x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+        Model.projectionFieldName = (Model.Name "funcTypeComment")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.FunctionDefRaw
+functionDefRawFunctionDefRaw :: Typed.TypedName Syntax.FunctionDefRaw
+functionDefRawFunctionDefRaw = Typed.TypedName (Model.Name "hydra.python.syntax.FunctionDefRaw")
+
+-- | DSL accessor for the name field of hydra.python.syntax.FunctionDefRaw
+functionDefRawName :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.Name
+functionDefRawName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the params field of hydra.python.syntax.FunctionDefRaw
+functionDefRawParams :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.Parameters)
+functionDefRawParams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+        Model.projectionFieldName = (Model.Name "params")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the returnType field of hydra.python.syntax.FunctionDefRaw
+functionDefRawReturnType :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.Expression)
+functionDefRawReturnType x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+        Model.projectionFieldName = (Model.Name "returnType")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the typeParams field of hydra.python.syntax.FunctionDefRaw
+functionDefRawTypeParams :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm [Syntax.TypeParameter]
+functionDefRawTypeParams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+        Model.projectionFieldName = (Model.Name "typeParams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the async field of hydra.python.syntax.FunctionDefRaw
+functionDefRawWithAsync :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDefRaw
+functionDefRawWithAsync original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          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.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "params")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "returnType"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "returnType")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "funcTypeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "funcTypeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "block"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "block")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the block field of hydra.python.syntax.FunctionDefRaw
+functionDefRawWithBlock :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.FunctionDefRaw
+functionDefRawWithBlock original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            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.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "params")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "returnType"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "returnType")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "funcTypeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "funcTypeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "block"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the funcTypeComment field of hydra.python.syntax.FunctionDefRaw
+functionDefRawWithFuncTypeComment :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.FuncTypeComment) -> Typed.TypedTerm Syntax.FunctionDefRaw
+functionDefRawWithFuncTypeComment original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            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.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "params")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "returnType"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "returnType")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "funcTypeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "block"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "block")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.python.syntax.FunctionDefRaw
+functionDefRawWithName :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.FunctionDefRaw
+functionDefRawWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "params")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "returnType"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "returnType")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "funcTypeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "funcTypeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "block"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "block")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the params field of hydra.python.syntax.FunctionDefRaw
+functionDefRawWithParams :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.Parameters) -> Typed.TypedTerm Syntax.FunctionDefRaw
+functionDefRawWithParams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            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.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "returnType"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "returnType")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "funcTypeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "funcTypeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "block"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "block")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the returnType field of hydra.python.syntax.FunctionDefRaw
+functionDefRawWithReturnType :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.FunctionDefRaw
+functionDefRawWithReturnType original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            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.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "params")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "returnType"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "funcTypeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "funcTypeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "block"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "block")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the typeParams field of hydra.python.syntax.FunctionDefRaw
+functionDefRawWithTypeParams :: Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.FunctionDefRaw
+functionDefRawWithTypeParams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            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.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "params"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "params")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "returnType"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "returnType")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "funcTypeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "funcTypeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "block"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefRaw"),
+              Model.projectionFieldName = (Model.Name "block")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.FunctionDefinition
+functionDefinition :: Typed.TypedTerm (Maybe Syntax.Decorators) -> Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.FunctionDefinition
+functionDefinition decorators raw =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.FunctionDefinition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "decorators"),
+          Model.fieldTerm = (Typed.unTypedTerm decorators)},
+        Model.Field {
+          Model.fieldName = (Model.Name "raw"),
+          Model.fieldTerm = (Typed.unTypedTerm raw)}]}))
+
+-- | DSL accessor for the decorators field of hydra.python.syntax.FunctionDefinition
+functionDefinitionDecorators :: Typed.TypedTerm Syntax.FunctionDefinition -> Typed.TypedTerm (Maybe Syntax.Decorators)
+functionDefinitionDecorators x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefinition"),
+        Model.projectionFieldName = (Model.Name "decorators")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.FunctionDefinition
+functionDefinitionFunctionDefinition :: Typed.TypedName Syntax.FunctionDefinition
+functionDefinitionFunctionDefinition = Typed.TypedName (Model.Name "hydra.python.syntax.FunctionDefinition")
+
+-- | DSL accessor for the raw field of hydra.python.syntax.FunctionDefinition
+functionDefinitionRaw :: Typed.TypedTerm Syntax.FunctionDefinition -> Typed.TypedTerm Syntax.FunctionDefRaw
+functionDefinitionRaw x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefinition"),
+        Model.projectionFieldName = (Model.Name "raw")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the decorators field of hydra.python.syntax.FunctionDefinition
+functionDefinitionWithDecorators :: Typed.TypedTerm Syntax.FunctionDefinition -> Typed.TypedTerm (Maybe Syntax.Decorators) -> Typed.TypedTerm Syntax.FunctionDefinition
+functionDefinitionWithDecorators original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.FunctionDefinition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "decorators"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "raw"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefinition"),
+              Model.projectionFieldName = (Model.Name "raw")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the raw field of hydra.python.syntax.FunctionDefinition
+functionDefinitionWithRaw :: Typed.TypedTerm Syntax.FunctionDefinition -> Typed.TypedTerm Syntax.FunctionDefRaw -> Typed.TypedTerm Syntax.FunctionDefinition
+functionDefinitionWithRaw original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.FunctionDefinition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "decorators"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.FunctionDefinition"),
+              Model.projectionFieldName = (Model.Name "decorators")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "raw"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.Genexp
+genexp :: Typed.TypedTerm Syntax.GenexpHead -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Genexp
+genexp head tail =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Genexp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "head"),
+          Model.fieldTerm = (Typed.unTypedTerm head)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tail"),
+          Model.fieldTerm = (Typed.unTypedTerm tail)}]}))
+
+-- | DSL name token for hydra.python.syntax.Genexp
+genexpGenexp :: Typed.TypedName Syntax.Genexp
+genexpGenexp = Typed.TypedName (Model.Name "hydra.python.syntax.Genexp")
+
+-- | DSL accessor for the head field of hydra.python.syntax.Genexp
+genexpHead :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.GenexpHead
+genexpHead x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Genexp"),
+        Model.projectionFieldName = (Model.Name "head")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL injection for the assignment variant of hydra.python.syntax.GenexpHead
+genexpHeadAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.GenexpHead
+genexpHeadAssignment x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.GenexpHead"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "assignment"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the expression variant of hydra.python.syntax.GenexpHead
+genexpHeadExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.GenexpHead
+genexpHeadExpression x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.GenexpHead"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "expression"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.GenexpHead
+genexpHeadGenexpHead :: Typed.TypedName Syntax.GenexpHead
+genexpHeadGenexpHead = Typed.TypedName (Model.Name "hydra.python.syntax.GenexpHead")
+
+-- | DSL accessor for the tail field of hydra.python.syntax.Genexp
+genexpTail :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.ForIfClauses
+genexpTail x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Genexp"),
+        Model.projectionFieldName = (Model.Name "tail")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the head field of hydra.python.syntax.Genexp
+genexpWithHead :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.GenexpHead -> Typed.TypedTerm Syntax.Genexp
+genexpWithHead original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Genexp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "head"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tail"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Genexp"),
+              Model.projectionFieldName = (Model.Name "tail")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tail field of hydra.python.syntax.Genexp
+genexpWithTail :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Genexp
+genexpWithTail original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Genexp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "head"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Genexp"),
+              Model.projectionFieldName = (Model.Name "head")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tail"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the expression variant of hydra.python.syntax.Group
+groupExpression :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Group
+groupExpression x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Group"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "expression"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.Group
+groupGroup :: Typed.TypedName Syntax.Group
+groupGroup = Typed.TypedName (Model.Name "hydra.python.syntax.Group")
+
+-- | DSL constructor for the hydra.python.syntax.GroupPattern wrapper
+groupPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.GroupPattern
+groupPattern x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.GroupPattern"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.GroupPattern
+groupPatternGroupPattern :: Typed.TypedName Syntax.GroupPattern
+groupPatternGroupPattern = Typed.TypedName (Model.Name "hydra.python.syntax.GroupPattern")
+
+-- | DSL injection for the yield variant of hydra.python.syntax.Group
+groupYield :: Typed.TypedTerm Syntax.YieldExpression -> Typed.TypedTerm Syntax.Group
+groupYield x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Group"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "yield"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.Guard wrapper
+guard :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Guard
+guard x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Guard"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Guard
+guardGuard :: Typed.TypedName Syntax.Guard
+guardGuard = Typed.TypedName (Model.Name "hydra.python.syntax.Guard")
+
+-- | DSL constructor for hydra.python.syntax.IfStatement
+ifStatement :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm (Maybe Syntax.IfTail) -> Typed.TypedTerm Syntax.IfStatement
+ifStatement condition body continuation =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.IfStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "condition"),
+          Model.fieldTerm = (Typed.unTypedTerm condition)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)},
+        Model.Field {
+          Model.fieldName = (Model.Name "continuation"),
+          Model.fieldTerm = (Typed.unTypedTerm continuation)}]}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.IfStatement
+ifStatementBody :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Block
+ifStatementBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.IfStatement"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the condition field of hydra.python.syntax.IfStatement
+ifStatementCondition :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.NamedExpression
+ifStatementCondition x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.IfStatement"),
+        Model.projectionFieldName = (Model.Name "condition")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the continuation field of hydra.python.syntax.IfStatement
+ifStatementContinuation :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.IfTail)
+ifStatementContinuation x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.IfStatement"),
+        Model.projectionFieldName = (Model.Name "continuation")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.IfStatement
+ifStatementIfStatement :: Typed.TypedName Syntax.IfStatement
+ifStatementIfStatement = Typed.TypedName (Model.Name "hydra.python.syntax.IfStatement")
+
+-- | DSL updater for the body field of hydra.python.syntax.IfStatement
+ifStatementWithBody :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.IfStatement
+ifStatementWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.IfStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "condition"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.IfStatement"),
+              Model.projectionFieldName = (Model.Name "condition")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "continuation"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.IfStatement"),
+              Model.projectionFieldName = (Model.Name "continuation")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the condition field of hydra.python.syntax.IfStatement
+ifStatementWithCondition :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.IfStatement
+ifStatementWithCondition original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.IfStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "condition"),
+          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.python.syntax.IfStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "continuation"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.IfStatement"),
+              Model.projectionFieldName = (Model.Name "continuation")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the continuation field of hydra.python.syntax.IfStatement
+ifStatementWithContinuation :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.IfTail) -> Typed.TypedTerm Syntax.IfStatement
+ifStatementWithContinuation original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.IfStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "condition"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.IfStatement"),
+              Model.projectionFieldName = (Model.Name "condition")})),
+            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.python.syntax.IfStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "continuation"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the elif variant of hydra.python.syntax.IfTail
+ifTailElif :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.IfTail
+ifTailElif x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.IfTail"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "elif"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the else variant of hydra.python.syntax.IfTail
+ifTailElse :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.IfTail
+ifTailElse x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.IfTail"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "else"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.IfTail
+ifTailIfTail :: Typed.TypedName Syntax.IfTail
+ifTailIfTail = Typed.TypedName (Model.Name "hydra.python.syntax.IfTail")
+
+-- | DSL constructor for the hydra.python.syntax.ImaginaryNumber wrapper
+imaginaryNumber :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.ImaginaryNumber
+imaginaryNumber x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.ImaginaryNumber"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ImaginaryNumber
+imaginaryNumberImaginaryNumber :: Typed.TypedName Syntax.ImaginaryNumber
+imaginaryNumberImaginaryNumber = Typed.TypedName (Model.Name "hydra.python.syntax.ImaginaryNumber")
+
+-- | DSL constructor for hydra.python.syntax.ImportFrom
+importFrom :: Typed.TypedTerm [Syntax.RelativeImportPrefix] -> Typed.TypedTerm (Maybe Syntax.DottedName) -> Typed.TypedTerm Syntax.ImportFromTargets -> Typed.TypedTerm Syntax.ImportFrom
+importFrom prefixes dottedName targets =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "prefixes"),
+          Model.fieldTerm = (Typed.unTypedTerm prefixes)},
+        Model.Field {
+          Model.fieldName = (Model.Name "dottedName"),
+          Model.fieldTerm = (Typed.unTypedTerm dottedName)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Typed.unTypedTerm targets)}]}))
+
+-- | DSL constructor for hydra.python.syntax.ImportFromAsName
+importFromAsName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.ImportFromAsName
+importFromAsName name as =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ImportFromAsName"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Typed.unTypedTerm as)}]}))
+
+-- | DSL accessor for the as field of hydra.python.syntax.ImportFromAsName
+importFromAsNameAs :: Typed.TypedTerm Syntax.ImportFromAsName -> Typed.TypedTerm (Maybe Syntax.Name)
+importFromAsNameAs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFromAsName"),
+        Model.projectionFieldName = (Model.Name "as")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ImportFromAsName
+importFromAsNameImportFromAsName :: Typed.TypedName Syntax.ImportFromAsName
+importFromAsNameImportFromAsName = Typed.TypedName (Model.Name "hydra.python.syntax.ImportFromAsName")
+
+-- | DSL accessor for the name field of hydra.python.syntax.ImportFromAsName
+importFromAsNameName :: Typed.TypedTerm Syntax.ImportFromAsName -> Typed.TypedTerm Syntax.Name
+importFromAsNameName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFromAsName"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the as field of hydra.python.syntax.ImportFromAsName
+importFromAsNameWithAs :: Typed.TypedTerm Syntax.ImportFromAsName -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.ImportFromAsName
+importFromAsNameWithAs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ImportFromAsName"),
+      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.python.syntax.ImportFromAsName"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the name field of hydra.python.syntax.ImportFromAsName
+importFromAsNameWithName :: Typed.TypedTerm Syntax.ImportFromAsName -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ImportFromAsName
+importFromAsNameWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ImportFromAsName"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFromAsName"),
+              Model.projectionFieldName = (Model.Name "as")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL accessor for the dottedName field of hydra.python.syntax.ImportFrom
+importFromDottedName :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm (Maybe Syntax.DottedName)
+importFromDottedName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+        Model.projectionFieldName = (Model.Name "dottedName")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ImportFrom
+importFromImportFrom :: Typed.TypedName Syntax.ImportFrom
+importFromImportFrom = Typed.TypedName (Model.Name "hydra.python.syntax.ImportFrom")
+
+-- | DSL accessor for the prefixes field of hydra.python.syntax.ImportFrom
+importFromPrefixes :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm [Syntax.RelativeImportPrefix]
+importFromPrefixes x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+        Model.projectionFieldName = (Model.Name "prefixes")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the targets field of hydra.python.syntax.ImportFrom
+importFromTargets :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm Syntax.ImportFromTargets
+importFromTargets x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+        Model.projectionFieldName = (Model.Name "targets")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ImportFromTargets
+importFromTargetsImportFromTargets :: Typed.TypedName Syntax.ImportFromTargets
+importFromTargetsImportFromTargets = Typed.TypedName (Model.Name "hydra.python.syntax.ImportFromTargets")
+
+-- | DSL injection for the parens variant of hydra.python.syntax.ImportFromTargets
+importFromTargetsParens :: Typed.TypedTerm [Syntax.ImportFromAsName] -> Typed.TypedTerm Syntax.ImportFromTargets
+importFromTargetsParens x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ImportFromTargets"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "parens"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the simple variant of hydra.python.syntax.ImportFromTargets
+importFromTargetsSimple :: Typed.TypedTerm [Syntax.ImportFromAsName] -> Typed.TypedTerm Syntax.ImportFromTargets
+importFromTargetsSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ImportFromTargets"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the star variant of hydra.python.syntax.ImportFromTargets
+importFromTargetsStar :: Typed.TypedTerm Syntax.ImportFromTargets
+importFromTargetsStar =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ImportFromTargets"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "star"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL updater for the dottedName field of hydra.python.syntax.ImportFrom
+importFromWithDottedName :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm (Maybe Syntax.DottedName) -> Typed.TypedTerm Syntax.ImportFrom
+importFromWithDottedName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "prefixes"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+              Model.projectionFieldName = (Model.Name "prefixes")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "dottedName"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the prefixes field of hydra.python.syntax.ImportFrom
+importFromWithPrefixes :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm [Syntax.RelativeImportPrefix] -> Typed.TypedTerm Syntax.ImportFrom
+importFromWithPrefixes original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "prefixes"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "dottedName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+              Model.projectionFieldName = (Model.Name "dottedName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the targets field of hydra.python.syntax.ImportFrom
+importFromWithTargets :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm Syntax.ImportFromTargets -> Typed.TypedTerm Syntax.ImportFrom
+importFromWithTargets original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "prefixes"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+              Model.projectionFieldName = (Model.Name "prefixes")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "dottedName"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ImportFrom"),
+              Model.projectionFieldName = (Model.Name "dottedName")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for the hydra.python.syntax.ImportName wrapper
+importName :: Typed.TypedTerm [Syntax.DottedAsName] -> Typed.TypedTerm Syntax.ImportName
+importName x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.ImportName"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ImportName
+importNameImportName :: Typed.TypedName Syntax.ImportName
+importNameImportName = Typed.TypedName (Model.Name "hydra.python.syntax.ImportName")
+
+-- | DSL injection for the from variant of hydra.python.syntax.ImportStatement
+importStatementFrom :: Typed.TypedTerm Syntax.ImportFrom -> Typed.TypedTerm Syntax.ImportStatement
+importStatementFrom x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ImportStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "from"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.ImportStatement
+importStatementImportStatement :: Typed.TypedName Syntax.ImportStatement
+importStatementImportStatement = Typed.TypedName (Model.Name "hydra.python.syntax.ImportStatement")
+
+-- | DSL injection for the name variant of hydra.python.syntax.ImportStatement
+importStatementName :: Typed.TypedTerm Syntax.ImportName -> Typed.TypedTerm Syntax.ImportStatement
+importStatementName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ImportStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "name"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.Interactive wrapper
+interactive :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Interactive
+interactive x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Interactive"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Interactive
+interactiveInteractive :: Typed.TypedName Syntax.Interactive
+interactiveInteractive = Typed.TypedName (Model.Name "hydra.python.syntax.Interactive")
+
+-- | DSL name token for hydra.python.syntax.Inversion
+inversionInversion :: Typed.TypedName Syntax.Inversion
+inversionInversion = Typed.TypedName (Model.Name "hydra.python.syntax.Inversion")
+
+-- | DSL injection for the not variant of hydra.python.syntax.Inversion
+inversionNot :: Typed.TypedTerm Syntax.Inversion -> Typed.TypedTerm Syntax.Inversion
+inversionNot x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Inversion"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "not"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the simple variant of hydra.python.syntax.Inversion
+inversionSimple :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm Syntax.Inversion
+inversionSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Inversion"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.ItemsPattern wrapper
+itemsPattern :: Typed.TypedTerm [Syntax.KeyValuePattern] -> Typed.TypedTerm Syntax.ItemsPattern
+itemsPattern x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.ItemsPattern"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ItemsPattern
+itemsPatternItemsPattern :: Typed.TypedName Syntax.ItemsPattern
+itemsPatternItemsPattern = Typed.TypedName (Model.Name "hydra.python.syntax.ItemsPattern")
+
+-- | DSL constructor for hydra.python.syntax.KeyValuePattern
+keyValuePattern :: Typed.TypedTerm Syntax.LiteralExpressionOrAttribute -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.KeyValuePattern
+keyValuePattern key value =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.KeyValuePattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "key"),
+          Model.fieldTerm = (Typed.unTypedTerm key)},
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm value)}]}))
+
+-- | DSL accessor for the key field of hydra.python.syntax.KeyValuePattern
+keyValuePatternKey :: Typed.TypedTerm Syntax.KeyValuePattern -> Typed.TypedTerm Syntax.LiteralExpressionOrAttribute
+keyValuePatternKey x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.KeyValuePattern"),
+        Model.projectionFieldName = (Model.Name "key")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.KeyValuePattern
+keyValuePatternKeyValuePattern :: Typed.TypedName Syntax.KeyValuePattern
+keyValuePatternKeyValuePattern = Typed.TypedName (Model.Name "hydra.python.syntax.KeyValuePattern")
+
+-- | DSL accessor for the value field of hydra.python.syntax.KeyValuePattern
+keyValuePatternValue :: Typed.TypedTerm Syntax.KeyValuePattern -> Typed.TypedTerm Syntax.Pattern
+keyValuePatternValue x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.KeyValuePattern"),
+        Model.projectionFieldName = (Model.Name "value")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the key field of hydra.python.syntax.KeyValuePattern
+keyValuePatternWithKey :: Typed.TypedTerm Syntax.KeyValuePattern -> Typed.TypedTerm Syntax.LiteralExpressionOrAttribute -> Typed.TypedTerm Syntax.KeyValuePattern
+keyValuePatternWithKey original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.KeyValuePattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "key"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.KeyValuePattern"),
+              Model.projectionFieldName = (Model.Name "value")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the value field of hydra.python.syntax.KeyValuePattern
+keyValuePatternWithValue :: Typed.TypedTerm Syntax.KeyValuePattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.KeyValuePattern
+keyValuePatternWithValue original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.KeyValuePattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "key"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.KeyValuePattern"),
+              Model.projectionFieldName = (Model.Name "key")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.KeywordPattern
+keywordPattern :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.KeywordPattern
+keywordPattern name pattern =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.KeywordPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "pattern"),
+          Model.fieldTerm = (Typed.unTypedTerm pattern)}]}))
+
+-- | DSL name token for hydra.python.syntax.KeywordPattern
+keywordPatternKeywordPattern :: Typed.TypedName Syntax.KeywordPattern
+keywordPatternKeywordPattern = Typed.TypedName (Model.Name "hydra.python.syntax.KeywordPattern")
+
+-- | DSL accessor for the name field of hydra.python.syntax.KeywordPattern
+keywordPatternName :: Typed.TypedTerm Syntax.KeywordPattern -> Typed.TypedTerm Syntax.Name
+keywordPatternName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.KeywordPattern"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the pattern field of hydra.python.syntax.KeywordPattern
+keywordPatternPattern :: Typed.TypedTerm Syntax.KeywordPattern -> Typed.TypedTerm Syntax.Pattern
+keywordPatternPattern x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.KeywordPattern"),
+        Model.projectionFieldName = (Model.Name "pattern")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.python.syntax.KeywordPattern
+keywordPatternWithName :: Typed.TypedTerm Syntax.KeywordPattern -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.KeywordPattern
+keywordPatternWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.KeywordPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "pattern"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.KeywordPattern"),
+              Model.projectionFieldName = (Model.Name "pattern")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the pattern field of hydra.python.syntax.KeywordPattern
+keywordPatternWithPattern :: Typed.TypedTerm Syntax.KeywordPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.KeywordPattern
+keywordPatternWithPattern original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.KeywordPattern"),
+      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.python.syntax.KeywordPattern"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "pattern"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for the hydra.python.syntax.KeywordPatterns wrapper
+keywordPatterns :: Typed.TypedTerm [Syntax.KeywordPattern] -> Typed.TypedTerm Syntax.KeywordPatterns
+keywordPatterns x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.KeywordPatterns"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.KeywordPatterns
+keywordPatternsKeywordPatterns :: Typed.TypedName Syntax.KeywordPatterns
+keywordPatternsKeywordPatterns = Typed.TypedName (Model.Name "hydra.python.syntax.KeywordPatterns")
+
+-- | DSL constructor for the hydra.python.syntax.Keywords wrapper
+keywords :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm Syntax.Keywords
+keywords x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Keywords"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Keywords
+keywordsKeywords :: Typed.TypedName Syntax.Keywords
+keywordsKeywords = Typed.TypedName (Model.Name "hydra.python.syntax.Keywords")
+
+-- | DSL constructor for hydra.python.syntax.Kvpair
+kvpair :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Kvpair
+kvpair key value =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Kvpair"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "key"),
+          Model.fieldTerm = (Typed.unTypedTerm key)},
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm value)}]}))
+
+-- | DSL accessor for the key field of hydra.python.syntax.Kvpair
+kvpairKey :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.Expression
+kvpairKey x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Kvpair"),
+        Model.projectionFieldName = (Model.Name "key")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Kvpair
+kvpairKvpair :: Typed.TypedName Syntax.Kvpair
+kvpairKvpair = Typed.TypedName (Model.Name "hydra.python.syntax.Kvpair")
+
+-- | DSL accessor for the value field of hydra.python.syntax.Kvpair
+kvpairValue :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.Expression
+kvpairValue x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Kvpair"),
+        Model.projectionFieldName = (Model.Name "value")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the key field of hydra.python.syntax.Kvpair
+kvpairWithKey :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Kvpair
+kvpairWithKey original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Kvpair"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "key"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Kvpair"),
+              Model.projectionFieldName = (Model.Name "value")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the value field of hydra.python.syntax.Kvpair
+kvpairWithValue :: Typed.TypedTerm Syntax.Kvpair -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Kvpair
+kvpairWithValue original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Kvpair"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "key"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Kvpair"),
+              Model.projectionFieldName = (Model.Name "key")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.Kwarg
+kwarg :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Kwarg
+kwarg name value =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Kwarg"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm value)}]}))
+
+-- | DSL name token for hydra.python.syntax.Kwarg
+kwargKwarg :: Typed.TypedName Syntax.Kwarg
+kwargKwarg = Typed.TypedName (Model.Name "hydra.python.syntax.Kwarg")
+
+-- | DSL accessor for the name field of hydra.python.syntax.Kwarg
+kwargName :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.Name
+kwargName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Kwarg"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL injection for the doubleStarred variant of hydra.python.syntax.KwargOrDoubleStarred
+kwargOrDoubleStarredDoubleStarred :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.KwargOrDoubleStarred
+kwargOrDoubleStarredDoubleStarred x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.KwargOrDoubleStarred"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "doubleStarred"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the kwarg variant of hydra.python.syntax.KwargOrDoubleStarred
+kwargOrDoubleStarredKwarg :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.KwargOrDoubleStarred
+kwargOrDoubleStarredKwarg x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.KwargOrDoubleStarred"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "kwarg"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.KwargOrDoubleStarred
+kwargOrDoubleStarredKwargOrDoubleStarred :: Typed.TypedName Syntax.KwargOrDoubleStarred
+kwargOrDoubleStarredKwargOrDoubleStarred = Typed.TypedName (Model.Name "hydra.python.syntax.KwargOrDoubleStarred")
+
+-- | DSL injection for the kwarg variant of hydra.python.syntax.KwargOrStarred
+kwargOrStarredKwarg :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.KwargOrStarred
+kwargOrStarredKwarg x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.KwargOrStarred"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "kwarg"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.KwargOrStarred
+kwargOrStarredKwargOrStarred :: Typed.TypedName Syntax.KwargOrStarred
+kwargOrStarredKwargOrStarred = Typed.TypedName (Model.Name "hydra.python.syntax.KwargOrStarred")
+
+-- | DSL injection for the starred variant of hydra.python.syntax.KwargOrStarred
+kwargOrStarredStarred :: Typed.TypedTerm Syntax.StarredExpression -> Typed.TypedTerm Syntax.KwargOrStarred
+kwargOrStarredStarred x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.KwargOrStarred"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starred"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL accessor for the value field of hydra.python.syntax.Kwarg
+kwargValue :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.Expression
+kwargValue x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Kwarg"),
+        Model.projectionFieldName = (Model.Name "value")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the name field of hydra.python.syntax.Kwarg
+kwargWithName :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Kwarg
+kwargWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Kwarg"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Kwarg"),
+              Model.projectionFieldName = (Model.Name "value")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the value field of hydra.python.syntax.Kwarg
+kwargWithValue :: Typed.TypedTerm Syntax.Kwarg -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Kwarg
+kwargWithValue original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Kwarg"),
+      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.python.syntax.Kwarg"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.Lambda
+lambda :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Lambda
+lambda params body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Lambda"),
+      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.python.syntax.Lambda
+lambdaBody :: Typed.TypedTerm Syntax.Lambda -> Typed.TypedTerm Syntax.Expression
+lambdaBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Lambda"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for the hydra.python.syntax.LambdaKwds wrapper
+lambdaKwds :: Typed.TypedTerm Syntax.LambdaParamNoDefault -> Typed.TypedTerm Syntax.LambdaKwds
+lambdaKwds x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.LambdaKwds"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.LambdaKwds
+lambdaKwdsLambdaKwds :: Typed.TypedName Syntax.LambdaKwds
+lambdaKwdsLambdaKwds = Typed.TypedName (Model.Name "hydra.python.syntax.LambdaKwds")
+
+-- | DSL name token for hydra.python.syntax.Lambda
+lambdaLambda :: Typed.TypedName Syntax.Lambda
+lambdaLambda = Typed.TypedName (Model.Name "hydra.python.syntax.Lambda")
+
+-- | DSL constructor for hydra.python.syntax.LambdaParamMaybeDefault
+lambdaParamMaybeDefault :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm Syntax.LambdaParamMaybeDefault
+lambdaParamMaybeDefault param default_ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Typed.unTypedTerm param)},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm default_)}]}))
+
+-- | DSL accessor for the default field of hydra.python.syntax.LambdaParamMaybeDefault
+lambdaParamMaybeDefaultDefault :: Typed.TypedTerm Syntax.LambdaParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.Default)
+lambdaParamMaybeDefaultDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
+        Model.projectionFieldName = (Model.Name "default")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.LambdaParamMaybeDefault
+lambdaParamMaybeDefaultLambdaParamMaybeDefault :: Typed.TypedName Syntax.LambdaParamMaybeDefault
+lambdaParamMaybeDefaultLambdaParamMaybeDefault =
+    Typed.TypedName (Model.Name "hydra.python.syntax.LambdaParamMaybeDefault")
+
+-- | DSL accessor for the param field of hydra.python.syntax.LambdaParamMaybeDefault
+lambdaParamMaybeDefaultParam :: Typed.TypedTerm Syntax.LambdaParamMaybeDefault -> Typed.TypedTerm Syntax.Name
+lambdaParamMaybeDefaultParam x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
+        Model.projectionFieldName = (Model.Name "param")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the default field of hydra.python.syntax.LambdaParamMaybeDefault
+lambdaParamMaybeDefaultWithDefault :: Typed.TypedTerm Syntax.LambdaParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm Syntax.LambdaParamMaybeDefault
+lambdaParamMaybeDefaultWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
+              Model.projectionFieldName = (Model.Name "param")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the param field of hydra.python.syntax.LambdaParamMaybeDefault
+lambdaParamMaybeDefaultWithParam :: Typed.TypedTerm Syntax.LambdaParamMaybeDefault -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.LambdaParamMaybeDefault
+lambdaParamMaybeDefaultWithParam original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaParamMaybeDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          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.python.syntax.LambdaParamMaybeDefault"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.python.syntax.LambdaParamNoDefault wrapper
+lambdaParamNoDefault :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.LambdaParamNoDefault
+lambdaParamNoDefault x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.LambdaParamNoDefault"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.LambdaParamNoDefault
+lambdaParamNoDefaultLambdaParamNoDefault :: Typed.TypedName Syntax.LambdaParamNoDefault
+lambdaParamNoDefaultLambdaParamNoDefault = Typed.TypedName (Model.Name "hydra.python.syntax.LambdaParamNoDefault")
+
+-- | DSL constructor for hydra.python.syntax.LambdaParamWithDefault
+lambdaParamWithDefault :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm Syntax.LambdaParamWithDefault
+lambdaParamWithDefault param default_ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaParamWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Typed.unTypedTerm param)},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm default_)}]}))
+
+-- | DSL accessor for the default field of hydra.python.syntax.LambdaParamWithDefault
+lambdaParamWithDefaultDefault :: Typed.TypedTerm Syntax.LambdaParamWithDefault -> Typed.TypedTerm (Maybe Syntax.Default)
+lambdaParamWithDefaultDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParamWithDefault"),
+        Model.projectionFieldName = (Model.Name "default")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.LambdaParamWithDefault
+lambdaParamWithDefaultLambdaParamWithDefault :: Typed.TypedName Syntax.LambdaParamWithDefault
+lambdaParamWithDefaultLambdaParamWithDefault = Typed.TypedName (Model.Name "hydra.python.syntax.LambdaParamWithDefault")
+
+-- | DSL accessor for the param field of hydra.python.syntax.LambdaParamWithDefault
+lambdaParamWithDefaultParam :: Typed.TypedTerm Syntax.LambdaParamWithDefault -> Typed.TypedTerm Syntax.Name
+lambdaParamWithDefaultParam x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParamWithDefault"),
+        Model.projectionFieldName = (Model.Name "param")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the default field of hydra.python.syntax.LambdaParamWithDefault
+lambdaParamWithDefaultWithDefault :: Typed.TypedTerm Syntax.LambdaParamWithDefault -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm Syntax.LambdaParamWithDefault
+lambdaParamWithDefaultWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaParamWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParamWithDefault"),
+              Model.projectionFieldName = (Model.Name "param")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the param field of hydra.python.syntax.LambdaParamWithDefault
+lambdaParamWithDefaultWithParam :: Typed.TypedTerm Syntax.LambdaParamWithDefault -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.LambdaParamWithDefault
+lambdaParamWithDefaultWithParam original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaParamWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          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.python.syntax.LambdaParamWithDefault"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.LambdaParameters
+lambdaParameters :: Typed.TypedTerm (Maybe Syntax.LambdaSlashNoDefault) -> Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm [Syntax.LambdaParamWithDefault] -> Typed.TypedTerm (Maybe Syntax.LambdaStarEtc) -> Typed.TypedTerm Syntax.LambdaParameters
+lambdaParameters slashNoDefault paramNoDefault paramWithDefault starEtc =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "slashNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm slashNoDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramWithDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Typed.unTypedTerm starEtc)}]}))
+
+-- | DSL name token for hydra.python.syntax.LambdaParameters
+lambdaParametersLambdaParameters :: Typed.TypedName Syntax.LambdaParameters
+lambdaParametersLambdaParameters = Typed.TypedName (Model.Name "hydra.python.syntax.LambdaParameters")
+
+-- | DSL accessor for the paramNoDefault field of hydra.python.syntax.LambdaParameters
+lambdaParametersParamNoDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm [Syntax.LambdaParamNoDefault]
+lambdaParametersParamNoDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+        Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramWithDefault field of hydra.python.syntax.LambdaParameters
+lambdaParametersParamWithDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm [Syntax.LambdaParamWithDefault]
+lambdaParametersParamWithDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+        Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the slashNoDefault field of hydra.python.syntax.LambdaParameters
+lambdaParametersSlashNoDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm (Maybe Syntax.LambdaSlashNoDefault)
+lambdaParametersSlashNoDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+        Model.projectionFieldName = (Model.Name "slashNoDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the starEtc field of hydra.python.syntax.LambdaParameters
+lambdaParametersStarEtc :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm (Maybe Syntax.LambdaStarEtc)
+lambdaParametersStarEtc x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+        Model.projectionFieldName = (Model.Name "starEtc")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the paramNoDefault field of hydra.python.syntax.LambdaParameters
+lambdaParametersWithParamNoDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm Syntax.LambdaParameters
+lambdaParametersWithParamNoDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "slashNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "slashNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "starEtc")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramWithDefault field of hydra.python.syntax.LambdaParameters
+lambdaParametersWithParamWithDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm [Syntax.LambdaParamWithDefault] -> Typed.TypedTerm Syntax.LambdaParameters
+lambdaParametersWithParamWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "slashNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "slashNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "starEtc")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the slashNoDefault field of hydra.python.syntax.LambdaParameters
+lambdaParametersWithSlashNoDefault :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm (Maybe Syntax.LambdaSlashNoDefault) -> Typed.TypedTerm Syntax.LambdaParameters
+lambdaParametersWithSlashNoDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "slashNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "starEtc")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the starEtc field of hydra.python.syntax.LambdaParameters
+lambdaParametersWithStarEtc :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm (Maybe Syntax.LambdaStarEtc) -> Typed.TypedTerm Syntax.LambdaParameters
+lambdaParametersWithStarEtc original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "slashNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "slashNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaParameters"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL accessor for the params field of hydra.python.syntax.Lambda
+lambdaParams :: Typed.TypedTerm Syntax.Lambda -> Typed.TypedTerm Syntax.LambdaParameters
+lambdaParams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Lambda"),
+        Model.projectionFieldName = (Model.Name "params")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.python.syntax.LambdaSlashNoDefault
+lambdaSlashNoDefault :: Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm Syntax.LambdaSlashNoDefault
+lambdaSlashNoDefault parameters =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaSlashNoDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "parameters"),
+          Model.fieldTerm = (Typed.unTypedTerm parameters)}]}))
+
+-- | DSL name token for hydra.python.syntax.LambdaSlashNoDefault
+lambdaSlashNoDefaultLambdaSlashNoDefault :: Typed.TypedName Syntax.LambdaSlashNoDefault
+lambdaSlashNoDefaultLambdaSlashNoDefault = Typed.TypedName (Model.Name "hydra.python.syntax.LambdaSlashNoDefault")
+
+-- | DSL accessor for the parameters field of hydra.python.syntax.LambdaSlashNoDefault
+lambdaSlashNoDefaultParameters :: Typed.TypedTerm Syntax.LambdaSlashNoDefault -> Typed.TypedTerm [Syntax.LambdaParamNoDefault]
+lambdaSlashNoDefaultParameters x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaSlashNoDefault"),
+        Model.projectionFieldName = (Model.Name "parameters")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the parameters field of hydra.python.syntax.LambdaSlashNoDefault
+lambdaSlashNoDefaultWithParameters :: Typed.TypedTerm Syntax.LambdaSlashNoDefault -> Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm Syntax.LambdaSlashNoDefault
+lambdaSlashNoDefaultWithParameters original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaSlashNoDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "parameters"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.LambdaSlashWithDefault
+lambdaSlashWithDefault :: Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm [Syntax.LambdaParamWithDefault] -> Typed.TypedTerm Syntax.LambdaSlashWithDefault
+lambdaSlashWithDefault paramNoDefault paramWithDefault =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaSlashWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramWithDefault)}]}))
+
+-- | DSL name token for hydra.python.syntax.LambdaSlashWithDefault
+lambdaSlashWithDefaultLambdaSlashWithDefault :: Typed.TypedName Syntax.LambdaSlashWithDefault
+lambdaSlashWithDefaultLambdaSlashWithDefault = Typed.TypedName (Model.Name "hydra.python.syntax.LambdaSlashWithDefault")
+
+-- | DSL accessor for the paramNoDefault field of hydra.python.syntax.LambdaSlashWithDefault
+lambdaSlashWithDefaultParamNoDefault :: Typed.TypedTerm Syntax.LambdaSlashWithDefault -> Typed.TypedTerm [Syntax.LambdaParamNoDefault]
+lambdaSlashWithDefaultParamNoDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaSlashWithDefault"),
+        Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramWithDefault field of hydra.python.syntax.LambdaSlashWithDefault
+lambdaSlashWithDefaultParamWithDefault :: Typed.TypedTerm Syntax.LambdaSlashWithDefault -> Typed.TypedTerm [Syntax.LambdaParamWithDefault]
+lambdaSlashWithDefaultParamWithDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaSlashWithDefault"),
+        Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the paramNoDefault field of hydra.python.syntax.LambdaSlashWithDefault
+lambdaSlashWithDefaultWithParamNoDefault :: Typed.TypedTerm Syntax.LambdaSlashWithDefault -> Typed.TypedTerm [Syntax.LambdaParamNoDefault] -> Typed.TypedTerm Syntax.LambdaSlashWithDefault
+lambdaSlashWithDefaultWithParamNoDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaSlashWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaSlashWithDefault"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramWithDefault field of hydra.python.syntax.LambdaSlashWithDefault
+lambdaSlashWithDefaultWithParamWithDefault :: Typed.TypedTerm Syntax.LambdaSlashWithDefault -> Typed.TypedTerm [Syntax.LambdaParamWithDefault] -> Typed.TypedTerm Syntax.LambdaSlashWithDefault
+lambdaSlashWithDefaultWithParamWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.LambdaSlashWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.LambdaSlashWithDefault"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the kwds variant of hydra.python.syntax.LambdaStarEtc
+lambdaStarEtcKwds :: Typed.TypedTerm Syntax.LambdaKwds -> Typed.TypedTerm Syntax.LambdaStarEtc
+lambdaStarEtcKwds x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LambdaStarEtc"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "kwds"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.LambdaStarEtc
+lambdaStarEtcLambdaStarEtc :: Typed.TypedName Syntax.LambdaStarEtc
+lambdaStarEtcLambdaStarEtc = Typed.TypedName (Model.Name "hydra.python.syntax.LambdaStarEtc")
+
+-- | DSL injection for the paramMaybeDefault variant of hydra.python.syntax.LambdaStarEtc
+lambdaStarEtcParamMaybeDefault :: Typed.TypedTerm [Syntax.LambdaParamMaybeDefault] -> Typed.TypedTerm Syntax.LambdaStarEtc
+lambdaStarEtcParamMaybeDefault x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LambdaStarEtc"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "paramMaybeDefault"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the paramNoDefault variant of hydra.python.syntax.LambdaStarEtc
+lambdaStarEtcParamNoDefault :: Typed.TypedTerm Syntax.LambdaParamNoDefault -> Typed.TypedTerm Syntax.LambdaStarEtc
+lambdaStarEtcParamNoDefault x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LambdaStarEtc"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "paramNoDefault"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the star variant of hydra.python.syntax.LambdaStarEtc
+lambdaStarEtcStar :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.LambdaStarEtc
+lambdaStarEtcStar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LambdaStarEtc"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "star"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL updater for the body field of hydra.python.syntax.Lambda
+lambdaWithBody :: Typed.TypedTerm Syntax.Lambda -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Lambda
+lambdaWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Lambda"),
+      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.python.syntax.Lambda"),
+              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.python.syntax.Lambda
+lambdaWithParams :: Typed.TypedTerm Syntax.Lambda -> Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm Syntax.Lambda
+lambdaWithParams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Lambda"),
+      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.python.syntax.Lambda"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.python.syntax.List wrapper
+list :: Typed.TypedTerm [Syntax.StarNamedExpression] -> Typed.TypedTerm Syntax.List
+list x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.List"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.List
+listList :: Typed.TypedName Syntax.List
+listList = Typed.TypedName (Model.Name "hydra.python.syntax.List")
+
+-- | DSL constructor for hydra.python.syntax.Listcomp
+listcomp :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Listcomp
+listcomp expression forIfClauses =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Listcomp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm expression)},
+        Model.Field {
+          Model.fieldName = (Model.Name "forIfClauses"),
+          Model.fieldTerm = (Typed.unTypedTerm forIfClauses)}]}))
+
+-- | DSL accessor for the expression field of hydra.python.syntax.Listcomp
+listcompExpression :: Typed.TypedTerm Syntax.Listcomp -> Typed.TypedTerm Syntax.NamedExpression
+listcompExpression x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Listcomp"),
+        Model.projectionFieldName = (Model.Name "expression")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the forIfClauses field of hydra.python.syntax.Listcomp
+listcompForIfClauses :: Typed.TypedTerm Syntax.Listcomp -> Typed.TypedTerm Syntax.ForIfClauses
+listcompForIfClauses x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Listcomp"),
+        Model.projectionFieldName = (Model.Name "forIfClauses")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Listcomp
+listcompListcomp :: Typed.TypedName Syntax.Listcomp
+listcompListcomp = Typed.TypedName (Model.Name "hydra.python.syntax.Listcomp")
+
+-- | DSL updater for the expression field of hydra.python.syntax.Listcomp
+listcompWithExpression :: Typed.TypedTerm Syntax.Listcomp -> Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Listcomp
+listcompWithExpression original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Listcomp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "forIfClauses"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Listcomp"),
+              Model.projectionFieldName = (Model.Name "forIfClauses")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the forIfClauses field of hydra.python.syntax.Listcomp
+listcompWithForIfClauses :: Typed.TypedTerm Syntax.Listcomp -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Listcomp
+listcompWithForIfClauses original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Listcomp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Listcomp"),
+              Model.projectionFieldName = (Model.Name "expression")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "forIfClauses"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the complex variant of hydra.python.syntax.LiteralExpression
+literalExpressionComplex :: Typed.TypedTerm Syntax.ComplexNumber -> Typed.TypedTerm Syntax.LiteralExpression
+literalExpressionComplex x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LiteralExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "complex"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the false variant of hydra.python.syntax.LiteralExpression
+literalExpressionFalse :: Typed.TypedTerm Syntax.LiteralExpression
+literalExpressionFalse =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LiteralExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "false"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.python.syntax.LiteralExpression
+literalExpressionLiteralExpression :: Typed.TypedName Syntax.LiteralExpression
+literalExpressionLiteralExpression = Typed.TypedName (Model.Name "hydra.python.syntax.LiteralExpression")
+
+-- | DSL injection for the none variant of hydra.python.syntax.LiteralExpression
+literalExpressionNone :: Typed.TypedTerm Syntax.LiteralExpression
+literalExpressionNone =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LiteralExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "none"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the number variant of hydra.python.syntax.LiteralExpression
+literalExpressionNumber :: Typed.TypedTerm Syntax.SignedNumber -> Typed.TypedTerm Syntax.LiteralExpression
+literalExpressionNumber x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LiteralExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "number"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the attribute variant of hydra.python.syntax.LiteralExpressionOrAttribute
+literalExpressionOrAttributeAttribute :: Typed.TypedTerm Syntax.Attribute -> Typed.TypedTerm Syntax.LiteralExpressionOrAttribute
+literalExpressionOrAttributeAttribute x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LiteralExpressionOrAttribute"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "attribute"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the literal variant of hydra.python.syntax.LiteralExpressionOrAttribute
+literalExpressionOrAttributeLiteral :: Typed.TypedTerm Syntax.LiteralExpression -> Typed.TypedTerm Syntax.LiteralExpressionOrAttribute
+literalExpressionOrAttributeLiteral x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LiteralExpressionOrAttribute"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "literal"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.LiteralExpressionOrAttribute
+literalExpressionOrAttributeLiteralExpressionOrAttribute :: Typed.TypedName Syntax.LiteralExpressionOrAttribute
+literalExpressionOrAttributeLiteralExpressionOrAttribute =
+    Typed.TypedName (Model.Name "hydra.python.syntax.LiteralExpressionOrAttribute")
+
+-- | DSL injection for the string variant of hydra.python.syntax.LiteralExpression
+literalExpressionString :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm Syntax.LiteralExpression
+literalExpressionString x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LiteralExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "string"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the true variant of hydra.python.syntax.LiteralExpression
+literalExpressionTrue :: Typed.TypedTerm Syntax.LiteralExpression
+literalExpressionTrue =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.LiteralExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "true"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL constructor for hydra.python.syntax.MappingPattern
+mappingPattern :: Typed.TypedTerm (Maybe Syntax.ItemsPattern) -> Typed.TypedTerm (Maybe Syntax.DoubleStarPattern) -> Typed.TypedTerm Syntax.MappingPattern
+mappingPattern items doubleStar =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.MappingPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "items"),
+          Model.fieldTerm = (Typed.unTypedTerm items)},
+        Model.Field {
+          Model.fieldName = (Model.Name "doubleStar"),
+          Model.fieldTerm = (Typed.unTypedTerm doubleStar)}]}))
+
+-- | DSL accessor for the doubleStar field of hydra.python.syntax.MappingPattern
+mappingPatternDoubleStar :: Typed.TypedTerm Syntax.MappingPattern -> Typed.TypedTerm (Maybe Syntax.DoubleStarPattern)
+mappingPatternDoubleStar x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.MappingPattern"),
+        Model.projectionFieldName = (Model.Name "doubleStar")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the items field of hydra.python.syntax.MappingPattern
+mappingPatternItems :: Typed.TypedTerm Syntax.MappingPattern -> Typed.TypedTerm (Maybe Syntax.ItemsPattern)
+mappingPatternItems x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.MappingPattern"),
+        Model.projectionFieldName = (Model.Name "items")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.MappingPattern
+mappingPatternMappingPattern :: Typed.TypedName Syntax.MappingPattern
+mappingPatternMappingPattern = Typed.TypedName (Model.Name "hydra.python.syntax.MappingPattern")
+
+-- | DSL updater for the doubleStar field of hydra.python.syntax.MappingPattern
+mappingPatternWithDoubleStar :: Typed.TypedTerm Syntax.MappingPattern -> Typed.TypedTerm (Maybe Syntax.DoubleStarPattern) -> Typed.TypedTerm Syntax.MappingPattern
+mappingPatternWithDoubleStar original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.MappingPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "items"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.MappingPattern"),
+              Model.projectionFieldName = (Model.Name "items")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "doubleStar"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the items field of hydra.python.syntax.MappingPattern
+mappingPatternWithItems :: Typed.TypedTerm Syntax.MappingPattern -> Typed.TypedTerm (Maybe Syntax.ItemsPattern) -> Typed.TypedTerm Syntax.MappingPattern
+mappingPatternWithItems original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.MappingPattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "items"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "doubleStar"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.MappingPattern"),
+              Model.projectionFieldName = (Model.Name "doubleStar")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.MatchStatement
+matchStatement :: Typed.TypedTerm Syntax.SubjectExpression -> Typed.TypedTerm [Syntax.CaseBlock] -> Typed.TypedTerm Syntax.MatchStatement
+matchStatement subject cases =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.MatchStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Typed.unTypedTerm subject)},
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Typed.unTypedTerm cases)}]}))
+
+-- | DSL accessor for the cases field of hydra.python.syntax.MatchStatement
+matchStatementCases :: Typed.TypedTerm Syntax.MatchStatement -> Typed.TypedTerm [Syntax.CaseBlock]
+matchStatementCases x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.MatchStatement"),
+        Model.projectionFieldName = (Model.Name "cases")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.MatchStatement
+matchStatementMatchStatement :: Typed.TypedName Syntax.MatchStatement
+matchStatementMatchStatement = Typed.TypedName (Model.Name "hydra.python.syntax.MatchStatement")
+
+-- | DSL accessor for the subject field of hydra.python.syntax.MatchStatement
+matchStatementSubject :: Typed.TypedTerm Syntax.MatchStatement -> Typed.TypedTerm Syntax.SubjectExpression
+matchStatementSubject x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.MatchStatement"),
+        Model.projectionFieldName = (Model.Name "subject")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the cases field of hydra.python.syntax.MatchStatement
+matchStatementWithCases :: Typed.TypedTerm Syntax.MatchStatement -> Typed.TypedTerm [Syntax.CaseBlock] -> Typed.TypedTerm Syntax.MatchStatement
+matchStatementWithCases original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.MatchStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.MatchStatement"),
+              Model.projectionFieldName = (Model.Name "subject")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "cases"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the subject field of hydra.python.syntax.MatchStatement
+matchStatementWithSubject :: Typed.TypedTerm Syntax.MatchStatement -> Typed.TypedTerm Syntax.SubjectExpression -> Typed.TypedTerm Syntax.MatchStatement
+matchStatementWithSubject original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.MatchStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          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.python.syntax.MatchStatement"),
+              Model.projectionFieldName = (Model.Name "cases")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.python.syntax.MaybeSequencePattern wrapper
+maybeSequencePattern :: Typed.TypedTerm [Syntax.MaybeStarPattern] -> Typed.TypedTerm Syntax.MaybeSequencePattern
+maybeSequencePattern x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.MaybeSequencePattern"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.MaybeSequencePattern
+maybeSequencePatternMaybeSequencePattern :: Typed.TypedName Syntax.MaybeSequencePattern
+maybeSequencePatternMaybeSequencePattern = Typed.TypedName (Model.Name "hydra.python.syntax.MaybeSequencePattern")
+
+-- | DSL name token for hydra.python.syntax.MaybeStarPattern
+maybeStarPatternMaybeStarPattern :: Typed.TypedName Syntax.MaybeStarPattern
+maybeStarPatternMaybeStarPattern = Typed.TypedName (Model.Name "hydra.python.syntax.MaybeStarPattern")
+
+-- | DSL injection for the pattern variant of hydra.python.syntax.MaybeStarPattern
+maybeStarPatternPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.MaybeStarPattern
+maybeStarPatternPattern x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.MaybeStarPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "pattern"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the star variant of hydra.python.syntax.MaybeStarPattern
+maybeStarPatternStar :: Typed.TypedTerm Syntax.StarPattern -> Typed.TypedTerm Syntax.MaybeStarPattern
+maybeStarPatternStar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.MaybeStarPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "star"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.Module wrapper
+module_ :: Typed.TypedTerm [[Syntax.Statement]] -> Typed.TypedTerm Syntax.Module
+module_ x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Module"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Module
+moduleModule :: Typed.TypedName Syntax.Module
+moduleModule = Typed.TypedName (Model.Name "hydra.python.syntax.Module")
+
+-- | DSL constructor for the hydra.python.syntax.Name wrapper
+name :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Name
+name x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Name"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Name
+nameName :: Typed.TypedName Syntax.Name
+nameName = Typed.TypedName (Model.Name "hydra.python.syntax.Name")
+
+-- | DSL constructor for the hydra.python.syntax.NameOrAttribute wrapper
+nameOrAttribute :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.NameOrAttribute
+nameOrAttribute x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.NameOrAttribute"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.NameOrAttribute
+nameOrAttributeNameOrAttribute :: Typed.TypedName Syntax.NameOrAttribute
+nameOrAttributeNameOrAttribute = Typed.TypedName (Model.Name "hydra.python.syntax.NameOrAttribute")
+
+-- | DSL injection for the assignment variant of hydra.python.syntax.NamedExpression
+namedExpressionAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.NamedExpression
+namedExpressionAssignment x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.NamedExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "assignment"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.NamedExpression
+namedExpressionNamedExpression :: Typed.TypedName Syntax.NamedExpression
+namedExpressionNamedExpression = Typed.TypedName (Model.Name "hydra.python.syntax.NamedExpression")
+
+-- | DSL injection for the simple variant of hydra.python.syntax.NamedExpression
+namedExpressionSimple :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.NamedExpression
+namedExpressionSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.NamedExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.python.syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtc :: Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtc paramNoDefaultStarAnnotation paramMaybeDefault keywords =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefaultStarAnnotation"),
+          Model.fieldTerm = (Typed.unTypedTerm paramNoDefaultStarAnnotation)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramMaybeDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramMaybeDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywords"),
+          Model.fieldTerm = (Typed.unTypedTerm keywords)}]}))
+
+-- | DSL accessor for the keywords field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtcKeywords :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords)
+noDefaultStarAnnotationStarEtcKeywords x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+        Model.projectionFieldName = (Model.Name "keywords")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtcNoDefaultStarAnnotationStarEtc :: Typed.TypedName Syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtcNoDefaultStarAnnotationStarEtc =
+    Typed.TypedName (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc")
+
+-- | DSL accessor for the paramMaybeDefault field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtcParamMaybeDefault :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault]
+noDefaultStarAnnotationStarEtcParamMaybeDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+        Model.projectionFieldName = (Model.Name "paramMaybeDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramNoDefaultStarAnnotation field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtcParamNoDefaultStarAnnotation :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation
+noDefaultStarAnnotationStarEtcParamNoDefaultStarAnnotation x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+        Model.projectionFieldName = (Model.Name "paramNoDefaultStarAnnotation")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the keywords field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtcWithKeywords :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtcWithKeywords original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefaultStarAnnotation"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+              Model.projectionFieldName = (Model.Name "paramNoDefaultStarAnnotation")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramMaybeDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+              Model.projectionFieldName = (Model.Name "paramMaybeDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywords"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the paramMaybeDefault field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtcWithParamMaybeDefault :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtcWithParamMaybeDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefaultStarAnnotation"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+              Model.projectionFieldName = (Model.Name "paramNoDefaultStarAnnotation")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramMaybeDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywords"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+              Model.projectionFieldName = (Model.Name "keywords")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramNoDefaultStarAnnotation field of hydra.python.syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtcWithParamNoDefaultStarAnnotation :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc
+noDefaultStarAnnotationStarEtcWithParamNoDefaultStarAnnotation original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefaultStarAnnotation"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramMaybeDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+              Model.projectionFieldName = (Model.Name "paramMaybeDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywords"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"),
+              Model.projectionFieldName = (Model.Name "keywords")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.NoDefaultStarEtc
+noDefaultStarEtc :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.NoDefaultStarEtc
+noDefaultStarEtc paramNoDefault paramMaybeDefault keywords =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramMaybeDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramMaybeDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywords"),
+          Model.fieldTerm = (Typed.unTypedTerm keywords)}]}))
+
+-- | DSL accessor for the keywords field of hydra.python.syntax.NoDefaultStarEtc
+noDefaultStarEtcKeywords :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords)
+noDefaultStarEtcKeywords x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+        Model.projectionFieldName = (Model.Name "keywords")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.NoDefaultStarEtc
+noDefaultStarEtcNoDefaultStarEtc :: Typed.TypedName Syntax.NoDefaultStarEtc
+noDefaultStarEtcNoDefaultStarEtc = Typed.TypedName (Model.Name "hydra.python.syntax.NoDefaultStarEtc")
+
+-- | DSL accessor for the paramMaybeDefault field of hydra.python.syntax.NoDefaultStarEtc
+noDefaultStarEtcParamMaybeDefault :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault]
+noDefaultStarEtcParamMaybeDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+        Model.projectionFieldName = (Model.Name "paramMaybeDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramNoDefault field of hydra.python.syntax.NoDefaultStarEtc
+noDefaultStarEtcParamNoDefault :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm Syntax.ParamNoDefault
+noDefaultStarEtcParamNoDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+        Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the keywords field of hydra.python.syntax.NoDefaultStarEtc
+noDefaultStarEtcWithKeywords :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm (Maybe Syntax.Keywords) -> Typed.TypedTerm Syntax.NoDefaultStarEtc
+noDefaultStarEtcWithKeywords original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramMaybeDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+              Model.projectionFieldName = (Model.Name "paramMaybeDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywords"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the paramMaybeDefault field of hydra.python.syntax.NoDefaultStarEtc
+noDefaultStarEtcWithParamMaybeDefault :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm [Syntax.ParamMaybeDefault] -> Typed.TypedTerm Syntax.NoDefaultStarEtc
+noDefaultStarEtcWithParamMaybeDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramMaybeDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywords"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+              Model.projectionFieldName = (Model.Name "keywords")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramNoDefault field of hydra.python.syntax.NoDefaultStarEtc
+noDefaultStarEtcWithParamNoDefault :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm Syntax.NoDefaultStarEtc
+noDefaultStarEtcWithParamNoDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramMaybeDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+              Model.projectionFieldName = (Model.Name "paramMaybeDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "keywords"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.NoDefaultStarEtc"),
+              Model.projectionFieldName = (Model.Name "keywords")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the float variant of hydra.python.syntax.Number
+numberFloat :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.Number
+numberFloat x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Number"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "float"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the imaginary variant of hydra.python.syntax.Number
+numberImaginary :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.Number
+numberImaginary x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Number"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "imaginary"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the integer variant of hydra.python.syntax.Number
+numberInteger :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.Number
+numberInteger x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Number"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "integer"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.Number
+numberNumber :: Typed.TypedName Syntax.Number
+numberNumber = Typed.TypedName (Model.Name "hydra.python.syntax.Number")
+
+-- | DSL constructor for hydra.python.syntax.OpenSequencePattern
+openSequencePattern :: Typed.TypedTerm Syntax.MaybeStarPattern -> Typed.TypedTerm (Maybe Syntax.MaybeSequencePattern) -> Typed.TypedTerm Syntax.OpenSequencePattern
+openSequencePattern head tail =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.OpenSequencePattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "head"),
+          Model.fieldTerm = (Typed.unTypedTerm head)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tail"),
+          Model.fieldTerm = (Typed.unTypedTerm tail)}]}))
+
+-- | DSL accessor for the head field of hydra.python.syntax.OpenSequencePattern
+openSequencePatternHead :: Typed.TypedTerm Syntax.OpenSequencePattern -> Typed.TypedTerm Syntax.MaybeStarPattern
+openSequencePatternHead x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.OpenSequencePattern"),
+        Model.projectionFieldName = (Model.Name "head")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.OpenSequencePattern
+openSequencePatternOpenSequencePattern :: Typed.TypedName Syntax.OpenSequencePattern
+openSequencePatternOpenSequencePattern = Typed.TypedName (Model.Name "hydra.python.syntax.OpenSequencePattern")
+
+-- | DSL accessor for the tail field of hydra.python.syntax.OpenSequencePattern
+openSequencePatternTail :: Typed.TypedTerm Syntax.OpenSequencePattern -> Typed.TypedTerm (Maybe Syntax.MaybeSequencePattern)
+openSequencePatternTail x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.OpenSequencePattern"),
+        Model.projectionFieldName = (Model.Name "tail")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the head field of hydra.python.syntax.OpenSequencePattern
+openSequencePatternWithHead :: Typed.TypedTerm Syntax.OpenSequencePattern -> Typed.TypedTerm Syntax.MaybeStarPattern -> Typed.TypedTerm Syntax.OpenSequencePattern
+openSequencePatternWithHead original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.OpenSequencePattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "head"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tail"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.OpenSequencePattern"),
+              Model.projectionFieldName = (Model.Name "tail")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tail field of hydra.python.syntax.OpenSequencePattern
+openSequencePatternWithTail :: Typed.TypedTerm Syntax.OpenSequencePattern -> Typed.TypedTerm (Maybe Syntax.MaybeSequencePattern) -> Typed.TypedTerm Syntax.OpenSequencePattern
+openSequencePatternWithTail original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.OpenSequencePattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "head"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.OpenSequencePattern"),
+              Model.projectionFieldName = (Model.Name "head")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tail"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for the hydra.python.syntax.OrPattern wrapper
+orPattern :: Typed.TypedTerm [Syntax.ClosedPattern] -> Typed.TypedTerm Syntax.OrPattern
+orPattern x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.OrPattern"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.OrPattern
+orPatternOrPattern :: Typed.TypedName Syntax.OrPattern
+orPatternOrPattern = Typed.TypedName (Model.Name "hydra.python.syntax.OrPattern")
+
+-- | DSL constructor for hydra.python.syntax.Param
+param :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Annotation) -> Typed.TypedTerm Syntax.Param
+param name annotation =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Param"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "annotation"),
+          Model.fieldTerm = (Typed.unTypedTerm annotation)}]}))
+
+-- | DSL accessor for the annotation field of hydra.python.syntax.Param
+paramAnnotation :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm (Maybe Syntax.Annotation)
+paramAnnotation x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Param"),
+        Model.projectionFieldName = (Model.Name "annotation")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.python.syntax.ParamMaybeDefault
+paramMaybeDefault :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamMaybeDefault
+paramMaybeDefault param default_ typeComment =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamMaybeDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Typed.unTypedTerm param)},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm default_)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm typeComment)}]}))
+
+-- | DSL accessor for the default field of hydra.python.syntax.ParamMaybeDefault
+paramMaybeDefaultDefault :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.Default)
+paramMaybeDefaultDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamMaybeDefault"),
+        Model.projectionFieldName = (Model.Name "default")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the param field of hydra.python.syntax.ParamMaybeDefault
+paramMaybeDefaultParam :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm Syntax.Param
+paramMaybeDefaultParam x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamMaybeDefault"),
+        Model.projectionFieldName = (Model.Name "param")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ParamMaybeDefault
+paramMaybeDefaultParamMaybeDefault :: Typed.TypedName Syntax.ParamMaybeDefault
+paramMaybeDefaultParamMaybeDefault = Typed.TypedName (Model.Name "hydra.python.syntax.ParamMaybeDefault")
+
+-- | DSL accessor for the typeComment field of hydra.python.syntax.ParamMaybeDefault
+paramMaybeDefaultTypeComment :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment)
+paramMaybeDefaultTypeComment x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamMaybeDefault"),
+        Model.projectionFieldName = (Model.Name "typeComment")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the default field of hydra.python.syntax.ParamMaybeDefault
+paramMaybeDefaultWithDefault :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.Default) -> Typed.TypedTerm Syntax.ParamMaybeDefault
+paramMaybeDefaultWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamMaybeDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamMaybeDefault"),
+              Model.projectionFieldName = (Model.Name "param")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamMaybeDefault"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the param field of hydra.python.syntax.ParamMaybeDefault
+paramMaybeDefaultWithParam :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.ParamMaybeDefault
+paramMaybeDefaultWithParam original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamMaybeDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          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.python.syntax.ParamMaybeDefault"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamMaybeDefault"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the typeComment field of hydra.python.syntax.ParamMaybeDefault
+paramMaybeDefaultWithTypeComment :: Typed.TypedTerm Syntax.ParamMaybeDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamMaybeDefault
+paramMaybeDefaultWithTypeComment original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamMaybeDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamMaybeDefault"),
+              Model.projectionFieldName = (Model.Name "param")})),
+            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.python.syntax.ParamMaybeDefault"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL accessor for the name field of hydra.python.syntax.Param
+paramName :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.Name
+paramName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Param"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.python.syntax.ParamNoDefault
+paramNoDefault :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamNoDefault
+paramNoDefault param typeComment =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamNoDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Typed.unTypedTerm param)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm typeComment)}]}))
+
+-- | DSL accessor for the param field of hydra.python.syntax.ParamNoDefault
+paramNoDefaultParam :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm Syntax.Param
+paramNoDefaultParam x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefault"),
+        Model.projectionFieldName = (Model.Name "param")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ParamNoDefault
+paramNoDefaultParamNoDefault :: Typed.TypedName Syntax.ParamNoDefault
+paramNoDefaultParamNoDefault = Typed.TypedName (Model.Name "hydra.python.syntax.ParamNoDefault")
+
+-- | DSL constructor for hydra.python.syntax.ParamNoDefaultParameters
+paramNoDefaultParameters :: Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.ParamNoDefaultParameters
+paramNoDefaultParameters paramNoDefault paramWithDefault starEtc =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramWithDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Typed.unTypedTerm starEtc)}]}))
+
+-- | DSL accessor for the paramNoDefault field of hydra.python.syntax.ParamNoDefaultParameters
+paramNoDefaultParametersParamNoDefault :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault]
+paramNoDefaultParametersParamNoDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ParamNoDefaultParameters
+paramNoDefaultParametersParamNoDefaultParameters :: Typed.TypedName Syntax.ParamNoDefaultParameters
+paramNoDefaultParametersParamNoDefaultParameters =
+    Typed.TypedName (Model.Name "hydra.python.syntax.ParamNoDefaultParameters")
+
+-- | DSL accessor for the paramWithDefault field of hydra.python.syntax.ParamNoDefaultParameters
+paramNoDefaultParametersParamWithDefault :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault]
+paramNoDefaultParametersParamWithDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the starEtc field of hydra.python.syntax.ParamNoDefaultParameters
+paramNoDefaultParametersStarEtc :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc)
+paramNoDefaultParametersStarEtc x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "starEtc")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the paramNoDefault field of hydra.python.syntax.ParamNoDefaultParameters
+paramNoDefaultParametersWithParamNoDefault :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm Syntax.ParamNoDefaultParameters
+paramNoDefaultParametersWithParamNoDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "starEtc")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramWithDefault field of hydra.python.syntax.ParamNoDefaultParameters
+paramNoDefaultParametersWithParamWithDefault :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.ParamNoDefaultParameters
+paramNoDefaultParametersWithParamWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "starEtc")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the starEtc field of hydra.python.syntax.ParamNoDefaultParameters
+paramNoDefaultParametersWithStarEtc :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.ParamNoDefaultParameters
+paramNoDefaultParametersWithStarEtc original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.ParamNoDefaultStarAnnotation
+paramNoDefaultStarAnnotation :: Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation
+paramNoDefaultStarAnnotation paramStarAnnotation typeComment =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramStarAnnotation"),
+          Model.fieldTerm = (Typed.unTypedTerm paramStarAnnotation)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm typeComment)}]}))
+
+-- | DSL name token for hydra.python.syntax.ParamNoDefaultStarAnnotation
+paramNoDefaultStarAnnotationParamNoDefaultStarAnnotation :: Typed.TypedName Syntax.ParamNoDefaultStarAnnotation
+paramNoDefaultStarAnnotationParamNoDefaultStarAnnotation =
+    Typed.TypedName (Model.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation")
+
+-- | DSL accessor for the paramStarAnnotation field of hydra.python.syntax.ParamNoDefaultStarAnnotation
+paramNoDefaultStarAnnotationParamStarAnnotation :: Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm Syntax.ParamStarAnnotation
+paramNoDefaultStarAnnotationParamStarAnnotation x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
+        Model.projectionFieldName = (Model.Name "paramStarAnnotation")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the typeComment field of hydra.python.syntax.ParamNoDefaultStarAnnotation
+paramNoDefaultStarAnnotationTypeComment :: Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm (Maybe Syntax.TypeComment)
+paramNoDefaultStarAnnotationTypeComment x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
+        Model.projectionFieldName = (Model.Name "typeComment")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the paramStarAnnotation field of hydra.python.syntax.ParamNoDefaultStarAnnotation
+paramNoDefaultStarAnnotationWithParamStarAnnotation :: Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation
+paramNoDefaultStarAnnotationWithParamStarAnnotation original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramStarAnnotation"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the typeComment field of hydra.python.syntax.ParamNoDefaultStarAnnotation
+paramNoDefaultStarAnnotationWithTypeComment :: Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamNoDefaultStarAnnotation
+paramNoDefaultStarAnnotationWithTypeComment original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramStarAnnotation"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"),
+              Model.projectionFieldName = (Model.Name "paramStarAnnotation")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL accessor for the typeComment field of hydra.python.syntax.ParamNoDefault
+paramNoDefaultTypeComment :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment)
+paramNoDefaultTypeComment x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefault"),
+        Model.projectionFieldName = (Model.Name "typeComment")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the param field of hydra.python.syntax.ParamNoDefault
+paramNoDefaultWithParam :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.ParamNoDefault
+paramNoDefaultWithParam original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamNoDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefault"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the typeComment field of hydra.python.syntax.ParamNoDefault
+paramNoDefaultWithTypeComment :: Typed.TypedTerm Syntax.ParamNoDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamNoDefault
+paramNoDefaultWithTypeComment original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamNoDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamNoDefault"),
+              Model.projectionFieldName = (Model.Name "param")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL name token for hydra.python.syntax.Param
+paramParam :: Typed.TypedName Syntax.Param
+paramParam = Typed.TypedName (Model.Name "hydra.python.syntax.Param")
+
+-- | DSL constructor for hydra.python.syntax.ParamStarAnnotation
+paramStarAnnotation :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.StarAnnotation -> Typed.TypedTerm Syntax.ParamStarAnnotation
+paramStarAnnotation name annotation =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamStarAnnotation"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "annotation"),
+          Model.fieldTerm = (Typed.unTypedTerm annotation)}]}))
+
+-- | DSL accessor for the annotation field of hydra.python.syntax.ParamStarAnnotation
+paramStarAnnotationAnnotation :: Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm Syntax.StarAnnotation
+paramStarAnnotationAnnotation x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamStarAnnotation"),
+        Model.projectionFieldName = (Model.Name "annotation")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.python.syntax.ParamStarAnnotation
+paramStarAnnotationName :: Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm Syntax.Name
+paramStarAnnotationName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamStarAnnotation"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ParamStarAnnotation
+paramStarAnnotationParamStarAnnotation :: Typed.TypedName Syntax.ParamStarAnnotation
+paramStarAnnotationParamStarAnnotation = Typed.TypedName (Model.Name "hydra.python.syntax.ParamStarAnnotation")
+
+-- | DSL updater for the annotation field of hydra.python.syntax.ParamStarAnnotation
+paramStarAnnotationWithAnnotation :: Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm Syntax.StarAnnotation -> Typed.TypedTerm Syntax.ParamStarAnnotation
+paramStarAnnotationWithAnnotation original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamStarAnnotation"),
+      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.python.syntax.ParamStarAnnotation"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "annotation"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the name field of hydra.python.syntax.ParamStarAnnotation
+paramStarAnnotationWithName :: Typed.TypedTerm Syntax.ParamStarAnnotation -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ParamStarAnnotation
+paramStarAnnotationWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamStarAnnotation"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "annotation"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamStarAnnotation"),
+              Model.projectionFieldName = (Model.Name "annotation")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the annotation field of hydra.python.syntax.Param
+paramWithAnnotation :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm (Maybe Syntax.Annotation) -> Typed.TypedTerm Syntax.Param
+paramWithAnnotation original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Param"),
+      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.python.syntax.Param"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "annotation"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.ParamWithDefault
+paramWithDefault :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.Default -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamWithDefault
+paramWithDefault param default_ typeComment =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Typed.unTypedTerm param)},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm default_)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm typeComment)}]}))
+
+-- | DSL accessor for the default field of hydra.python.syntax.ParamWithDefault
+paramWithDefaultDefault :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm Syntax.Default
+paramWithDefaultDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamWithDefault"),
+        Model.projectionFieldName = (Model.Name "default")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the param field of hydra.python.syntax.ParamWithDefault
+paramWithDefaultParam :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm Syntax.Param
+paramWithDefaultParam x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamWithDefault"),
+        Model.projectionFieldName = (Model.Name "param")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ParamWithDefault
+paramWithDefaultParamWithDefault :: Typed.TypedName Syntax.ParamWithDefault
+paramWithDefaultParamWithDefault = Typed.TypedName (Model.Name "hydra.python.syntax.ParamWithDefault")
+
+-- | DSL constructor for hydra.python.syntax.ParamWithDefaultParameters
+paramWithDefaultParameters :: Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.ParamWithDefaultParameters
+paramWithDefaultParameters paramWithDefault starEtc =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamWithDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramWithDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Typed.unTypedTerm starEtc)}]}))
+
+-- | DSL accessor for the paramWithDefault field of hydra.python.syntax.ParamWithDefaultParameters
+paramWithDefaultParametersParamWithDefault :: Typed.TypedTerm Syntax.ParamWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault]
+paramWithDefaultParametersParamWithDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamWithDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ParamWithDefaultParameters
+paramWithDefaultParametersParamWithDefaultParameters :: Typed.TypedName Syntax.ParamWithDefaultParameters
+paramWithDefaultParametersParamWithDefaultParameters =
+    Typed.TypedName (Model.Name "hydra.python.syntax.ParamWithDefaultParameters")
+
+-- | DSL accessor for the starEtc field of hydra.python.syntax.ParamWithDefaultParameters
+paramWithDefaultParametersStarEtc :: Typed.TypedTerm Syntax.ParamWithDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc)
+paramWithDefaultParametersStarEtc x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamWithDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "starEtc")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the paramWithDefault field of hydra.python.syntax.ParamWithDefaultParameters
+paramWithDefaultParametersWithParamWithDefault :: Typed.TypedTerm Syntax.ParamWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.ParamWithDefaultParameters
+paramWithDefaultParametersWithParamWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamWithDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamWithDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "starEtc")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the starEtc field of hydra.python.syntax.ParamWithDefaultParameters
+paramWithDefaultParametersWithStarEtc :: Typed.TypedTerm Syntax.ParamWithDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.ParamWithDefaultParameters
+paramWithDefaultParametersWithStarEtc original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamWithDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamWithDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL accessor for the typeComment field of hydra.python.syntax.ParamWithDefault
+paramWithDefaultTypeComment :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment)
+paramWithDefaultTypeComment x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamWithDefault"),
+        Model.projectionFieldName = (Model.Name "typeComment")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the default field of hydra.python.syntax.ParamWithDefault
+paramWithDefaultWithDefault :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm Syntax.Default -> Typed.TypedTerm Syntax.ParamWithDefault
+paramWithDefaultWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamWithDefault"),
+              Model.projectionFieldName = (Model.Name "param")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamWithDefault"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the param field of hydra.python.syntax.ParamWithDefault
+paramWithDefaultWithParam :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.ParamWithDefault
+paramWithDefaultWithParam original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          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.python.syntax.ParamWithDefault"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamWithDefault"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the typeComment field of hydra.python.syntax.ParamWithDefault
+paramWithDefaultWithTypeComment :: Typed.TypedTerm Syntax.ParamWithDefault -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.ParamWithDefault
+paramWithDefaultWithTypeComment original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ParamWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "param"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ParamWithDefault"),
+              Model.projectionFieldName = (Model.Name "param")})),
+            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.python.syntax.ParamWithDefault"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the name field of hydra.python.syntax.Param
+paramWithName :: Typed.TypedTerm Syntax.Param -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Param
+paramWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Param"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "annotation"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Param"),
+              Model.projectionFieldName = (Model.Name "annotation")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the paramNoDefault variant of hydra.python.syntax.Parameters
+parametersParamNoDefault :: Typed.TypedTerm Syntax.ParamNoDefaultParameters -> Typed.TypedTerm Syntax.Parameters
+parametersParamNoDefault x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Parameters"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "paramNoDefault"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the paramWithDefault variant of hydra.python.syntax.Parameters
+parametersParamWithDefault :: Typed.TypedTerm Syntax.ParamWithDefaultParameters -> Typed.TypedTerm Syntax.Parameters
+parametersParamWithDefault x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Parameters"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "paramWithDefault"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.Parameters
+parametersParameters :: Typed.TypedName Syntax.Parameters
+parametersParameters = Typed.TypedName (Model.Name "hydra.python.syntax.Parameters")
+
+-- | DSL injection for the slashNoDefault variant of hydra.python.syntax.Parameters
+parametersSlashNoDefault :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm Syntax.Parameters
+parametersSlashNoDefault x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Parameters"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "slashNoDefault"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the slashWithDefault variant of hydra.python.syntax.Parameters
+parametersSlashWithDefault :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm Syntax.Parameters
+parametersSlashWithDefault x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Parameters"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "slashWithDefault"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the starEtc variant of hydra.python.syntax.Parameters
+parametersStarEtc :: Typed.TypedTerm Syntax.StarEtc -> Typed.TypedTerm Syntax.Parameters
+parametersStarEtc x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Parameters"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starEtc"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the as variant of hydra.python.syntax.Pattern
+patternAs :: Typed.TypedTerm Syntax.AsPattern -> Typed.TypedTerm Syntax.Pattern
+patternAs x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Pattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "as"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.PatternCaptureTarget wrapper
+patternCaptureTarget :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.PatternCaptureTarget
+patternCaptureTarget x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.PatternCaptureTarget"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.PatternCaptureTarget
+patternCaptureTargetPatternCaptureTarget :: Typed.TypedName Syntax.PatternCaptureTarget
+patternCaptureTargetPatternCaptureTarget = Typed.TypedName (Model.Name "hydra.python.syntax.PatternCaptureTarget")
+
+-- | DSL injection for the or variant of hydra.python.syntax.Pattern
+patternOr :: Typed.TypedTerm Syntax.OrPattern -> Typed.TypedTerm Syntax.Pattern
+patternOr x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Pattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "or"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.Pattern
+patternPattern :: Typed.TypedName Syntax.Pattern
+patternPattern = Typed.TypedName (Model.Name "hydra.python.syntax.Pattern")
+
+-- | DSL injection for the pattern variant of hydra.python.syntax.Patterns
+patternsPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Patterns
+patternsPattern x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Patterns"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "pattern"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.Patterns
+patternsPatterns :: Typed.TypedName Syntax.Patterns
+patternsPatterns = Typed.TypedName (Model.Name "hydra.python.syntax.Patterns")
+
+-- | DSL injection for the sequence variant of hydra.python.syntax.Patterns
+patternsSequence :: Typed.TypedTerm Syntax.OpenSequencePattern -> Typed.TypedTerm Syntax.Patterns
+patternsSequence x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Patterns"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "sequence"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the minus variant of hydra.python.syntax.PlusOrMinus
+plusOrMinusMinus :: Typed.TypedTerm Syntax.PlusOrMinus
+plusOrMinusMinus =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.PlusOrMinus"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "minus"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the plus variant of hydra.python.syntax.PlusOrMinus
+plusOrMinusPlus :: Typed.TypedTerm Syntax.PlusOrMinus
+plusOrMinusPlus =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.PlusOrMinus"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "plus"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.python.syntax.PlusOrMinus
+plusOrMinusPlusOrMinus :: Typed.TypedName Syntax.PlusOrMinus
+plusOrMinusPlusOrMinus = Typed.TypedName (Model.Name "hydra.python.syntax.PlusOrMinus")
+
+-- | DSL injection for the assignment variant of hydra.python.syntax.PosArg
+posArgAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.PosArg
+posArgAssignment x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.PosArg"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "assignment"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the expression variant of hydra.python.syntax.PosArg
+posArgExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.PosArg
+posArgExpression x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.PosArg"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "expression"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.PosArg
+posArgPosArg :: Typed.TypedName Syntax.PosArg
+posArgPosArg = Typed.TypedName (Model.Name "hydra.python.syntax.PosArg")
+
+-- | DSL injection for the starred variant of hydra.python.syntax.PosArg
+posArgStarred :: Typed.TypedTerm Syntax.StarredExpression -> Typed.TypedTerm Syntax.PosArg
+posArgStarred x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.PosArg"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starred"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.PositionalPatterns wrapper
+positionalPatterns :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.PositionalPatterns
+positionalPatterns x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.PositionalPatterns"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.PositionalPatterns
+positionalPatternsPositionalPatterns :: Typed.TypedName Syntax.PositionalPatterns
+positionalPatternsPositionalPatterns = Typed.TypedName (Model.Name "hydra.python.syntax.PositionalPatterns")
+
+-- | DSL constructor for hydra.python.syntax.Power
+power :: Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm (Maybe Syntax.Factor) -> Typed.TypedTerm Syntax.Power
+power lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Power"),
+      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.python.syntax.Power
+powerLhs :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm Syntax.AwaitPrimary
+powerLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Power"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Power
+powerPower :: Typed.TypedName Syntax.Power
+powerPower = Typed.TypedName (Model.Name "hydra.python.syntax.Power")
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.Power
+powerRhs :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm (Maybe Syntax.Factor)
+powerRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Power"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the lhs field of hydra.python.syntax.Power
+powerWithLhs :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm Syntax.AwaitPrimary -> Typed.TypedTerm Syntax.Power
+powerWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Power"),
+      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.python.syntax.Power"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.Power
+powerWithRhs :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm (Maybe Syntax.Factor) -> Typed.TypedTerm Syntax.Power
+powerWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Power"),
+      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.python.syntax.Power"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the compound variant of hydra.python.syntax.Primary
+primaryCompound :: Typed.TypedTerm Syntax.PrimaryWithRhs -> Typed.TypedTerm Syntax.Primary
+primaryCompound x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Primary"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "compound"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.Primary
+primaryPrimary :: Typed.TypedName Syntax.Primary
+primaryPrimary = Typed.TypedName (Model.Name "hydra.python.syntax.Primary")
+
+-- | DSL injection for the call variant of hydra.python.syntax.PrimaryRhs
+primaryRhsCall :: Typed.TypedTerm Syntax.Args -> Typed.TypedTerm Syntax.PrimaryRhs
+primaryRhsCall x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.PrimaryRhs"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "call"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the genexp variant of hydra.python.syntax.PrimaryRhs
+primaryRhsGenexp :: Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.PrimaryRhs
+primaryRhsGenexp x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.PrimaryRhs"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "genexp"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.PrimaryRhs
+primaryRhsPrimaryRhs :: Typed.TypedName Syntax.PrimaryRhs
+primaryRhsPrimaryRhs = Typed.TypedName (Model.Name "hydra.python.syntax.PrimaryRhs")
+
+-- | DSL injection for the project variant of hydra.python.syntax.PrimaryRhs
+primaryRhsProject :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.PrimaryRhs
+primaryRhsProject x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.PrimaryRhs"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "project"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the slices variant of hydra.python.syntax.PrimaryRhs
+primaryRhsSlices :: Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm Syntax.PrimaryRhs
+primaryRhsSlices x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.PrimaryRhs"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "slices"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the simple variant of hydra.python.syntax.Primary
+primarySimple :: Typed.TypedTerm Syntax.Atom -> Typed.TypedTerm Syntax.Primary
+primarySimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Primary"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.python.syntax.PrimaryWithRhs
+primaryWithRhs :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.PrimaryRhs -> Typed.TypedTerm Syntax.PrimaryWithRhs
+primaryWithRhs primary rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.PrimaryWithRhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Typed.unTypedTerm primary)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the primary field of hydra.python.syntax.PrimaryWithRhs
+primaryWithRhsPrimary :: Typed.TypedTerm Syntax.PrimaryWithRhs -> Typed.TypedTerm Syntax.Primary
+primaryWithRhsPrimary x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.PrimaryWithRhs"),
+        Model.projectionFieldName = (Model.Name "primary")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.PrimaryWithRhs
+primaryWithRhsPrimaryWithRhs :: Typed.TypedName Syntax.PrimaryWithRhs
+primaryWithRhsPrimaryWithRhs = Typed.TypedName (Model.Name "hydra.python.syntax.PrimaryWithRhs")
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.PrimaryWithRhs
+primaryWithRhsRhs :: Typed.TypedTerm Syntax.PrimaryWithRhs -> Typed.TypedTerm Syntax.PrimaryRhs
+primaryWithRhsRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.PrimaryWithRhs"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the primary field of hydra.python.syntax.PrimaryWithRhs
+primaryWithRhsWithPrimary :: Typed.TypedTerm Syntax.PrimaryWithRhs -> Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.PrimaryWithRhs
+primaryWithRhsWithPrimary original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.PrimaryWithRhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          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.python.syntax.PrimaryWithRhs"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.PrimaryWithRhs
+primaryWithRhsWithRhs :: Typed.TypedTerm Syntax.PrimaryWithRhs -> Typed.TypedTerm Syntax.PrimaryRhs -> Typed.TypedTerm Syntax.PrimaryWithRhs
+primaryWithRhsWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.PrimaryWithRhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.PrimaryWithRhs"),
+              Model.projectionFieldName = (Model.Name "primary")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the double variant of hydra.python.syntax.QuoteStyle
+quoteStyleDouble :: Typed.TypedTerm Syntax.QuoteStyle
+quoteStyleDouble =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.QuoteStyle"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "double"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.python.syntax.QuoteStyle
+quoteStyleQuoteStyle :: Typed.TypedName Syntax.QuoteStyle
+quoteStyleQuoteStyle = Typed.TypedName (Model.Name "hydra.python.syntax.QuoteStyle")
+
+-- | DSL injection for the single variant of hydra.python.syntax.QuoteStyle
+quoteStyleSingle :: Typed.TypedTerm Syntax.QuoteStyle
+quoteStyleSingle =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.QuoteStyle"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "single"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the tripleDouble variant of hydra.python.syntax.QuoteStyle
+quoteStyleTripleDouble :: Typed.TypedTerm Syntax.QuoteStyle
+quoteStyleTripleDouble =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.QuoteStyle"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "tripleDouble"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the tripleSingle variant of hydra.python.syntax.QuoteStyle
+quoteStyleTripleSingle :: Typed.TypedTerm Syntax.QuoteStyle
+quoteStyleTripleSingle =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.QuoteStyle"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "tripleSingle"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL constructor for hydra.python.syntax.RaiseExpression
+raiseExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.RaiseExpression
+raiseExpression expression from =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.RaiseExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm expression)},
+        Model.Field {
+          Model.fieldName = (Model.Name "from"),
+          Model.fieldTerm = (Typed.unTypedTerm from)}]}))
+
+-- | DSL accessor for the expression field of hydra.python.syntax.RaiseExpression
+raiseExpressionExpression :: Typed.TypedTerm Syntax.RaiseExpression -> Typed.TypedTerm Syntax.Expression
+raiseExpressionExpression x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.RaiseExpression"),
+        Model.projectionFieldName = (Model.Name "expression")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the from field of hydra.python.syntax.RaiseExpression
+raiseExpressionFrom :: Typed.TypedTerm Syntax.RaiseExpression -> Typed.TypedTerm (Maybe Syntax.Expression)
+raiseExpressionFrom x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.RaiseExpression"),
+        Model.projectionFieldName = (Model.Name "from")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.RaiseExpression
+raiseExpressionRaiseExpression :: Typed.TypedName Syntax.RaiseExpression
+raiseExpressionRaiseExpression = Typed.TypedName (Model.Name "hydra.python.syntax.RaiseExpression")
+
+-- | DSL updater for the expression field of hydra.python.syntax.RaiseExpression
+raiseExpressionWithExpression :: Typed.TypedTerm Syntax.RaiseExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.RaiseExpression
+raiseExpressionWithExpression original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.RaiseExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "from"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.RaiseExpression"),
+              Model.projectionFieldName = (Model.Name "from")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the from field of hydra.python.syntax.RaiseExpression
+raiseExpressionWithFrom :: Typed.TypedTerm Syntax.RaiseExpression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.RaiseExpression
+raiseExpressionWithFrom original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.RaiseExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.RaiseExpression"),
+              Model.projectionFieldName = (Model.Name "expression")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "from"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for the hydra.python.syntax.RaiseStatement wrapper
+raiseStatement :: Typed.TypedTerm (Maybe Syntax.RaiseExpression) -> Typed.TypedTerm Syntax.RaiseStatement
+raiseStatement x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.RaiseStatement"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.RaiseStatement
+raiseStatementRaiseStatement :: Typed.TypedName Syntax.RaiseStatement
+raiseStatementRaiseStatement = Typed.TypedName (Model.Name "hydra.python.syntax.RaiseStatement")
+
+-- | DSL injection for the float variant of hydra.python.syntax.RealNumber
+realNumberFloat :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.RealNumber
+realNumberFloat x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.RealNumber"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "float"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the integer variant of hydra.python.syntax.RealNumber
+realNumberInteger :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.RealNumber
+realNumberInteger x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.RealNumber"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "integer"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.RealNumber
+realNumberRealNumber :: Typed.TypedName Syntax.RealNumber
+realNumberRealNumber = Typed.TypedName (Model.Name "hydra.python.syntax.RealNumber")
+
+-- | DSL injection for the dot variant of hydra.python.syntax.RelativeImportPrefix
+relativeImportPrefixDot :: Typed.TypedTerm Syntax.RelativeImportPrefix
+relativeImportPrefixDot =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.RelativeImportPrefix"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "dot"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the ellipsis variant of hydra.python.syntax.RelativeImportPrefix
+relativeImportPrefixEllipsis :: Typed.TypedTerm Syntax.RelativeImportPrefix
+relativeImportPrefixEllipsis =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.RelativeImportPrefix"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "ellipsis"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.python.syntax.RelativeImportPrefix
+relativeImportPrefixRelativeImportPrefix :: Typed.TypedName Syntax.RelativeImportPrefix
+relativeImportPrefixRelativeImportPrefix = Typed.TypedName (Model.Name "hydra.python.syntax.RelativeImportPrefix")
+
+-- | DSL constructor for the hydra.python.syntax.ReturnStatement wrapper
+returnStatement :: Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm Syntax.ReturnStatement
+returnStatement x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.ReturnStatement"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ReturnStatement
+returnStatementReturnStatement :: Typed.TypedName Syntax.ReturnStatement
+returnStatementReturnStatement = Typed.TypedName (Model.Name "hydra.python.syntax.ReturnStatement")
+
+-- | DSL injection for the list variant of hydra.python.syntax.SequencePattern
+sequencePatternList :: Typed.TypedTerm (Maybe Syntax.MaybeSequencePattern) -> Typed.TypedTerm Syntax.SequencePattern
+sequencePatternList x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SequencePattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "list"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.SequencePattern
+sequencePatternSequencePattern :: Typed.TypedName Syntax.SequencePattern
+sequencePatternSequencePattern = Typed.TypedName (Model.Name "hydra.python.syntax.SequencePattern")
+
+-- | DSL injection for the tuple variant of hydra.python.syntax.SequencePattern
+sequencePatternTuple :: Typed.TypedTerm (Maybe Syntax.OpenSequencePattern) -> Typed.TypedTerm Syntax.SequencePattern
+sequencePatternTuple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SequencePattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "tuple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.Set wrapper
+set :: Typed.TypedTerm [Syntax.StarNamedExpression] -> Typed.TypedTerm Syntax.Set
+set x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Set"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Set
+setSet :: Typed.TypedName Syntax.Set
+setSet = Typed.TypedName (Model.Name "hydra.python.syntax.Set")
+
+-- | DSL constructor for hydra.python.syntax.Setcomp
+setcomp :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Setcomp
+setcomp expression forIfClauses =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Setcomp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm expression)},
+        Model.Field {
+          Model.fieldName = (Model.Name "forIfClauses"),
+          Model.fieldTerm = (Typed.unTypedTerm forIfClauses)}]}))
+
+-- | DSL accessor for the expression field of hydra.python.syntax.Setcomp
+setcompExpression :: Typed.TypedTerm Syntax.Setcomp -> Typed.TypedTerm Syntax.NamedExpression
+setcompExpression x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Setcomp"),
+        Model.projectionFieldName = (Model.Name "expression")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the forIfClauses field of hydra.python.syntax.Setcomp
+setcompForIfClauses :: Typed.TypedTerm Syntax.Setcomp -> Typed.TypedTerm Syntax.ForIfClauses
+setcompForIfClauses x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Setcomp"),
+        Model.projectionFieldName = (Model.Name "forIfClauses")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Setcomp
+setcompSetcomp :: Typed.TypedName Syntax.Setcomp
+setcompSetcomp = Typed.TypedName (Model.Name "hydra.python.syntax.Setcomp")
+
+-- | DSL updater for the expression field of hydra.python.syntax.Setcomp
+setcompWithExpression :: Typed.TypedTerm Syntax.Setcomp -> Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Setcomp
+setcompWithExpression original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Setcomp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "forIfClauses"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Setcomp"),
+              Model.projectionFieldName = (Model.Name "forIfClauses")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the forIfClauses field of hydra.python.syntax.Setcomp
+setcompWithForIfClauses :: Typed.TypedTerm Syntax.Setcomp -> Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm Syntax.Setcomp
+setcompWithForIfClauses original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Setcomp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Setcomp"),
+              Model.projectionFieldName = (Model.Name "expression")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "forIfClauses"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.ShiftExpression
+shiftExpression :: Typed.TypedTerm (Maybe Syntax.ShiftLhs) -> Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.ShiftExpression
+shiftExpression lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ShiftExpression"),
+      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.python.syntax.ShiftExpression
+shiftExpressionLhs :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm (Maybe Syntax.ShiftLhs)
+shiftExpressionLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ShiftExpression"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.ShiftExpression
+shiftExpressionRhs :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.Sum
+shiftExpressionRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ShiftExpression"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ShiftExpression
+shiftExpressionShiftExpression :: Typed.TypedName Syntax.ShiftExpression
+shiftExpressionShiftExpression = Typed.TypedName (Model.Name "hydra.python.syntax.ShiftExpression")
+
+-- | DSL updater for the lhs field of hydra.python.syntax.ShiftExpression
+shiftExpressionWithLhs :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm (Maybe Syntax.ShiftLhs) -> Typed.TypedTerm Syntax.ShiftExpression
+shiftExpressionWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ShiftExpression"),
+      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.python.syntax.ShiftExpression"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.ShiftExpression
+shiftExpressionWithRhs :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.ShiftExpression
+shiftExpressionWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ShiftExpression"),
+      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.python.syntax.ShiftExpression"),
+              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.python.syntax.ShiftLhs
+shiftLhs :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.ShiftOp -> Typed.TypedTerm Syntax.ShiftLhs
+shiftLhs operand operator =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ShiftLhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operand"),
+          Model.fieldTerm = (Typed.unTypedTerm operand)},
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          Model.fieldTerm = (Typed.unTypedTerm operator)}]}))
+
+-- | DSL accessor for the operand field of hydra.python.syntax.ShiftLhs
+shiftLhsOperand :: Typed.TypedTerm Syntax.ShiftLhs -> Typed.TypedTerm Syntax.ShiftExpression
+shiftLhsOperand x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ShiftLhs"),
+        Model.projectionFieldName = (Model.Name "operand")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the operator field of hydra.python.syntax.ShiftLhs
+shiftLhsOperator :: Typed.TypedTerm Syntax.ShiftLhs -> Typed.TypedTerm Syntax.ShiftOp
+shiftLhsOperator x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.ShiftLhs"),
+        Model.projectionFieldName = (Model.Name "operator")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ShiftLhs
+shiftLhsShiftLhs :: Typed.TypedName Syntax.ShiftLhs
+shiftLhsShiftLhs = Typed.TypedName (Model.Name "hydra.python.syntax.ShiftLhs")
+
+-- | DSL updater for the operand field of hydra.python.syntax.ShiftLhs
+shiftLhsWithOperand :: Typed.TypedTerm Syntax.ShiftLhs -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.ShiftLhs
+shiftLhsWithOperand original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ShiftLhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operand"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ShiftLhs"),
+              Model.projectionFieldName = (Model.Name "operator")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the operator field of hydra.python.syntax.ShiftLhs
+shiftLhsWithOperator :: Typed.TypedTerm Syntax.ShiftLhs -> Typed.TypedTerm Syntax.ShiftOp -> Typed.TypedTerm Syntax.ShiftLhs
+shiftLhsWithOperator original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.ShiftLhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operand"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.ShiftLhs"),
+              Model.projectionFieldName = (Model.Name "operand")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the left variant of hydra.python.syntax.ShiftOp
+shiftOpLeft :: Typed.TypedTerm Syntax.ShiftOp
+shiftOpLeft =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ShiftOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "left"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the right variant of hydra.python.syntax.ShiftOp
+shiftOpRight :: Typed.TypedTerm Syntax.ShiftOp
+shiftOpRight =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.ShiftOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "right"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.python.syntax.ShiftOp
+shiftOpShiftOp :: Typed.TypedName Syntax.ShiftOp
+shiftOpShiftOp = Typed.TypedName (Model.Name "hydra.python.syntax.ShiftOp")
+
+-- | DSL injection for the number variant of hydra.python.syntax.SignedNumber
+signedNumberNumber :: Typed.TypedTerm Syntax.Number -> Typed.TypedTerm Syntax.SignedNumber
+signedNumberNumber x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SignedNumber"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "number"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the sign variant of hydra.python.syntax.SignedNumber
+signedNumberSign :: Typed.TypedTerm Syntax.PlusOrMinus -> Typed.TypedTerm Syntax.SignedNumber
+signedNumberSign x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SignedNumber"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "sign"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.SignedNumber
+signedNumberSignedNumber :: Typed.TypedName Syntax.SignedNumber
+signedNumberSignedNumber = Typed.TypedName (Model.Name "hydra.python.syntax.SignedNumber")
+
+-- | DSL injection for the number variant of hydra.python.syntax.SignedRealNumber
+signedRealNumberNumber :: Typed.TypedTerm Syntax.RealNumber -> Typed.TypedTerm Syntax.SignedRealNumber
+signedRealNumberNumber x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SignedRealNumber"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "number"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the sign variant of hydra.python.syntax.SignedRealNumber
+signedRealNumberSign :: Typed.TypedTerm Syntax.PlusOrMinus -> Typed.TypedTerm Syntax.SignedRealNumber
+signedRealNumberSign x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SignedRealNumber"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "sign"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.SignedRealNumber
+signedRealNumberSignedRealNumber :: Typed.TypedName Syntax.SignedRealNumber
+signedRealNumberSignedRealNumber = Typed.TypedName (Model.Name "hydra.python.syntax.SignedRealNumber")
+
+-- | DSL injection for the assert variant of hydra.python.syntax.SimpleStatement
+simpleStatementAssert :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementAssert x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "assert"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the assignment variant of hydra.python.syntax.SimpleStatement
+simpleStatementAssignment :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementAssignment x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "assignment"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the break variant of hydra.python.syntax.SimpleStatement
+simpleStatementBreak :: Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementBreak =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "break"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the continue variant of hydra.python.syntax.SimpleStatement
+simpleStatementContinue :: Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementContinue =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "continue"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the del variant of hydra.python.syntax.SimpleStatement
+simpleStatementDel :: Typed.TypedTerm Syntax.DelStatement -> Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementDel x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "del"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the global variant of hydra.python.syntax.SimpleStatement
+simpleStatementGlobal :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementGlobal x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "global"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the import variant of hydra.python.syntax.SimpleStatement
+simpleStatementImport :: Typed.TypedTerm Syntax.ImportStatement -> Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementImport x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "import"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the nonlocal variant of hydra.python.syntax.SimpleStatement
+simpleStatementNonlocal :: Typed.TypedTerm [Syntax.Name] -> Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementNonlocal x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "nonlocal"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the pass variant of hydra.python.syntax.SimpleStatement
+simpleStatementPass :: Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementPass =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "pass"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the raise variant of hydra.python.syntax.SimpleStatement
+simpleStatementRaise :: Typed.TypedTerm Syntax.RaiseStatement -> Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementRaise x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "raise"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the return variant of hydra.python.syntax.SimpleStatement
+simpleStatementReturn :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementReturn x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "return"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.SimpleStatement
+simpleStatementSimpleStatement :: Typed.TypedName Syntax.SimpleStatement
+simpleStatementSimpleStatement = Typed.TypedName (Model.Name "hydra.python.syntax.SimpleStatement")
+
+-- | DSL injection for the starExpressions variant of hydra.python.syntax.SimpleStatement
+simpleStatementStarExpressions :: Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementStarExpressions x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starExpressions"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the typeAlias variant of hydra.python.syntax.SimpleStatement
+simpleStatementTypeAlias :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementTypeAlias x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "typeAlias"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the yield variant of hydra.python.syntax.SimpleStatement
+simpleStatementYield :: Typed.TypedTerm Syntax.YieldStatement -> Typed.TypedTerm Syntax.SimpleStatement
+simpleStatementYield x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SimpleStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "yield"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.python.syntax.SimpleTypeParameter
+simpleTypeParameter :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SimpleTypeParameter
+simpleTypeParameter name bound default_ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SimpleTypeParameter"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "bound"),
+          Model.fieldTerm = (Typed.unTypedTerm bound)},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm default_)}]}))
+
+-- | DSL accessor for the bound field of hydra.python.syntax.SimpleTypeParameter
+simpleTypeParameterBound :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression)
+simpleTypeParameterBound x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SimpleTypeParameter"),
+        Model.projectionFieldName = (Model.Name "bound")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the default field of hydra.python.syntax.SimpleTypeParameter
+simpleTypeParameterDefault :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression)
+simpleTypeParameterDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SimpleTypeParameter"),
+        Model.projectionFieldName = (Model.Name "default")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.python.syntax.SimpleTypeParameter
+simpleTypeParameterName :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm Syntax.Name
+simpleTypeParameterName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SimpleTypeParameter"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.SimpleTypeParameter
+simpleTypeParameterSimpleTypeParameter :: Typed.TypedName Syntax.SimpleTypeParameter
+simpleTypeParameterSimpleTypeParameter = Typed.TypedName (Model.Name "hydra.python.syntax.SimpleTypeParameter")
+
+-- | DSL updater for the bound field of hydra.python.syntax.SimpleTypeParameter
+simpleTypeParameterWithBound :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SimpleTypeParameter
+simpleTypeParameterWithBound original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SimpleTypeParameter"),
+      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.python.syntax.SimpleTypeParameter"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "bound"),
+          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.python.syntax.SimpleTypeParameter"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the default field of hydra.python.syntax.SimpleTypeParameter
+simpleTypeParameterWithDefault :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SimpleTypeParameter
+simpleTypeParameterWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SimpleTypeParameter"),
+      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.python.syntax.SimpleTypeParameter"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "bound"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SimpleTypeParameter"),
+              Model.projectionFieldName = (Model.Name "bound")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the name field of hydra.python.syntax.SimpleTypeParameter
+simpleTypeParameterWithName :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SimpleTypeParameter
+simpleTypeParameterWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SimpleTypeParameter"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "bound"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SimpleTypeParameter"),
+              Model.projectionFieldName = (Model.Name "bound")})),
+            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.python.syntax.SimpleTypeParameter"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the primaryAndName variant of hydra.python.syntax.SingleSubscriptAttributeTarget
+singleSubscriptAttributeTargetPrimaryAndName :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.SingleSubscriptAttributeTarget
+singleSubscriptAttributeTargetPrimaryAndName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SingleSubscriptAttributeTarget"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "primaryAndName"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the primaryAndSlices variant of hydra.python.syntax.SingleSubscriptAttributeTarget
+singleSubscriptAttributeTargetPrimaryAndSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.SingleSubscriptAttributeTarget
+singleSubscriptAttributeTargetPrimaryAndSlices x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SingleSubscriptAttributeTarget"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "primaryAndSlices"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.SingleSubscriptAttributeTarget
+singleSubscriptAttributeTargetSingleSubscriptAttributeTarget :: Typed.TypedName Syntax.SingleSubscriptAttributeTarget
+singleSubscriptAttributeTargetSingleSubscriptAttributeTarget =
+    Typed.TypedName (Model.Name "hydra.python.syntax.SingleSubscriptAttributeTarget")
+
+-- | DSL injection for the name variant of hydra.python.syntax.SingleTarget
+singleTargetName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.SingleTarget
+singleTargetName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SingleTarget"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "name"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the parens variant of hydra.python.syntax.SingleTarget
+singleTargetParens :: Typed.TypedTerm Syntax.SingleTarget -> Typed.TypedTerm Syntax.SingleTarget
+singleTargetParens x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SingleTarget"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "parens"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.SingleTarget
+singleTargetSingleTarget :: Typed.TypedName Syntax.SingleTarget
+singleTargetSingleTarget = Typed.TypedName (Model.Name "hydra.python.syntax.SingleTarget")
+
+-- | DSL injection for the subscriptAttributeTarget variant of hydra.python.syntax.SingleTarget
+singleTargetSubscriptAttributeTarget :: Typed.TypedTerm Syntax.SingleSubscriptAttributeTarget -> Typed.TypedTerm Syntax.SingleTarget
+singleTargetSubscriptAttributeTarget x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SingleTarget"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "subscriptAttributeTarget"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.SlashNoDefault wrapper
+slashNoDefault :: Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm Syntax.SlashNoDefault
+slashNoDefault x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.SlashNoDefault"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.python.syntax.SlashNoDefaultParameters
+slashNoDefaultParameters :: Typed.TypedTerm Syntax.SlashNoDefault -> Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.SlashNoDefaultParameters
+slashNoDefaultParameters slash paramNoDefault paramWithDefault starEtc =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "slash"),
+          Model.fieldTerm = (Typed.unTypedTerm slash)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramWithDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Typed.unTypedTerm starEtc)}]}))
+
+-- | DSL accessor for the paramNoDefault field of hydra.python.syntax.SlashNoDefaultParameters
+slashNoDefaultParametersParamNoDefault :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault]
+slashNoDefaultParametersParamNoDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramWithDefault field of hydra.python.syntax.SlashNoDefaultParameters
+slashNoDefaultParametersParamWithDefault :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault]
+slashNoDefaultParametersParamWithDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the slash field of hydra.python.syntax.SlashNoDefaultParameters
+slashNoDefaultParametersSlash :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm Syntax.SlashNoDefault
+slashNoDefaultParametersSlash x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "slash")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.SlashNoDefaultParameters
+slashNoDefaultParametersSlashNoDefaultParameters :: Typed.TypedName Syntax.SlashNoDefaultParameters
+slashNoDefaultParametersSlashNoDefaultParameters =
+    Typed.TypedName (Model.Name "hydra.python.syntax.SlashNoDefaultParameters")
+
+-- | DSL accessor for the starEtc field of hydra.python.syntax.SlashNoDefaultParameters
+slashNoDefaultParametersStarEtc :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc)
+slashNoDefaultParametersStarEtc x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "starEtc")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the paramNoDefault field of hydra.python.syntax.SlashNoDefaultParameters
+slashNoDefaultParametersWithParamNoDefault :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm Syntax.SlashNoDefaultParameters
+slashNoDefaultParametersWithParamNoDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "slash"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "slash")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "starEtc")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramWithDefault field of hydra.python.syntax.SlashNoDefaultParameters
+slashNoDefaultParametersWithParamWithDefault :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.SlashNoDefaultParameters
+slashNoDefaultParametersWithParamWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "slash"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "slash")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "starEtc")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the slash field of hydra.python.syntax.SlashNoDefaultParameters
+slashNoDefaultParametersWithSlash :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm Syntax.SlashNoDefault -> Typed.TypedTerm Syntax.SlashNoDefaultParameters
+slashNoDefaultParametersWithSlash original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "slash"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "starEtc")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the starEtc field of hydra.python.syntax.SlashNoDefaultParameters
+slashNoDefaultParametersWithStarEtc :: Typed.TypedTerm Syntax.SlashNoDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.SlashNoDefaultParameters
+slashNoDefaultParametersWithStarEtc original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "slash"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "slash")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashNoDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL name token for hydra.python.syntax.SlashNoDefault
+slashNoDefaultSlashNoDefault :: Typed.TypedName Syntax.SlashNoDefault
+slashNoDefaultSlashNoDefault = Typed.TypedName (Model.Name "hydra.python.syntax.SlashNoDefault")
+
+-- | DSL constructor for hydra.python.syntax.SlashWithDefault
+slashWithDefault :: Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.SlashWithDefault
+slashWithDefault paramNoDefault paramWithDefault =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramWithDefault)}]}))
+
+-- | DSL accessor for the paramNoDefault field of hydra.python.syntax.SlashWithDefault
+slashWithDefaultParamNoDefault :: Typed.TypedTerm Syntax.SlashWithDefault -> Typed.TypedTerm [Syntax.ParamNoDefault]
+slashWithDefaultParamNoDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefault"),
+        Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramWithDefault field of hydra.python.syntax.SlashWithDefault
+slashWithDefaultParamWithDefault :: Typed.TypedTerm Syntax.SlashWithDefault -> Typed.TypedTerm [Syntax.ParamWithDefault]
+slashWithDefaultParamWithDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefault"),
+        Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.python.syntax.SlashWithDefaultParameters
+slashWithDefaultParameters :: Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.SlashWithDefaultParameters
+slashWithDefaultParameters paramNoDefault paramWithDefault starEtc =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramNoDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm paramWithDefault)},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Typed.unTypedTerm starEtc)}]}))
+
+-- | DSL accessor for the paramNoDefault field of hydra.python.syntax.SlashWithDefaultParameters
+slashWithDefaultParametersParamNoDefault :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault]
+slashWithDefaultParametersParamNoDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the paramWithDefault field of hydra.python.syntax.SlashWithDefaultParameters
+slashWithDefaultParametersParamWithDefault :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault]
+slashWithDefaultParametersParamWithDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.SlashWithDefaultParameters
+slashWithDefaultParametersSlashWithDefaultParameters :: Typed.TypedName Syntax.SlashWithDefaultParameters
+slashWithDefaultParametersSlashWithDefaultParameters =
+    Typed.TypedName (Model.Name "hydra.python.syntax.SlashWithDefaultParameters")
+
+-- | DSL accessor for the starEtc field of hydra.python.syntax.SlashWithDefaultParameters
+slashWithDefaultParametersStarEtc :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc)
+slashWithDefaultParametersStarEtc x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+        Model.projectionFieldName = (Model.Name "starEtc")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the paramNoDefault field of hydra.python.syntax.SlashWithDefaultParameters
+slashWithDefaultParametersWithParamNoDefault :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm Syntax.SlashWithDefaultParameters
+slashWithDefaultParametersWithParamNoDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "starEtc")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramWithDefault field of hydra.python.syntax.SlashWithDefaultParameters
+slashWithDefaultParametersWithParamWithDefault :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.SlashWithDefaultParameters
+slashWithDefaultParametersWithParamWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "starEtc")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the starEtc field of hydra.python.syntax.SlashWithDefaultParameters
+slashWithDefaultParametersWithStarEtc :: Typed.TypedTerm Syntax.SlashWithDefaultParameters -> Typed.TypedTerm (Maybe Syntax.StarEtc) -> Typed.TypedTerm Syntax.SlashWithDefaultParameters
+slashWithDefaultParametersWithStarEtc original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefaultParameters"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "starEtc"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL name token for hydra.python.syntax.SlashWithDefault
+slashWithDefaultSlashWithDefault :: Typed.TypedName Syntax.SlashWithDefault
+slashWithDefaultSlashWithDefault = Typed.TypedName (Model.Name "hydra.python.syntax.SlashWithDefault")
+
+-- | DSL updater for the paramNoDefault field of hydra.python.syntax.SlashWithDefault
+slashWithDefaultWithParamNoDefault :: Typed.TypedTerm Syntax.SlashWithDefault -> Typed.TypedTerm [Syntax.ParamNoDefault] -> Typed.TypedTerm Syntax.SlashWithDefault
+slashWithDefaultWithParamNoDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefault"),
+              Model.projectionFieldName = (Model.Name "paramWithDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the paramWithDefault field of hydra.python.syntax.SlashWithDefault
+slashWithDefaultWithParamWithDefault :: Typed.TypedTerm Syntax.SlashWithDefault -> Typed.TypedTerm [Syntax.ParamWithDefault] -> Typed.TypedTerm Syntax.SlashWithDefault
+slashWithDefaultWithParamWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SlashWithDefault"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "paramNoDefault"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SlashWithDefault"),
+              Model.projectionFieldName = (Model.Name "paramNoDefault")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "paramWithDefault"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.SliceExpression
+sliceExpression :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SliceExpression
+sliceExpression start stop step =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "start"),
+          Model.fieldTerm = (Typed.unTypedTerm start)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stop"),
+          Model.fieldTerm = (Typed.unTypedTerm stop)},
+        Model.Field {
+          Model.fieldName = (Model.Name "step"),
+          Model.fieldTerm = (Typed.unTypedTerm step)}]}))
+
+-- | DSL name token for hydra.python.syntax.SliceExpression
+sliceExpressionSliceExpression :: Typed.TypedName Syntax.SliceExpression
+sliceExpressionSliceExpression = Typed.TypedName (Model.Name "hydra.python.syntax.SliceExpression")
+
+-- | DSL accessor for the start field of hydra.python.syntax.SliceExpression
+sliceExpressionStart :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression)
+sliceExpressionStart x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+        Model.projectionFieldName = (Model.Name "start")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the step field of hydra.python.syntax.SliceExpression
+sliceExpressionStep :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression)
+sliceExpressionStep x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+        Model.projectionFieldName = (Model.Name "step")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the stop field of hydra.python.syntax.SliceExpression
+sliceExpressionStop :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression)
+sliceExpressionStop x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+        Model.projectionFieldName = (Model.Name "stop")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the start field of hydra.python.syntax.SliceExpression
+sliceExpressionWithStart :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SliceExpression
+sliceExpressionWithStart original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "start"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "stop"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+              Model.projectionFieldName = (Model.Name "stop")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "step"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+              Model.projectionFieldName = (Model.Name "step")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the step field of hydra.python.syntax.SliceExpression
+sliceExpressionWithStep :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SliceExpression
+sliceExpressionWithStep original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "start"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+              Model.projectionFieldName = (Model.Name "start")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stop"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+              Model.projectionFieldName = (Model.Name "stop")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "step"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the stop field of hydra.python.syntax.SliceExpression
+sliceExpressionWithStop :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SliceExpression
+sliceExpressionWithStop original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "start"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+              Model.projectionFieldName = (Model.Name "start")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "stop"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "step"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SliceExpression"),
+              Model.projectionFieldName = (Model.Name "step")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the named variant of hydra.python.syntax.Slice
+sliceNamed :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Slice
+sliceNamed x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Slice"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "named"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the slice variant of hydra.python.syntax.SliceOrStarredExpression
+sliceOrStarredExpressionSlice :: Typed.TypedTerm Syntax.Slice -> Typed.TypedTerm Syntax.SliceOrStarredExpression
+sliceOrStarredExpressionSlice x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SliceOrStarredExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "slice"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.SliceOrStarredExpression
+sliceOrStarredExpressionSliceOrStarredExpression :: Typed.TypedName Syntax.SliceOrStarredExpression
+sliceOrStarredExpressionSliceOrStarredExpression =
+    Typed.TypedName (Model.Name "hydra.python.syntax.SliceOrStarredExpression")
+
+-- | DSL injection for the starred variant of hydra.python.syntax.SliceOrStarredExpression
+sliceOrStarredExpressionStarred :: Typed.TypedTerm Syntax.StarredExpression -> Typed.TypedTerm Syntax.SliceOrStarredExpression
+sliceOrStarredExpressionStarred x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SliceOrStarredExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starred"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.Slice
+sliceSlice :: Typed.TypedName Syntax.Slice
+sliceSlice = Typed.TypedName (Model.Name "hydra.python.syntax.Slice")
+
+-- | DSL injection for the slice_ variant of hydra.python.syntax.Slice
+sliceSlice_ :: Typed.TypedTerm Syntax.SliceExpression -> Typed.TypedTerm Syntax.Slice
+sliceSlice_ x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Slice"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "slice_"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.python.syntax.Slices
+slices :: Typed.TypedTerm Syntax.Slice -> Typed.TypedTerm [Syntax.SliceOrStarredExpression] -> Typed.TypedTerm Syntax.Slices
+slices head tail =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Slices"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "head"),
+          Model.fieldTerm = (Typed.unTypedTerm head)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tail"),
+          Model.fieldTerm = (Typed.unTypedTerm tail)}]}))
+
+-- | DSL accessor for the head field of hydra.python.syntax.Slices
+slicesHead :: Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm Syntax.Slice
+slicesHead x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Slices"),
+        Model.projectionFieldName = (Model.Name "head")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Slices
+slicesSlices :: Typed.TypedName Syntax.Slices
+slicesSlices = Typed.TypedName (Model.Name "hydra.python.syntax.Slices")
+
+-- | DSL accessor for the tail field of hydra.python.syntax.Slices
+slicesTail :: Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm [Syntax.SliceOrStarredExpression]
+slicesTail x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Slices"),
+        Model.projectionFieldName = (Model.Name "tail")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the head field of hydra.python.syntax.Slices
+slicesWithHead :: Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm Syntax.Slice -> Typed.TypedTerm Syntax.Slices
+slicesWithHead original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Slices"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "head"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "tail"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Slices"),
+              Model.projectionFieldName = (Model.Name "tail")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the tail field of hydra.python.syntax.Slices
+slicesWithTail :: Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm [Syntax.SliceOrStarredExpression] -> Typed.TypedTerm Syntax.Slices
+slicesWithTail original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Slices"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "head"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.Slices"),
+              Model.projectionFieldName = (Model.Name "head")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "tail"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for the hydra.python.syntax.StarAnnotation wrapper
+starAnnotation :: Typed.TypedTerm Syntax.StarExpression -> Typed.TypedTerm Syntax.StarAnnotation
+starAnnotation x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.StarAnnotation"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.StarAnnotation
+starAnnotationStarAnnotation :: Typed.TypedName Syntax.StarAnnotation
+starAnnotationStarAnnotation = Typed.TypedName (Model.Name "hydra.python.syntax.StarAnnotation")
+
+-- | DSL injection for the name variant of hydra.python.syntax.StarAtom
+starAtomName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.StarAtom
+starAtomName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarAtom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "name"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.StarAtom
+starAtomStarAtom :: Typed.TypedName Syntax.StarAtom
+starAtomStarAtom = Typed.TypedName (Model.Name "hydra.python.syntax.StarAtom")
+
+-- | DSL injection for the starTargetsListSeq variant of hydra.python.syntax.StarAtom
+starAtomStarTargetsListSeq :: Typed.TypedTerm (Maybe Syntax.StarTargetsListSeq) -> Typed.TypedTerm Syntax.StarAtom
+starAtomStarTargetsListSeq x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarAtom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starTargetsListSeq"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the starTargetsTupleSeq variant of hydra.python.syntax.StarAtom
+starAtomStarTargetsTupleSeq :: Typed.TypedTerm (Maybe Syntax.StarTargetsTupleSeq) -> Typed.TypedTerm Syntax.StarAtom
+starAtomStarTargetsTupleSeq x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarAtom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starTargetsTupleSeq"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the targetWithStarAtom variant of hydra.python.syntax.StarAtom
+starAtomTargetWithStarAtom :: Typed.TypedTerm Syntax.TargetWithStarAtom -> Typed.TypedTerm Syntax.StarAtom
+starAtomTargetWithStarAtom x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarAtom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "targetWithStarAtom"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the keywords variant of hydra.python.syntax.StarEtc
+starEtcKeywords :: Typed.TypedTerm Syntax.Keywords -> Typed.TypedTerm Syntax.StarEtc
+starEtcKeywords x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarEtc"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "keywords"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the starComma variant of hydra.python.syntax.StarEtc
+starEtcStarComma :: Typed.TypedTerm Syntax.CommaStarEtc -> Typed.TypedTerm Syntax.StarEtc
+starEtcStarComma x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarEtc"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starComma"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.StarEtc
+starEtcStarEtc :: Typed.TypedName Syntax.StarEtc
+starEtcStarEtc = Typed.TypedName (Model.Name "hydra.python.syntax.StarEtc")
+
+-- | DSL injection for the starNoDefault variant of hydra.python.syntax.StarEtc
+starEtcStarNoDefault :: Typed.TypedTerm Syntax.NoDefaultStarEtc -> Typed.TypedTerm Syntax.StarEtc
+starEtcStarNoDefault x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarEtc"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starNoDefault"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the starNoDefaultStarAnnotation variant of hydra.python.syntax.StarEtc
+starEtcStarNoDefaultStarAnnotation :: Typed.TypedTerm Syntax.NoDefaultStarAnnotationStarEtc -> Typed.TypedTerm Syntax.StarEtc
+starEtcStarNoDefaultStarAnnotation x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarEtc"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starNoDefaultStarAnnotation"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the simple variant of hydra.python.syntax.StarExpression
+starExpressionSimple :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.StarExpression
+starExpressionSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the star variant of hydra.python.syntax.StarExpression
+starExpressionStar :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.StarExpression
+starExpressionStar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "star"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.StarExpression
+starExpressionStarExpression :: Typed.TypedName Syntax.StarExpression
+starExpressionStarExpression = Typed.TypedName (Model.Name "hydra.python.syntax.StarExpression")
+
+-- | DSL injection for the simple variant of hydra.python.syntax.StarNamedExpression
+starNamedExpressionSimple :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.StarNamedExpression
+starNamedExpressionSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarNamedExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the star variant of hydra.python.syntax.StarNamedExpression
+starNamedExpressionStar :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.StarNamedExpression
+starNamedExpressionStar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarNamedExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "star"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.StarNamedExpression
+starNamedExpressionStarNamedExpression :: Typed.TypedName Syntax.StarNamedExpression
+starNamedExpressionStarNamedExpression = Typed.TypedName (Model.Name "hydra.python.syntax.StarNamedExpression")
+
+-- | DSL constructor for the hydra.python.syntax.StarNamedExpressions wrapper
+starNamedExpressions :: Typed.TypedTerm [Syntax.StarNamedExpression] -> Typed.TypedTerm Syntax.StarNamedExpressions
+starNamedExpressions x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.StarNamedExpressions"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.StarNamedExpressions
+starNamedExpressionsStarNamedExpressions :: Typed.TypedName Syntax.StarNamedExpressions
+starNamedExpressionsStarNamedExpressions = Typed.TypedName (Model.Name "hydra.python.syntax.StarNamedExpressions")
+
+-- | DSL injection for the capture variant of hydra.python.syntax.StarPattern
+starPatternCapture :: Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.StarPattern
+starPatternCapture x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "capture"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.StarPattern
+starPatternStarPattern :: Typed.TypedName Syntax.StarPattern
+starPatternStarPattern = Typed.TypedName (Model.Name "hydra.python.syntax.StarPattern")
+
+-- | DSL injection for the wildcard variant of hydra.python.syntax.StarPattern
+starPatternWildcard :: Typed.TypedTerm Syntax.StarPattern
+starPatternWildcard =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarPattern"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "wildcard"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.python.syntax.StarTarget
+starTargetStarTarget :: Typed.TypedName Syntax.StarTarget
+starTargetStarTarget = Typed.TypedName (Model.Name "hydra.python.syntax.StarTarget")
+
+-- | DSL injection for the starred variant of hydra.python.syntax.StarTarget
+starTargetStarred :: Typed.TypedTerm Syntax.StarTarget -> Typed.TypedTerm Syntax.StarTarget
+starTargetStarred x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarTarget"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starred"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the unstarred variant of hydra.python.syntax.StarTarget
+starTargetUnstarred :: Typed.TypedTerm Syntax.TargetWithStarAtom -> Typed.TypedTerm Syntax.StarTarget
+starTargetUnstarred x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StarTarget"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "unstarred"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.python.syntax.StarTargetsListSeq wrapper
+starTargetsListSeq :: Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.StarTargetsListSeq
+starTargetsListSeq x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.StarTargetsListSeq"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.StarTargetsListSeq
+starTargetsListSeqStarTargetsListSeq :: Typed.TypedName Syntax.StarTargetsListSeq
+starTargetsListSeqStarTargetsListSeq = Typed.TypedName (Model.Name "hydra.python.syntax.StarTargetsListSeq")
+
+-- | DSL constructor for the hydra.python.syntax.StarTargetsTupleSeq wrapper
+starTargetsTupleSeq :: Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.StarTargetsTupleSeq
+starTargetsTupleSeq x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.StarTargetsTupleSeq"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.StarTargetsTupleSeq
+starTargetsTupleSeqStarTargetsTupleSeq :: Typed.TypedName Syntax.StarTargetsTupleSeq
+starTargetsTupleSeqStarTargetsTupleSeq = Typed.TypedName (Model.Name "hydra.python.syntax.StarTargetsTupleSeq")
+
+-- | DSL constructor for hydra.python.syntax.StarTypeParameter
+starTypeParameter :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.StarExpression) -> Typed.TypedTerm Syntax.StarTypeParameter
+starTypeParameter name default_ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.StarTypeParameter"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm default_)}]}))
+
+-- | DSL accessor for the default field of hydra.python.syntax.StarTypeParameter
+starTypeParameterDefault :: Typed.TypedTerm Syntax.StarTypeParameter -> Typed.TypedTerm (Maybe Syntax.StarExpression)
+starTypeParameterDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.StarTypeParameter"),
+        Model.projectionFieldName = (Model.Name "default")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.python.syntax.StarTypeParameter
+starTypeParameterName :: Typed.TypedTerm Syntax.StarTypeParameter -> Typed.TypedTerm Syntax.Name
+starTypeParameterName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.StarTypeParameter"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.StarTypeParameter
+starTypeParameterStarTypeParameter :: Typed.TypedName Syntax.StarTypeParameter
+starTypeParameterStarTypeParameter = Typed.TypedName (Model.Name "hydra.python.syntax.StarTypeParameter")
+
+-- | DSL updater for the default field of hydra.python.syntax.StarTypeParameter
+starTypeParameterWithDefault :: Typed.TypedTerm Syntax.StarTypeParameter -> Typed.TypedTerm (Maybe Syntax.StarExpression) -> Typed.TypedTerm Syntax.StarTypeParameter
+starTypeParameterWithDefault original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.StarTypeParameter"),
+      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.python.syntax.StarTypeParameter"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "default"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the name field of hydra.python.syntax.StarTypeParameter
+starTypeParameterWithName :: Typed.TypedTerm Syntax.StarTypeParameter -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.StarTypeParameter
+starTypeParameterWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.StarTypeParameter"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          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.python.syntax.StarTypeParameter"),
+              Model.projectionFieldName = (Model.Name "default")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.python.syntax.StarredExpression wrapper
+starredExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.StarredExpression
+starredExpression x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.StarredExpression"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.StarredExpression
+starredExpressionStarredExpression :: Typed.TypedName Syntax.StarredExpression
+starredExpressionStarredExpression = Typed.TypedName (Model.Name "hydra.python.syntax.StarredExpression")
+
+-- | DSL injection for the annotated variant of hydra.python.syntax.Statement
+statementAnnotated :: Typed.TypedTerm Syntax.AnnotatedStatement -> Typed.TypedTerm Syntax.Statement
+statementAnnotated x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Statement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "annotated"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the compound variant of hydra.python.syntax.Statement
+statementCompound :: Typed.TypedTerm Syntax.CompoundStatement -> Typed.TypedTerm Syntax.Statement
+statementCompound x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Statement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "compound"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the simple variant of hydra.python.syntax.Statement
+statementSimple :: Typed.TypedTerm [Syntax.SimpleStatement] -> Typed.TypedTerm Syntax.Statement
+statementSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.Statement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.Statement
+statementStatement :: Typed.TypedName Syntax.Statement
+statementStatement = Typed.TypedName (Model.Name "hydra.python.syntax.Statement")
+
+-- | DSL constructor for hydra.python.syntax.String
+string :: Typed.TypedTerm String -> Typed.TypedTerm (Maybe Syntax.StringPrefix) -> Typed.TypedTerm Syntax.QuoteStyle -> Typed.TypedTerm Syntax.String_
+string value prefix quoteStyle =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.String"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm value)},
+        Model.Field {
+          Model.fieldName = (Model.Name "prefix"),
+          Model.fieldTerm = (Typed.unTypedTerm prefix)},
+        Model.Field {
+          Model.fieldName = (Model.Name "quoteStyle"),
+          Model.fieldTerm = (Typed.unTypedTerm quoteStyle)}]}))
+
+-- | DSL accessor for the prefix field of hydra.python.syntax.String
+stringPrefix :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm (Maybe Syntax.StringPrefix)
+stringPrefix x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.String"),
+        Model.projectionFieldName = (Model.Name "prefix")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL injection for the bytes variant of hydra.python.syntax.StringPrefix
+stringPrefixBytes :: Typed.TypedTerm Syntax.StringPrefix
+stringPrefixBytes =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StringPrefix"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "bytes"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the raw variant of hydra.python.syntax.StringPrefix
+stringPrefixRaw :: Typed.TypedTerm Syntax.StringPrefix
+stringPrefixRaw =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StringPrefix"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "raw"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the rawBytes variant of hydra.python.syntax.StringPrefix
+stringPrefixRawBytes :: Typed.TypedTerm Syntax.StringPrefix
+stringPrefixRawBytes =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StringPrefix"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "rawBytes"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.python.syntax.StringPrefix
+stringPrefixStringPrefix :: Typed.TypedName Syntax.StringPrefix
+stringPrefixStringPrefix = Typed.TypedName (Model.Name "hydra.python.syntax.StringPrefix")
+
+-- | DSL injection for the unicode variant of hydra.python.syntax.StringPrefix
+stringPrefixUnicode :: Typed.TypedTerm Syntax.StringPrefix
+stringPrefixUnicode =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.StringPrefix"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "unicode"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL accessor for the quoteStyle field of hydra.python.syntax.String
+stringQuoteStyle :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm Syntax.QuoteStyle
+stringQuoteStyle x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.String"),
+        Model.projectionFieldName = (Model.Name "quoteStyle")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.String
+stringString :: Typed.TypedName Syntax.String_
+stringString = Typed.TypedName (Model.Name "hydra.python.syntax.String")
+
+-- | DSL accessor for the value field of hydra.python.syntax.String
+stringValue :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm String
+stringValue x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.String"),
+        Model.projectionFieldName = (Model.Name "value")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the prefix field of hydra.python.syntax.String
+stringWithPrefix :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm (Maybe Syntax.StringPrefix) -> Typed.TypedTerm Syntax.String_
+stringWithPrefix original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.String"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.String"),
+              Model.projectionFieldName = (Model.Name "value")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "prefix"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "quoteStyle"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.String"),
+              Model.projectionFieldName = (Model.Name "quoteStyle")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the quoteStyle field of hydra.python.syntax.String
+stringWithQuoteStyle :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm Syntax.QuoteStyle -> Typed.TypedTerm Syntax.String_
+stringWithQuoteStyle original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.String"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.String"),
+              Model.projectionFieldName = (Model.Name "value")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "prefix"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.String"),
+              Model.projectionFieldName = (Model.Name "prefix")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "quoteStyle"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the value field of hydra.python.syntax.String
+stringWithValue :: Typed.TypedTerm Syntax.String_ -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.String_
+stringWithValue original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.String"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "value"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "prefix"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.String"),
+              Model.projectionFieldName = (Model.Name "prefix")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "quoteStyle"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.String"),
+              Model.projectionFieldName = (Model.Name "quoteStyle")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the simple variant of hydra.python.syntax.SubjectExpression
+subjectExpressionSimple :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.SubjectExpression
+subjectExpressionSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SubjectExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.SubjectExpression
+subjectExpressionSubjectExpression :: Typed.TypedName Syntax.SubjectExpression
+subjectExpressionSubjectExpression = Typed.TypedName (Model.Name "hydra.python.syntax.SubjectExpression")
+
+-- | DSL injection for the tuple variant of hydra.python.syntax.SubjectExpression
+subjectExpressionTuple :: Typed.TypedTerm [Syntax.StarNamedExpression] -> Typed.TypedTerm Syntax.SubjectExpression
+subjectExpressionTuple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SubjectExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "tuple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.python.syntax.Sum
+sum :: Typed.TypedTerm (Maybe Syntax.SumLhs) -> Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.Sum
+sum lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Sum"),
+      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.python.syntax.Sum
+sumLhs :: Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm (Maybe Syntax.SumLhs)
+sumLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Sum"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.python.syntax.SumLhs
+sumLhs2 :: Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.SumOp -> Typed.TypedTerm Syntax.SumLhs
+sumLhs2 operand operator =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SumLhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operand"),
+          Model.fieldTerm = (Typed.unTypedTerm operand)},
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          Model.fieldTerm = (Typed.unTypedTerm operator)}]}))
+
+-- | DSL accessor for the operand field of hydra.python.syntax.SumLhs
+sumLhsOperand :: Typed.TypedTerm Syntax.SumLhs -> Typed.TypedTerm Syntax.Sum
+sumLhsOperand x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SumLhs"),
+        Model.projectionFieldName = (Model.Name "operand")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the operator field of hydra.python.syntax.SumLhs
+sumLhsOperator :: Typed.TypedTerm Syntax.SumLhs -> Typed.TypedTerm Syntax.SumOp
+sumLhsOperator x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.SumLhs"),
+        Model.projectionFieldName = (Model.Name "operator")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.SumLhs
+sumLhsSumLhs :: Typed.TypedName Syntax.SumLhs
+sumLhsSumLhs = Typed.TypedName (Model.Name "hydra.python.syntax.SumLhs")
+
+-- | DSL updater for the operand field of hydra.python.syntax.SumLhs
+sumLhsWithOperand :: Typed.TypedTerm Syntax.SumLhs -> Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.SumLhs
+sumLhsWithOperand original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SumLhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operand"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SumLhs"),
+              Model.projectionFieldName = (Model.Name "operator")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the operator field of hydra.python.syntax.SumLhs
+sumLhsWithOperator :: Typed.TypedTerm Syntax.SumLhs -> Typed.TypedTerm Syntax.SumOp -> Typed.TypedTerm Syntax.SumLhs
+sumLhsWithOperator original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.SumLhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operand"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.SumLhs"),
+              Model.projectionFieldName = (Model.Name "operand")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the add variant of hydra.python.syntax.SumOp
+sumOpAdd :: Typed.TypedTerm Syntax.SumOp
+sumOpAdd =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SumOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "add"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the sub variant of hydra.python.syntax.SumOp
+sumOpSub :: Typed.TypedTerm Syntax.SumOp
+sumOpSub =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.SumOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "sub"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.python.syntax.SumOp
+sumOpSumOp :: Typed.TypedName Syntax.SumOp
+sumOpSumOp = Typed.TypedName (Model.Name "hydra.python.syntax.SumOp")
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.Sum
+sumRhs :: Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.Term
+sumRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Sum"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Sum
+sumSum :: Typed.TypedName Syntax.Sum
+sumSum = Typed.TypedName (Model.Name "hydra.python.syntax.Sum")
+
+-- | DSL updater for the lhs field of hydra.python.syntax.Sum
+sumWithLhs :: Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm (Maybe Syntax.SumLhs) -> Typed.TypedTerm Syntax.Sum
+sumWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Sum"),
+      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.python.syntax.Sum"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.Sum
+sumWithRhs :: Typed.TypedTerm Syntax.Sum -> Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.Sum
+sumWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Sum"),
+      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.python.syntax.Sum"),
+              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.python.syntax.TPrimaryAndArguments
+tPrimaryAndArguments :: Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm (Maybe Syntax.Args) -> Typed.TypedTerm Syntax.TPrimaryAndArguments
+tPrimaryAndArguments primary arguments =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndArguments"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Typed.unTypedTerm primary)},
+        Model.Field {
+          Model.fieldName = (Model.Name "arguments"),
+          Model.fieldTerm = (Typed.unTypedTerm arguments)}]}))
+
+-- | DSL accessor for the arguments field of hydra.python.syntax.TPrimaryAndArguments
+tPrimaryAndArgumentsArguments :: Typed.TypedTerm Syntax.TPrimaryAndArguments -> Typed.TypedTerm (Maybe Syntax.Args)
+tPrimaryAndArgumentsArguments x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndArguments"),
+        Model.projectionFieldName = (Model.Name "arguments")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the primary field of hydra.python.syntax.TPrimaryAndArguments
+tPrimaryAndArgumentsPrimary :: Typed.TypedTerm Syntax.TPrimaryAndArguments -> Typed.TypedTerm Syntax.TPrimary
+tPrimaryAndArgumentsPrimary x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndArguments"),
+        Model.projectionFieldName = (Model.Name "primary")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.TPrimaryAndArguments
+tPrimaryAndArgumentsTPrimaryAndArguments :: Typed.TypedName Syntax.TPrimaryAndArguments
+tPrimaryAndArgumentsTPrimaryAndArguments = Typed.TypedName (Model.Name "hydra.python.syntax.TPrimaryAndArguments")
+
+-- | DSL updater for the arguments field of hydra.python.syntax.TPrimaryAndArguments
+tPrimaryAndArgumentsWithArguments :: Typed.TypedTerm Syntax.TPrimaryAndArguments -> Typed.TypedTerm (Maybe Syntax.Args) -> Typed.TypedTerm Syntax.TPrimaryAndArguments
+tPrimaryAndArgumentsWithArguments original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndArguments"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndArguments"),
+              Model.projectionFieldName = (Model.Name "primary")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "arguments"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the primary field of hydra.python.syntax.TPrimaryAndArguments
+tPrimaryAndArgumentsWithPrimary :: Typed.TypedTerm Syntax.TPrimaryAndArguments -> Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.TPrimaryAndArguments
+tPrimaryAndArgumentsWithPrimary original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndArguments"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "arguments"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndArguments"),
+              Model.projectionFieldName = (Model.Name "arguments")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.TPrimaryAndGenexp
+tPrimaryAndGenexp :: Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.TPrimaryAndGenexp
+tPrimaryAndGenexp primary genexp =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndGenexp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Typed.unTypedTerm primary)},
+        Model.Field {
+          Model.fieldName = (Model.Name "genexp"),
+          Model.fieldTerm = (Typed.unTypedTerm genexp)}]}))
+
+-- | DSL accessor for the genexp field of hydra.python.syntax.TPrimaryAndGenexp
+tPrimaryAndGenexpGenexp :: Typed.TypedTerm Syntax.TPrimaryAndGenexp -> Typed.TypedTerm Syntax.Genexp
+tPrimaryAndGenexpGenexp x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndGenexp"),
+        Model.projectionFieldName = (Model.Name "genexp")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the primary field of hydra.python.syntax.TPrimaryAndGenexp
+tPrimaryAndGenexpPrimary :: Typed.TypedTerm Syntax.TPrimaryAndGenexp -> Typed.TypedTerm Syntax.TPrimary
+tPrimaryAndGenexpPrimary x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndGenexp"),
+        Model.projectionFieldName = (Model.Name "primary")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.TPrimaryAndGenexp
+tPrimaryAndGenexpTPrimaryAndGenexp :: Typed.TypedName Syntax.TPrimaryAndGenexp
+tPrimaryAndGenexpTPrimaryAndGenexp = Typed.TypedName (Model.Name "hydra.python.syntax.TPrimaryAndGenexp")
+
+-- | DSL updater for the genexp field of hydra.python.syntax.TPrimaryAndGenexp
+tPrimaryAndGenexpWithGenexp :: Typed.TypedTerm Syntax.TPrimaryAndGenexp -> Typed.TypedTerm Syntax.Genexp -> Typed.TypedTerm Syntax.TPrimaryAndGenexp
+tPrimaryAndGenexpWithGenexp original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndGenexp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndGenexp"),
+              Model.projectionFieldName = (Model.Name "primary")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "genexp"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the primary field of hydra.python.syntax.TPrimaryAndGenexp
+tPrimaryAndGenexpWithPrimary :: Typed.TypedTerm Syntax.TPrimaryAndGenexp -> Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.TPrimaryAndGenexp
+tPrimaryAndGenexpWithPrimary original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndGenexp"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "genexp"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndGenexp"),
+              Model.projectionFieldName = (Model.Name "genexp")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.TPrimaryAndName
+tPrimaryAndName :: Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TPrimaryAndName
+tPrimaryAndName primary name =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndName"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Typed.unTypedTerm primary)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))
+
+-- | DSL accessor for the name field of hydra.python.syntax.TPrimaryAndName
+tPrimaryAndNameName :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.Name
+tPrimaryAndNameName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndName"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the primary field of hydra.python.syntax.TPrimaryAndName
+tPrimaryAndNamePrimary :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.TPrimary
+tPrimaryAndNamePrimary x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndName"),
+        Model.projectionFieldName = (Model.Name "primary")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.TPrimaryAndName
+tPrimaryAndNameTPrimaryAndName :: Typed.TypedName Syntax.TPrimaryAndName
+tPrimaryAndNameTPrimaryAndName = Typed.TypedName (Model.Name "hydra.python.syntax.TPrimaryAndName")
+
+-- | DSL updater for the name field of hydra.python.syntax.TPrimaryAndName
+tPrimaryAndNameWithName :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TPrimaryAndName
+tPrimaryAndNameWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndName"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndName"),
+              Model.projectionFieldName = (Model.Name "primary")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the primary field of hydra.python.syntax.TPrimaryAndName
+tPrimaryAndNameWithPrimary :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.TPrimaryAndName
+tPrimaryAndNameWithPrimary original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndName"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          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.python.syntax.TPrimaryAndName"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.python.syntax.TPrimaryAndSlices
+tPrimaryAndSlices :: Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm Syntax.TPrimaryAndSlices
+tPrimaryAndSlices primary slices =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndSlices"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Typed.unTypedTerm primary)},
+        Model.Field {
+          Model.fieldName = (Model.Name "slices"),
+          Model.fieldTerm = (Typed.unTypedTerm slices)}]}))
+
+-- | DSL accessor for the primary field of hydra.python.syntax.TPrimaryAndSlices
+tPrimaryAndSlicesPrimary :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.TPrimary
+tPrimaryAndSlicesPrimary x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndSlices"),
+        Model.projectionFieldName = (Model.Name "primary")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the slices field of hydra.python.syntax.TPrimaryAndSlices
+tPrimaryAndSlicesSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.Slices
+tPrimaryAndSlicesSlices x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndSlices"),
+        Model.projectionFieldName = (Model.Name "slices")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.TPrimaryAndSlices
+tPrimaryAndSlicesTPrimaryAndSlices :: Typed.TypedName Syntax.TPrimaryAndSlices
+tPrimaryAndSlicesTPrimaryAndSlices = Typed.TypedName (Model.Name "hydra.python.syntax.TPrimaryAndSlices")
+
+-- | DSL updater for the primary field of hydra.python.syntax.TPrimaryAndSlices
+tPrimaryAndSlicesWithPrimary :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.TPrimary -> Typed.TypedTerm Syntax.TPrimaryAndSlices
+tPrimaryAndSlicesWithPrimary original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndSlices"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "slices"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndSlices"),
+              Model.projectionFieldName = (Model.Name "slices")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the slices field of hydra.python.syntax.TPrimaryAndSlices
+tPrimaryAndSlicesWithSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.Slices -> Typed.TypedTerm Syntax.TPrimaryAndSlices
+tPrimaryAndSlicesWithSlices original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndSlices"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "primary"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TPrimaryAndSlices"),
+              Model.projectionFieldName = (Model.Name "primary")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "slices"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the atom variant of hydra.python.syntax.TPrimary
+tPrimaryAtom :: Typed.TypedTerm Syntax.Atom -> Typed.TypedTerm Syntax.TPrimary
+tPrimaryAtom x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TPrimary"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "atom"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the primaryAndArguments variant of hydra.python.syntax.TPrimary
+tPrimaryPrimaryAndArguments :: Typed.TypedTerm Syntax.TPrimaryAndArguments -> Typed.TypedTerm Syntax.TPrimary
+tPrimaryPrimaryAndArguments x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TPrimary"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "primaryAndArguments"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the primaryAndGenexp variant of hydra.python.syntax.TPrimary
+tPrimaryPrimaryAndGenexp :: Typed.TypedTerm Syntax.TPrimaryAndGenexp -> Typed.TypedTerm Syntax.TPrimary
+tPrimaryPrimaryAndGenexp x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TPrimary"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "primaryAndGenexp"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the primaryAndName variant of hydra.python.syntax.TPrimary
+tPrimaryPrimaryAndName :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.TPrimary
+tPrimaryPrimaryAndName x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TPrimary"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "primaryAndName"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the primaryAndSlices variant of hydra.python.syntax.TPrimary
+tPrimaryPrimaryAndSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.TPrimary
+tPrimaryPrimaryAndSlices x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TPrimary"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "primaryAndSlices"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.TPrimary
+tPrimaryTPrimary :: Typed.TypedName Syntax.TPrimary
+tPrimaryTPrimary = Typed.TypedName (Model.Name "hydra.python.syntax.TPrimary")
+
+-- | DSL injection for the atom variant of hydra.python.syntax.TargetWithStarAtom
+targetWithStarAtomAtom :: Typed.TypedTerm Syntax.StarAtom -> Typed.TypedTerm Syntax.TargetWithStarAtom
+targetWithStarAtomAtom x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TargetWithStarAtom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "atom"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the project variant of hydra.python.syntax.TargetWithStarAtom
+targetWithStarAtomProject :: Typed.TypedTerm Syntax.TPrimaryAndName -> Typed.TypedTerm Syntax.TargetWithStarAtom
+targetWithStarAtomProject x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TargetWithStarAtom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "project"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the slices variant of hydra.python.syntax.TargetWithStarAtom
+targetWithStarAtomSlices :: Typed.TypedTerm Syntax.TPrimaryAndSlices -> Typed.TypedTerm Syntax.TargetWithStarAtom
+targetWithStarAtomSlices x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TargetWithStarAtom"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "slices"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.TargetWithStarAtom
+targetWithStarAtomTargetWithStarAtom :: Typed.TypedName Syntax.TargetWithStarAtom
+targetWithStarAtomTargetWithStarAtom = Typed.TypedName (Model.Name "hydra.python.syntax.TargetWithStarAtom")
+
+-- | DSL constructor for hydra.python.syntax.Term
+term :: Typed.TypedTerm (Maybe Syntax.TermLhs) -> Typed.TypedTerm Syntax.Factor -> Typed.TypedTerm Syntax.Term
+term lhs rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Term"),
+      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.python.syntax.Term
+termLhs :: Typed.TypedTerm Syntax.Term -> Typed.TypedTerm (Maybe Syntax.TermLhs)
+termLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Term"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.python.syntax.TermLhs
+termLhs2 :: Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.TermOp -> Typed.TypedTerm Syntax.TermLhs
+termLhs2 operand operator =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TermLhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operand"),
+          Model.fieldTerm = (Typed.unTypedTerm operand)},
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          Model.fieldTerm = (Typed.unTypedTerm operator)}]}))
+
+-- | DSL accessor for the operand field of hydra.python.syntax.TermLhs
+termLhsOperand :: Typed.TypedTerm Syntax.TermLhs -> Typed.TypedTerm Syntax.Term
+termLhsOperand x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TermLhs"),
+        Model.projectionFieldName = (Model.Name "operand")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the operator field of hydra.python.syntax.TermLhs
+termLhsOperator :: Typed.TypedTerm Syntax.TermLhs -> Typed.TypedTerm Syntax.TermOp
+termLhsOperator x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TermLhs"),
+        Model.projectionFieldName = (Model.Name "operator")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.TermLhs
+termLhsTermLhs :: Typed.TypedName Syntax.TermLhs
+termLhsTermLhs = Typed.TypedName (Model.Name "hydra.python.syntax.TermLhs")
+
+-- | DSL updater for the operand field of hydra.python.syntax.TermLhs
+termLhsWithOperand :: Typed.TypedTerm Syntax.TermLhs -> Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.TermLhs
+termLhsWithOperand original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TermLhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operand"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TermLhs"),
+              Model.projectionFieldName = (Model.Name "operator")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the operator field of hydra.python.syntax.TermLhs
+termLhsWithOperator :: Typed.TypedTerm Syntax.TermLhs -> Typed.TypedTerm Syntax.TermOp -> Typed.TypedTerm Syntax.TermLhs
+termLhsWithOperator original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TermLhs"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "operand"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TermLhs"),
+              Model.projectionFieldName = (Model.Name "operand")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "operator"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the div variant of hydra.python.syntax.TermOp
+termOpDiv :: Typed.TypedTerm Syntax.TermOp
+termOpDiv =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TermOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "div"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the floordiv variant of hydra.python.syntax.TermOp
+termOpFloordiv :: Typed.TypedTerm Syntax.TermOp
+termOpFloordiv =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TermOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "floordiv"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the matmul variant of hydra.python.syntax.TermOp
+termOpMatmul :: Typed.TypedTerm Syntax.TermOp
+termOpMatmul =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TermOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "matmul"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the mod variant of hydra.python.syntax.TermOp
+termOpMod :: Typed.TypedTerm Syntax.TermOp
+termOpMod =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TermOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "mod"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the mul variant of hydra.python.syntax.TermOp
+termOpMul :: Typed.TypedTerm Syntax.TermOp
+termOpMul =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TermOp"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "mul"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.python.syntax.TermOp
+termOpTermOp :: Typed.TypedName Syntax.TermOp
+termOpTermOp = Typed.TypedName (Model.Name "hydra.python.syntax.TermOp")
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.Term
+termRhs :: Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.Factor
+termRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.Term"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Term
+termTerm :: Typed.TypedName Syntax.Term
+termTerm = Typed.TypedName (Model.Name "hydra.python.syntax.Term")
+
+-- | DSL updater for the lhs field of hydra.python.syntax.Term
+termWithLhs :: Typed.TypedTerm Syntax.Term -> Typed.TypedTerm (Maybe Syntax.TermLhs) -> Typed.TypedTerm Syntax.Term
+termWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Term"),
+      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.python.syntax.Term"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.Term
+termWithRhs :: Typed.TypedTerm Syntax.Term -> Typed.TypedTerm Syntax.Factor -> Typed.TypedTerm Syntax.Term
+termWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.Term"),
+      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.python.syntax.Term"),
+              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.python.syntax.TryExceptStarStatement
+tryExceptStarStatement :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm [Syntax.ExceptStarBlock] -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStarStatement
+tryExceptStarStatement body excepts else_ finally =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)},
+        Model.Field {
+          Model.fieldName = (Model.Name "excepts"),
+          Model.fieldTerm = (Typed.unTypedTerm excepts)},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Typed.unTypedTerm else_)},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Typed.unTypedTerm finally)}]}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.TryExceptStarStatement
+tryExceptStarStatementBody :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm Syntax.Block
+tryExceptStarStatementBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the else field of hydra.python.syntax.TryExceptStarStatement
+tryExceptStarStatementElse :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm (Maybe Syntax.Block)
+tryExceptStarStatementElse x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+        Model.projectionFieldName = (Model.Name "else")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the excepts field of hydra.python.syntax.TryExceptStarStatement
+tryExceptStarStatementExcepts :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm [Syntax.ExceptStarBlock]
+tryExceptStarStatementExcepts x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+        Model.projectionFieldName = (Model.Name "excepts")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the finally field of hydra.python.syntax.TryExceptStarStatement
+tryExceptStarStatementFinally :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm (Maybe Syntax.Block)
+tryExceptStarStatementFinally x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+        Model.projectionFieldName = (Model.Name "finally")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.TryExceptStarStatement
+tryExceptStarStatementTryExceptStarStatement :: Typed.TypedName Syntax.TryExceptStarStatement
+tryExceptStarStatementTryExceptStarStatement = Typed.TypedName (Model.Name "hydra.python.syntax.TryExceptStarStatement")
+
+-- | DSL updater for the body field of hydra.python.syntax.TryExceptStarStatement
+tryExceptStarStatementWithBody :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryExceptStarStatement
+tryExceptStarStatementWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "excepts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "excepts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "finally")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the else field of hydra.python.syntax.TryExceptStarStatement
+tryExceptStarStatementWithElse :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStarStatement
+tryExceptStarStatementWithElse original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+      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.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "excepts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "excepts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "finally")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the excepts field of hydra.python.syntax.TryExceptStarStatement
+tryExceptStarStatementWithExcepts :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm [Syntax.ExceptStarBlock] -> Typed.TypedTerm Syntax.TryExceptStarStatement
+tryExceptStarStatementWithExcepts original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+      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.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "excepts"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "finally")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the finally field of hydra.python.syntax.TryExceptStarStatement
+tryExceptStarStatementWithFinally :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStarStatement
+tryExceptStarStatementWithFinally original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+      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.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "excepts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "excepts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStarStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.TryExceptStatement
+tryExceptStatement :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm [Syntax.ExceptBlock] -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStatement
+tryExceptStatement body excepts else_ finally =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)},
+        Model.Field {
+          Model.fieldName = (Model.Name "excepts"),
+          Model.fieldTerm = (Typed.unTypedTerm excepts)},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Typed.unTypedTerm else_)},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Typed.unTypedTerm finally)}]}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.TryExceptStatement
+tryExceptStatementBody :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm Syntax.Block
+tryExceptStatementBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the else field of hydra.python.syntax.TryExceptStatement
+tryExceptStatementElse :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm (Maybe Syntax.Block)
+tryExceptStatementElse x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+        Model.projectionFieldName = (Model.Name "else")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the excepts field of hydra.python.syntax.TryExceptStatement
+tryExceptStatementExcepts :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm [Syntax.ExceptBlock]
+tryExceptStatementExcepts x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+        Model.projectionFieldName = (Model.Name "excepts")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the finally field of hydra.python.syntax.TryExceptStatement
+tryExceptStatementFinally :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm (Maybe Syntax.Block)
+tryExceptStatementFinally x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+        Model.projectionFieldName = (Model.Name "finally")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.TryExceptStatement
+tryExceptStatementTryExceptStatement :: Typed.TypedName Syntax.TryExceptStatement
+tryExceptStatementTryExceptStatement = Typed.TypedName (Model.Name "hydra.python.syntax.TryExceptStatement")
+
+-- | DSL updater for the body field of hydra.python.syntax.TryExceptStatement
+tryExceptStatementWithBody :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryExceptStatement
+tryExceptStatementWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "excepts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "excepts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "finally")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the else field of hydra.python.syntax.TryExceptStatement
+tryExceptStatementWithElse :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStatement
+tryExceptStatementWithElse original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+      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.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "excepts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "excepts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "finally")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the excepts field of hydra.python.syntax.TryExceptStatement
+tryExceptStatementWithExcepts :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm [Syntax.ExceptBlock] -> Typed.TypedTerm Syntax.TryExceptStatement
+tryExceptStatementWithExcepts original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+      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.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "excepts"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "finally")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the finally field of hydra.python.syntax.TryExceptStatement
+tryExceptStatementWithFinally :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.TryExceptStatement
+tryExceptStatementWithFinally original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+      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.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "excepts"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "excepts")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryExceptStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.TryFinallyStatement
+tryFinallyStatement :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryFinallyStatement
+tryFinallyStatement body finally =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryFinallyStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Typed.unTypedTerm finally)}]}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.TryFinallyStatement
+tryFinallyStatementBody :: Typed.TypedTerm Syntax.TryFinallyStatement -> Typed.TypedTerm Syntax.Block
+tryFinallyStatementBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryFinallyStatement"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the finally field of hydra.python.syntax.TryFinallyStatement
+tryFinallyStatementFinally :: Typed.TypedTerm Syntax.TryFinallyStatement -> Typed.TypedTerm Syntax.Block
+tryFinallyStatementFinally x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryFinallyStatement"),
+        Model.projectionFieldName = (Model.Name "finally")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.TryFinallyStatement
+tryFinallyStatementTryFinallyStatement :: Typed.TypedName Syntax.TryFinallyStatement
+tryFinallyStatementTryFinallyStatement = Typed.TypedName (Model.Name "hydra.python.syntax.TryFinallyStatement")
+
+-- | DSL updater for the body field of hydra.python.syntax.TryFinallyStatement
+tryFinallyStatementWithBody :: Typed.TypedTerm Syntax.TryFinallyStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryFinallyStatement
+tryFinallyStatementWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryFinallyStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TryFinallyStatement"),
+              Model.projectionFieldName = (Model.Name "finally")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the finally field of hydra.python.syntax.TryFinallyStatement
+tryFinallyStatementWithFinally :: Typed.TypedTerm Syntax.TryFinallyStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryFinallyStatement
+tryFinallyStatementWithFinally original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TryFinallyStatement"),
+      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.python.syntax.TryFinallyStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "finally"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the except variant of hydra.python.syntax.TryStatement
+tryStatementExcept :: Typed.TypedTerm Syntax.TryExceptStatement -> Typed.TypedTerm Syntax.TryStatement
+tryStatementExcept x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TryStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "except"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the exceptStar variant of hydra.python.syntax.TryStatement
+tryStatementExceptStar :: Typed.TypedTerm Syntax.TryExceptStarStatement -> Typed.TypedTerm Syntax.TryStatement
+tryStatementExceptStar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TryStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "exceptStar"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the finally variant of hydra.python.syntax.TryStatement
+tryStatementFinally :: Typed.TypedTerm Syntax.TryFinallyStatement -> Typed.TypedTerm Syntax.TryStatement
+tryStatementFinally x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TryStatement"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "finally"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.TryStatement
+tryStatementTryStatement :: Typed.TypedName Syntax.TryStatement
+tryStatementTryStatement = Typed.TypedName (Model.Name "hydra.python.syntax.TryStatement")
+
+-- | DSL constructor for the hydra.python.syntax.Tuple wrapper
+tuple :: Typed.TypedTerm [Syntax.StarNamedExpression] -> Typed.TypedTerm Syntax.Tuple
+tuple x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.Tuple"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.Tuple
+tupleTuple :: Typed.TypedName Syntax.Tuple
+tupleTuple = Typed.TypedName (Model.Name "hydra.python.syntax.Tuple")
+
+-- | DSL constructor for hydra.python.syntax.TypeAlias
+typeAlias :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeAlias
+typeAlias name typeParams expression =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TypeAlias"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Typed.unTypedTerm typeParams)},
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm expression)}]}))
+
+-- | DSL accessor for the expression field of hydra.python.syntax.TypeAlias
+typeAliasExpression :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm Syntax.Expression
+typeAliasExpression x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypeAlias"),
+        Model.projectionFieldName = (Model.Name "expression")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.python.syntax.TypeAlias
+typeAliasName :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm Syntax.Name
+typeAliasName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypeAlias"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.TypeAlias
+typeAliasTypeAlias :: Typed.TypedName Syntax.TypeAlias
+typeAliasTypeAlias = Typed.TypedName (Model.Name "hydra.python.syntax.TypeAlias")
+
+-- | DSL accessor for the typeParams field of hydra.python.syntax.TypeAlias
+typeAliasTypeParams :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm [Syntax.TypeParameter]
+typeAliasTypeParams x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypeAlias"),
+        Model.projectionFieldName = (Model.Name "typeParams")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the expression field of hydra.python.syntax.TypeAlias
+typeAliasWithExpression :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeAlias
+typeAliasWithExpression original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TypeAlias"),
+      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.python.syntax.TypeAlias"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypeAlias"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the name field of hydra.python.syntax.TypeAlias
+typeAliasWithName :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TypeAlias
+typeAliasWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TypeAlias"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypeAlias"),
+              Model.projectionFieldName = (Model.Name "typeParams")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypeAlias"),
+              Model.projectionFieldName = (Model.Name "expression")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the typeParams field of hydra.python.syntax.TypeAlias
+typeAliasWithTypeParams :: Typed.TypedTerm Syntax.TypeAlias -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.TypeAlias
+typeAliasWithTypeParams original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TypeAlias"),
+      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.python.syntax.TypeAlias"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeParams"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypeAlias"),
+              Model.projectionFieldName = (Model.Name "expression")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.python.syntax.TypeComment wrapper
+typeComment :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.TypeComment
+typeComment x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.TypeComment"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.TypeComment
+typeCommentTypeComment :: Typed.TypedName Syntax.TypeComment
+typeCommentTypeComment = Typed.TypedName (Model.Name "hydra.python.syntax.TypeComment")
+
+-- | DSL injection for the doubleStarredExpression variant of hydra.python.syntax.TypeExpression
+typeExpressionDoubleStarredExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeExpression
+typeExpressionDoubleStarredExpression x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TypeExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "doubleStarredExpression"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the expression variant of hydra.python.syntax.TypeExpression
+typeExpressionExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeExpression
+typeExpressionExpression x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TypeExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "expression"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the starredExpression variant of hydra.python.syntax.TypeExpression
+typeExpressionStarredExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeExpression
+typeExpressionStarredExpression x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TypeExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "starredExpression"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.TypeExpression
+typeExpressionTypeExpression :: Typed.TypedName Syntax.TypeExpression
+typeExpressionTypeExpression = Typed.TypedName (Model.Name "hydra.python.syntax.TypeExpression")
+
+-- | DSL injection for the doubleStar variant of hydra.python.syntax.TypeParameter
+typeParameterDoubleStar :: Typed.TypedTerm Syntax.DoubleStarTypeParameter -> Typed.TypedTerm Syntax.TypeParameter
+typeParameterDoubleStar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TypeParameter"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "doubleStar"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the simple variant of hydra.python.syntax.TypeParameter
+typeParameterSimple :: Typed.TypedTerm Syntax.SimpleTypeParameter -> Typed.TypedTerm Syntax.TypeParameter
+typeParameterSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TypeParameter"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the star variant of hydra.python.syntax.TypeParameter
+typeParameterStar :: Typed.TypedTerm Syntax.StarTypeParameter -> Typed.TypedTerm Syntax.TypeParameter
+typeParameterStar x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.TypeParameter"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "star"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.TypeParameter
+typeParameterTypeParameter :: Typed.TypedName Syntax.TypeParameter
+typeParameterTypeParameter = Typed.TypedName (Model.Name "hydra.python.syntax.TypeParameter")
+
+-- | DSL constructor for hydra.python.syntax.TypedAssignment
+typedAssignment :: Typed.TypedTerm Syntax.SingleTarget -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.AnnotatedRhs) -> Typed.TypedTerm Syntax.TypedAssignment
+typedAssignment lhs type_ rhs =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TypedAssignment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm lhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "type"),
+          Model.fieldTerm = (Typed.unTypedTerm type_)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))
+
+-- | DSL accessor for the lhs field of hydra.python.syntax.TypedAssignment
+typedAssignmentLhs :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm Syntax.SingleTarget
+typedAssignmentLhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypedAssignment"),
+        Model.projectionFieldName = (Model.Name "lhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.TypedAssignment
+typedAssignmentRhs :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm (Maybe Syntax.AnnotatedRhs)
+typedAssignmentRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypedAssignment"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the type field of hydra.python.syntax.TypedAssignment
+typedAssignmentType :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm Syntax.Expression
+typedAssignmentType x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypedAssignment"),
+        Model.projectionFieldName = (Model.Name "type")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.TypedAssignment
+typedAssignmentTypedAssignment :: Typed.TypedName Syntax.TypedAssignment
+typedAssignmentTypedAssignment = Typed.TypedName (Model.Name "hydra.python.syntax.TypedAssignment")
+
+-- | DSL updater for the lhs field of hydra.python.syntax.TypedAssignment
+typedAssignmentWithLhs :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm Syntax.SingleTarget -> Typed.TypedTerm Syntax.TypedAssignment
+typedAssignmentWithLhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TypedAssignment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "type"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypedAssignment"),
+              Model.projectionFieldName = (Model.Name "type")})),
+            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.python.syntax.TypedAssignment"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the rhs field of hydra.python.syntax.TypedAssignment
+typedAssignmentWithRhs :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm (Maybe Syntax.AnnotatedRhs) -> Typed.TypedTerm Syntax.TypedAssignment
+typedAssignmentWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TypedAssignment"),
+      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.python.syntax.TypedAssignment"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "type"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.TypedAssignment"),
+              Model.projectionFieldName = (Model.Name "type")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the type field of hydra.python.syntax.TypedAssignment
+typedAssignmentWithType :: Typed.TypedTerm Syntax.TypedAssignment -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypedAssignment
+typedAssignmentWithType original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.TypedAssignment"),
+      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.python.syntax.TypedAssignment"),
+              Model.projectionFieldName = (Model.Name "lhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "type"),
+          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.python.syntax.TypedAssignment"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Annotation
+unAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.Expression
+unAnnotation x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Annotation")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Attribute
+unAttribute :: Typed.TypedTerm Syntax.Attribute -> Typed.TypedTerm [Syntax.Name]
+unAttribute x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Attribute")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.CapturePattern
+unCapturePattern :: Typed.TypedTerm Syntax.CapturePattern -> Typed.TypedTerm Syntax.PatternCaptureTarget
+unCapturePattern x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.CapturePattern")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Conjunction
+unConjunction :: Typed.TypedTerm Syntax.Conjunction -> Typed.TypedTerm [Syntax.Inversion]
+unConjunction x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Conjunction")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Decorators
+unDecorators :: Typed.TypedTerm Syntax.Decorators -> Typed.TypedTerm [Syntax.NamedExpression]
+unDecorators x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Decorators")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Default
+unDefault :: Typed.TypedTerm Syntax.Default -> Typed.TypedTerm Syntax.Expression
+unDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Default")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.DelStatement
+unDelStatement :: Typed.TypedTerm Syntax.DelStatement -> Typed.TypedTerm Syntax.DelTargets
+unDelStatement x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.DelStatement")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.DelTargets
+unDelTargets :: Typed.TypedTerm Syntax.DelTargets -> Typed.TypedTerm [Syntax.DelTarget]
+unDelTargets x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.DelTargets")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Dict
+unDict :: Typed.TypedTerm Syntax.Dict -> Typed.TypedTerm [Syntax.DoubleStarredKvpair]
+unDict x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Dict")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Disjunction
+unDisjunction :: Typed.TypedTerm Syntax.Disjunction -> Typed.TypedTerm [Syntax.Conjunction]
+unDisjunction x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Disjunction")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.DottedName
+unDottedName :: Typed.TypedTerm Syntax.DottedName -> Typed.TypedTerm [Syntax.Name]
+unDottedName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.DottedName")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.DoubleStarPattern
+unDoubleStarPattern :: Typed.TypedTerm Syntax.DoubleStarPattern -> Typed.TypedTerm Syntax.PatternCaptureTarget
+unDoubleStarPattern x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.DoubleStarPattern")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Eval
+unEval :: Typed.TypedTerm Syntax.Eval -> Typed.TypedTerm [Syntax.Expression]
+unEval x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Eval")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.File
+unFile :: Typed.TypedTerm Syntax.File -> Typed.TypedTerm [Syntax.Statement]
+unFile x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.File")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.ForIfClauses
+unForIfClauses :: Typed.TypedTerm Syntax.ForIfClauses -> Typed.TypedTerm [Syntax.ForIfClause]
+unForIfClauses x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.ForIfClauses")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.FuncTypeComment
+unFuncTypeComment :: Typed.TypedTerm Syntax.FuncTypeComment -> Typed.TypedTerm Syntax.TypeComment
+unFuncTypeComment x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.FuncTypeComment")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.GroupPattern
+unGroupPattern :: Typed.TypedTerm Syntax.GroupPattern -> Typed.TypedTerm Syntax.Pattern
+unGroupPattern x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.GroupPattern")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Guard
+unGuard :: Typed.TypedTerm Syntax.Guard -> Typed.TypedTerm Syntax.NamedExpression
+unGuard x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Guard")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.ImaginaryNumber
+unImaginaryNumber :: Typed.TypedTerm Syntax.ImaginaryNumber -> Typed.TypedTerm Double
+unImaginaryNumber x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.ImaginaryNumber")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.ImportName
+unImportName :: Typed.TypedTerm Syntax.ImportName -> Typed.TypedTerm [Syntax.DottedAsName]
+unImportName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.ImportName")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Interactive
+unInteractive :: Typed.TypedTerm Syntax.Interactive -> Typed.TypedTerm Syntax.Statement
+unInteractive x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Interactive")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.ItemsPattern
+unItemsPattern :: Typed.TypedTerm Syntax.ItemsPattern -> Typed.TypedTerm [Syntax.KeyValuePattern]
+unItemsPattern x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.ItemsPattern")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.KeywordPatterns
+unKeywordPatterns :: Typed.TypedTerm Syntax.KeywordPatterns -> Typed.TypedTerm [Syntax.KeywordPattern]
+unKeywordPatterns x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.KeywordPatterns")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Keywords
+unKeywords :: Typed.TypedTerm Syntax.Keywords -> Typed.TypedTerm Syntax.ParamNoDefault
+unKeywords x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Keywords")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.LambdaKwds
+unLambdaKwds :: Typed.TypedTerm Syntax.LambdaKwds -> Typed.TypedTerm Syntax.LambdaParamNoDefault
+unLambdaKwds x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.LambdaKwds")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.LambdaParamNoDefault
+unLambdaParamNoDefault :: Typed.TypedTerm Syntax.LambdaParamNoDefault -> Typed.TypedTerm Syntax.Name
+unLambdaParamNoDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.LambdaParamNoDefault")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.List
+unList :: Typed.TypedTerm Syntax.List -> Typed.TypedTerm [Syntax.StarNamedExpression]
+unList x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.List")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.MaybeSequencePattern
+unMaybeSequencePattern :: Typed.TypedTerm Syntax.MaybeSequencePattern -> Typed.TypedTerm [Syntax.MaybeStarPattern]
+unMaybeSequencePattern x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.MaybeSequencePattern")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Module
+unModule :: Typed.TypedTerm Syntax.Module -> Typed.TypedTerm [[Syntax.Statement]]
+unModule x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Module")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Name
+unName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm String
+unName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Name")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.NameOrAttribute
+unNameOrAttribute :: Typed.TypedTerm Syntax.NameOrAttribute -> Typed.TypedTerm [Syntax.Name]
+unNameOrAttribute x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.NameOrAttribute")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.OrPattern
+unOrPattern :: Typed.TypedTerm Syntax.OrPattern -> Typed.TypedTerm [Syntax.ClosedPattern]
+unOrPattern x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.OrPattern")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.PatternCaptureTarget
+unPatternCaptureTarget :: Typed.TypedTerm Syntax.PatternCaptureTarget -> Typed.TypedTerm Syntax.Name
+unPatternCaptureTarget x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.PatternCaptureTarget")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.PositionalPatterns
+unPositionalPatterns :: Typed.TypedTerm Syntax.PositionalPatterns -> Typed.TypedTerm [Syntax.Pattern]
+unPositionalPatterns x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.PositionalPatterns")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.RaiseStatement
+unRaiseStatement :: Typed.TypedTerm Syntax.RaiseStatement -> Typed.TypedTerm (Maybe Syntax.RaiseExpression)
+unRaiseStatement x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.RaiseStatement")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.ReturnStatement
+unReturnStatement :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm [Syntax.StarExpression]
+unReturnStatement x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.ReturnStatement")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Set
+unSet :: Typed.TypedTerm Syntax.Set -> Typed.TypedTerm [Syntax.StarNamedExpression]
+unSet x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Set")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.SlashNoDefault
+unSlashNoDefault :: Typed.TypedTerm Syntax.SlashNoDefault -> Typed.TypedTerm [Syntax.ParamNoDefault]
+unSlashNoDefault x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.SlashNoDefault")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.StarAnnotation
+unStarAnnotation :: Typed.TypedTerm Syntax.StarAnnotation -> Typed.TypedTerm Syntax.StarExpression
+unStarAnnotation x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.StarAnnotation")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.StarNamedExpressions
+unStarNamedExpressions :: Typed.TypedTerm Syntax.StarNamedExpressions -> Typed.TypedTerm [Syntax.StarNamedExpression]
+unStarNamedExpressions x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.StarNamedExpressions")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.StarTargetsListSeq
+unStarTargetsListSeq :: Typed.TypedTerm Syntax.StarTargetsListSeq -> Typed.TypedTerm [Syntax.StarTarget]
+unStarTargetsListSeq x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.StarTargetsListSeq")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.StarTargetsTupleSeq
+unStarTargetsTupleSeq :: Typed.TypedTerm Syntax.StarTargetsTupleSeq -> Typed.TypedTerm [Syntax.StarTarget]
+unStarTargetsTupleSeq x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.StarTargetsTupleSeq")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.StarredExpression
+unStarredExpression :: Typed.TypedTerm Syntax.StarredExpression -> Typed.TypedTerm Syntax.Expression
+unStarredExpression x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.StarredExpression")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.Tuple
+unTuple :: Typed.TypedTerm Syntax.Tuple -> Typed.TypedTerm [Syntax.StarNamedExpression]
+unTuple x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.Tuple")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.TypeComment
+unTypeComment :: Typed.TypedTerm Syntax.TypeComment -> Typed.TypedTerm String
+unTypeComment x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.TypeComment")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.ValuePattern
+unValuePattern :: Typed.TypedTerm Syntax.ValuePattern -> Typed.TypedTerm Syntax.Attribute
+unValuePattern x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.ValuePattern")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.python.syntax.YieldStatement
+unYieldStatement :: Typed.TypedTerm Syntax.YieldStatement -> Typed.TypedTerm Syntax.YieldExpression
+unYieldStatement x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.python.syntax.YieldStatement")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL constructor for hydra.python.syntax.UntypedAssignment
+untypedAssignment :: Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.AnnotatedRhs -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.UntypedAssignment
+untypedAssignment targets rhs typeComment =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.UntypedAssignment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Typed.unTypedTerm targets)},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm rhs)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm typeComment)}]}))
+
+-- | DSL accessor for the rhs field of hydra.python.syntax.UntypedAssignment
+untypedAssignmentRhs :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm Syntax.AnnotatedRhs
+untypedAssignmentRhs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.UntypedAssignment"),
+        Model.projectionFieldName = (Model.Name "rhs")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the targets field of hydra.python.syntax.UntypedAssignment
+untypedAssignmentTargets :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm [Syntax.StarTarget]
+untypedAssignmentTargets x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.UntypedAssignment"),
+        Model.projectionFieldName = (Model.Name "targets")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the typeComment field of hydra.python.syntax.UntypedAssignment
+untypedAssignmentTypeComment :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm (Maybe Syntax.TypeComment)
+untypedAssignmentTypeComment x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.UntypedAssignment"),
+        Model.projectionFieldName = (Model.Name "typeComment")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.UntypedAssignment
+untypedAssignmentUntypedAssignment :: Typed.TypedName Syntax.UntypedAssignment
+untypedAssignmentUntypedAssignment = Typed.TypedName (Model.Name "hydra.python.syntax.UntypedAssignment")
+
+-- | DSL updater for the rhs field of hydra.python.syntax.UntypedAssignment
+untypedAssignmentWithRhs :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm Syntax.AnnotatedRhs -> Typed.TypedTerm Syntax.UntypedAssignment
+untypedAssignmentWithRhs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.UntypedAssignment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.UntypedAssignment"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "rhs"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.UntypedAssignment"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the targets field of hydra.python.syntax.UntypedAssignment
+untypedAssignmentWithTargets :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm [Syntax.StarTarget] -> Typed.TypedTerm Syntax.UntypedAssignment
+untypedAssignmentWithTargets original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.UntypedAssignment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          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.python.syntax.UntypedAssignment"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.UntypedAssignment"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the typeComment field of hydra.python.syntax.UntypedAssignment
+untypedAssignmentWithTypeComment :: Typed.TypedTerm Syntax.UntypedAssignment -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.UntypedAssignment
+untypedAssignmentWithTypeComment original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.UntypedAssignment"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "targets"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.UntypedAssignment"),
+              Model.projectionFieldName = (Model.Name "targets")})),
+            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.python.syntax.UntypedAssignment"),
+              Model.projectionFieldName = (Model.Name "rhs")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for the hydra.python.syntax.ValuePattern wrapper
+valuePattern :: Typed.TypedTerm Syntax.Attribute -> Typed.TypedTerm Syntax.ValuePattern
+valuePattern x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.ValuePattern"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.ValuePattern
+valuePatternValuePattern :: Typed.TypedName Syntax.ValuePattern
+valuePatternValuePattern = Typed.TypedName (Model.Name "hydra.python.syntax.ValuePattern")
+
+-- | DSL constructor for hydra.python.syntax.WhileStatement
+whileStatement :: Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.WhileStatement
+whileStatement condition body else_ =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WhileStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "condition"),
+          Model.fieldTerm = (Typed.unTypedTerm condition)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Typed.unTypedTerm else_)}]}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.WhileStatement
+whileStatementBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Block
+whileStatementBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.WhileStatement"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the condition field of hydra.python.syntax.WhileStatement
+whileStatementCondition :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.NamedExpression
+whileStatementCondition x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.WhileStatement"),
+        Model.projectionFieldName = (Model.Name "condition")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the else field of hydra.python.syntax.WhileStatement
+whileStatementElse :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm (Maybe Syntax.Block)
+whileStatementElse x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.WhileStatement"),
+        Model.projectionFieldName = (Model.Name "else")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.WhileStatement
+whileStatementWhileStatement :: Typed.TypedName Syntax.WhileStatement
+whileStatementWhileStatement = Typed.TypedName (Model.Name "hydra.python.syntax.WhileStatement")
+
+-- | DSL updater for the body field of hydra.python.syntax.WhileStatement
+whileStatementWithBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.WhileStatement
+whileStatementWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WhileStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "condition"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WhileStatement"),
+              Model.projectionFieldName = (Model.Name "condition")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WhileStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the condition field of hydra.python.syntax.WhileStatement
+whileStatementWithCondition :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.NamedExpression -> Typed.TypedTerm Syntax.WhileStatement
+whileStatementWithCondition original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WhileStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "condition"),
+          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.python.syntax.WhileStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WhileStatement"),
+              Model.projectionFieldName = (Model.Name "else")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the else field of hydra.python.syntax.WhileStatement
+whileStatementWithElse :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm (Maybe Syntax.Block) -> Typed.TypedTerm Syntax.WhileStatement
+whileStatementWithElse original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WhileStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "condition"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WhileStatement"),
+              Model.projectionFieldName = (Model.Name "condition")})),
+            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.python.syntax.WhileStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "else"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.python.syntax.WithItem
+withItem :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.StarTarget) -> Typed.TypedTerm Syntax.WithItem
+withItem expression as =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WithItem"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm expression)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Typed.unTypedTerm as)}]}))
+
+-- | DSL accessor for the as field of hydra.python.syntax.WithItem
+withItemAs :: Typed.TypedTerm Syntax.WithItem -> Typed.TypedTerm (Maybe Syntax.StarTarget)
+withItemAs x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithItem"),
+        Model.projectionFieldName = (Model.Name "as")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the expression field of hydra.python.syntax.WithItem
+withItemExpression :: Typed.TypedTerm Syntax.WithItem -> Typed.TypedTerm Syntax.Expression
+withItemExpression x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithItem"),
+        Model.projectionFieldName = (Model.Name "expression")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the as field of hydra.python.syntax.WithItem
+withItemWithAs :: Typed.TypedTerm Syntax.WithItem -> Typed.TypedTerm (Maybe Syntax.StarTarget) -> Typed.TypedTerm Syntax.WithItem
+withItemWithAs original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WithItem"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithItem"),
+              Model.projectionFieldName = (Model.Name "expression")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the expression field of hydra.python.syntax.WithItem
+withItemWithExpression :: Typed.TypedTerm Syntax.WithItem -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.WithItem
+withItemWithExpression original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WithItem"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "expression"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "as"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithItem"),
+              Model.projectionFieldName = (Model.Name "as")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL name token for hydra.python.syntax.WithItem
+withItemWithItem :: Typed.TypedName Syntax.WithItem
+withItemWithItem = Typed.TypedName (Model.Name "hydra.python.syntax.WithItem")
+
+-- | DSL constructor for hydra.python.syntax.WithStatement
+withStatement :: Typed.TypedTerm Bool -> Typed.TypedTerm [Syntax.WithItem] -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.WithStatement
+withStatement async items typeComment body =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Typed.unTypedTerm async)},
+        Model.Field {
+          Model.fieldName = (Model.Name "items"),
+          Model.fieldTerm = (Typed.unTypedTerm items)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Typed.unTypedTerm typeComment)},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))
+
+-- | DSL accessor for the async field of hydra.python.syntax.WithStatement
+withStatementAsync :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm Bool
+withStatementAsync x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+        Model.projectionFieldName = (Model.Name "async")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body field of hydra.python.syntax.WithStatement
+withStatementBody :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm Syntax.Block
+withStatementBody x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+        Model.projectionFieldName = (Model.Name "body")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the items field of hydra.python.syntax.WithStatement
+withStatementItems :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm [Syntax.WithItem]
+withStatementItems x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+        Model.projectionFieldName = (Model.Name "items")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the typeComment field of hydra.python.syntax.WithStatement
+withStatementTypeComment :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm (Maybe Syntax.TypeComment)
+withStatementTypeComment x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+        Model.projectionFieldName = (Model.Name "typeComment")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the async field of hydra.python.syntax.WithStatement
+withStatementWithAsync :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.WithStatement
+withStatementWithAsync original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "items"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "items")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            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.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the body field of hydra.python.syntax.WithStatement
+withStatementWithBody :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.WithStatement
+withStatementWithBody original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "items"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "items")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "body"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the items field of hydra.python.syntax.WithStatement
+withStatementWithItems :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm [Syntax.WithItem] -> Typed.TypedTerm Syntax.WithStatement
+withStatementWithItems original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "items"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "typeComment")})),
+            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.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL name token for hydra.python.syntax.WithStatement
+withStatementWithStatement :: Typed.TypedName Syntax.WithStatement
+withStatementWithStatement = Typed.TypedName (Model.Name "hydra.python.syntax.WithStatement")
+
+-- | DSL updater for the typeComment field of hydra.python.syntax.WithStatement
+withStatementWithTypeComment :: Typed.TypedTerm Syntax.WithStatement -> Typed.TypedTerm (Maybe Syntax.TypeComment) -> Typed.TypedTerm Syntax.WithStatement
+withStatementWithTypeComment original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "async"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "async")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "items"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "items")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "typeComment"),
+          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.python.syntax.WithStatement"),
+              Model.projectionFieldName = (Model.Name "body")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the from variant of hydra.python.syntax.YieldExpression
+yieldExpressionFrom :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.YieldExpression
+yieldExpressionFrom x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.YieldExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "from"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the simple variant of hydra.python.syntax.YieldExpression
+yieldExpressionSimple :: Typed.TypedTerm [Syntax.StarExpression] -> Typed.TypedTerm Syntax.YieldExpression
+yieldExpressionSimple x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.python.syntax.YieldExpression"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "simple"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.python.syntax.YieldExpression
+yieldExpressionYieldExpression :: Typed.TypedName Syntax.YieldExpression
+yieldExpressionYieldExpression = Typed.TypedName (Model.Name "hydra.python.syntax.YieldExpression")
+
+-- | DSL constructor for the hydra.python.syntax.YieldStatement wrapper
+yieldStatement :: Typed.TypedTerm Syntax.YieldExpression -> Typed.TypedTerm Syntax.YieldStatement
+yieldStatement x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.python.syntax.YieldStatement"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.python.syntax.YieldStatement
+yieldStatementYieldStatement :: Typed.TypedName Syntax.YieldStatement
+yieldStatementYieldStatement = Typed.TypedName (Model.Name "hydra.python.syntax.YieldStatement")
diff --git a/src/main/haskell/Hydra/Python/Dsl/Utils.hs b/src/main/haskell/Hydra/Python/Dsl/Utils.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Python/Dsl/Utils.hs
@@ -0,0 +1,561 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | DSL functions for hydra.python.utils
+
+module Hydra.Python.Dsl.Utils where
+
+import qualified Hydra.Core.Analysis as Analysis
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Classes as Classes
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Errors as Errors
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Json.Model as JsonModel
+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.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+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.Python.Dsl.Environment as DslEnvironment
+import qualified Hydra.Python.Dsl.Names as DslNames
+import qualified Hydra.Python.Dsl.Syntax as DslSyntax
+import qualified Hydra.Python.Environment as Environment
+import qualified Hydra.Python.Names as Names
+import qualified Hydra.Python.Serde as Serde
+import qualified Hydra.Python.Syntax as Syntax
+import qualified Hydra.Python.Utils as Utils
+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
+
+-- | DSL reference to hydra.python.utils.annotatedExpression
+annotatedExpression :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression
+annotatedExpression arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.annotatedExpression")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.annotatedStatement
+annotatedStatement :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Statement
+annotatedStatement arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.annotatedStatement")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.assignment
+assignment :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.AnnotatedRhs -> Typed.TypedTerm Syntax.Statement
+assignment arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.assignment")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.assignmentStatement
+assignmentStatement :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
+assignmentStatement arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.assignmentStatement")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.castTo
+castTo :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression
+castTo arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.castTo")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.commentStatement
+commentStatement :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Statement
+commentStatement arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.commentStatement")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.decimalVariantMethods
+decimalVariantMethods :: Typed.TypedTerm [Syntax.Statement]
+decimalVariantMethods = Typed.TypedTerm (Model.TermVariable (Model.Name "hydra.python.utils.decimalVariantMethods"))
+
+-- | DSL reference to hydra.python.utils.decodePyComparisonToPyAwaitPrimary
+decodePyComparisonToPyAwaitPrimary :: Typed.TypedTerm Syntax.Comparison -> Typed.TypedTerm (Maybe Syntax.Primary)
+decodePyComparisonToPyAwaitPrimary arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.decodePyComparisonToPyAwaitPrimary")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.decodePyConjunctionToPyPrimary
+decodePyConjunctionToPyPrimary :: Typed.TypedTerm Syntax.Conjunction -> Typed.TypedTerm (Maybe Syntax.Primary)
+decodePyConjunctionToPyPrimary arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.decodePyConjunctionToPyPrimary")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.decodePyExpressionToPyPrimary
+decodePyExpressionToPyPrimary :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm (Maybe Syntax.Primary)
+decodePyExpressionToPyPrimary arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.decodePyExpressionToPyPrimary")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.decodePyInversionToPyPrimary
+decodePyInversionToPyPrimary :: Typed.TypedTerm Syntax.Inversion -> Typed.TypedTerm (Maybe Syntax.Primary)
+decodePyInversionToPyPrimary arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.decodePyInversionToPyPrimary")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.decodePyPowerToPyPrimary
+decodePyPowerToPyPrimary :: Typed.TypedTerm Syntax.Power -> Typed.TypedTerm (Maybe Syntax.Primary)
+decodePyPowerToPyPrimary arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.decodePyPowerToPyPrimary")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.dottedAssignmentStatement
+dottedAssignmentStatement :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
+dottedAssignmentStatement arg0 arg1 arg2 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermApplication (Model.Application {
+          Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.dottedAssignmentStatement")),
+          Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+        Model.applicationArgument = (Typed.unTypedTerm arg1)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg2)}))
+
+-- | DSL reference to hydra.python.utils.doubleQuotedString
+doubleQuotedString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Expression
+doubleQuotedString arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.doubleQuotedString")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.findNamespaces
+findNamespaces :: Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm [Packaging.Definition] -> Typed.TypedTerm (Util.ModuleNames Syntax.DottedName)
+findNamespaces arg0 arg1 arg2 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermApplication (Model.Application {
+          Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.findNamespaces")),
+          Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+        Model.applicationArgument = (Typed.unTypedTerm arg1)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg2)}))
+
+-- | DSL reference to hydra.python.utils.functionCall
+functionCall :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression
+functionCall arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.functionCall")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.getItemParams
+getItemParams :: Typed.TypedTerm Syntax.Parameters
+getItemParams = Typed.TypedTerm (Model.TermVariable (Model.Name "hydra.python.utils.getItemParams"))
+
+-- | DSL reference to hydra.python.utils.indentedBlock
+indentedBlock :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm [[Syntax.Statement]] -> Typed.TypedTerm Syntax.Block
+indentedBlock arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.indentedBlock")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.nameAndParams
+nameAndParams :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression
+nameAndParams arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.nameAndParams")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.newtypeStatement
+newtypeStatement :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
+newtypeStatement arg0 arg1 arg2 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermApplication (Model.Application {
+          Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.newtypeStatement")),
+          Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+        Model.applicationArgument = (Typed.unTypedTerm arg1)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg2)}))
+
+-- | DSL reference to hydra.python.utils.orExpression
+orExpression :: Typed.TypedTerm [Syntax.Primary] -> Typed.TypedTerm Syntax.Expression
+orExpression arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.orExpression")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.primaryAndParams
+primaryAndParams :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression
+primaryAndParams arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.primaryAndParams")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.primaryWithExpressionSlices
+primaryWithExpressionSlices :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Primary
+primaryWithExpressionSlices arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.primaryWithExpressionSlices")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.primaryWithRhs
+primaryWithRhs :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.PrimaryRhs -> Typed.TypedTerm Syntax.Primary
+primaryWithRhs arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.primaryWithRhs")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.primaryWithSlices
+primaryWithSlices :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.Slice -> Typed.TypedTerm [Syntax.SliceOrStarredExpression] -> Typed.TypedTerm Syntax.Primary
+primaryWithSlices arg0 arg1 arg2 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermApplication (Model.Application {
+          Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.primaryWithSlices")),
+          Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+        Model.applicationArgument = (Typed.unTypedTerm arg1)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg2)}))
+
+-- | DSL reference to hydra.python.utils.projectFromExpression
+projectFromExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression
+projectFromExpression arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.projectFromExpression")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.pyAssignmentToPyStatement
+pyAssignmentToPyStatement :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.Statement
+pyAssignmentToPyStatement arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyAssignmentToPyStatement")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyAtomToPyExpression
+pyAtomToPyExpression :: Typed.TypedTerm Syntax.Atom -> Typed.TypedTerm Syntax.Expression
+pyAtomToPyExpression arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyAtomToPyExpression")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyBitwiseOrToPyConjunction
+pyBitwiseOrToPyConjunction :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.Conjunction
+pyBitwiseOrToPyConjunction arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyBitwiseOrToPyConjunction")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyBitwiseOrToPyExpression
+pyBitwiseOrToPyExpression :: Typed.TypedTerm Syntax.BitwiseOr -> Typed.TypedTerm Syntax.Expression
+pyBitwiseOrToPyExpression arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyBitwiseOrToPyExpression")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyClassDefinitionToPyStatement
+pyClassDefinitionToPyStatement :: Typed.TypedTerm Syntax.ClassDefinition -> Typed.TypedTerm Syntax.Statement
+pyClassDefinitionToPyStatement arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyClassDefinitionToPyStatement")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyClosedPatternToPyPatterns
+pyClosedPatternToPyPatterns :: Typed.TypedTerm Syntax.ClosedPattern -> Typed.TypedTerm Syntax.Patterns
+pyClosedPatternToPyPatterns arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyClosedPatternToPyPatterns")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyConjunctionToPyExpression
+pyConjunctionToPyExpression :: Typed.TypedTerm Syntax.Conjunction -> Typed.TypedTerm Syntax.Expression
+pyConjunctionToPyExpression arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyConjunctionToPyExpression")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyExpressionToBitwiseOr
+pyExpressionToBitwiseOr :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BitwiseOr
+pyExpressionToBitwiseOr arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyExpressionToBitwiseOr")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyExpressionToDisjunction
+pyExpressionToDisjunction :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Disjunction
+pyExpressionToDisjunction arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyExpressionToDisjunction")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyExpressionToPyAnnotatedRhs
+pyExpressionToPyAnnotatedRhs :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AnnotatedRhs
+pyExpressionToPyAnnotatedRhs arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyExpressionToPyAnnotatedRhs")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyExpressionToPyPrimary
+pyExpressionToPyPrimary :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Primary
+pyExpressionToPyPrimary arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyExpressionToPyPrimary")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyExpressionToPySimpleStatement
+pyExpressionToPySimpleStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SimpleStatement
+pyExpressionToPySimpleStatement arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyExpressionToPySimpleStatement")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyExpressionToPySlice
+pyExpressionToPySlice :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Slice
+pyExpressionToPySlice arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyExpressionToPySlice")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyExpressionToPyStarNamedExpression
+pyExpressionToPyStarNamedExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.StarNamedExpression
+pyExpressionToPyStarNamedExpression arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyExpressionToPyStarNamedExpression")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyExpressionToPyStatement
+pyExpressionToPyStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
+pyExpressionToPyStatement arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyExpressionToPyStatement")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyExpressionsToPyArgs
+pyExpressionsToPyArgs :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Args
+pyExpressionsToPyArgs arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyExpressionsToPyArgs")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyList
+pyList :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.List
+pyList arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyList")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyNameToPyExpression
+pyNameToPyExpression :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Expression
+pyNameToPyExpression arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyNameToPyExpression")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyNameToPyNamedExpression
+pyNameToPyNamedExpression :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.NamedExpression
+pyNameToPyNamedExpression arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyNameToPyNamedExpression")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyNameToPyPrimary
+pyNameToPyPrimary :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Primary
+pyNameToPyPrimary arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyNameToPyPrimary")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyNameToPyStarTarget
+pyNameToPyStarTarget :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.StarTarget
+pyNameToPyStarTarget arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyNameToPyStarTarget")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyNameToPyTypeParameter
+pyNameToPyTypeParameter :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.TypeParameter
+pyNameToPyTypeParameter arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyNameToPyTypeParameter")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyNone
+pyNone :: Typed.TypedTerm Syntax.Name
+pyNone = Typed.TypedTerm (Model.TermVariable (Model.Name "hydra.python.utils.pyNone"))
+
+-- | DSL reference to hydra.python.utils.pyPrimaryToPyBitwiseOr
+pyPrimaryToPyBitwiseOr :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.BitwiseOr
+pyPrimaryToPyBitwiseOr arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyPrimaryToPyBitwiseOr")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyPrimaryToPyBitwiseXor
+pyPrimaryToPyBitwiseXor :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.BitwiseXor
+pyPrimaryToPyBitwiseXor arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyPrimaryToPyBitwiseXor")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyPrimaryToPyConjunction
+pyPrimaryToPyConjunction :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.Conjunction
+pyPrimaryToPyConjunction arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyPrimaryToPyConjunction")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyPrimaryToPyExpression
+pyPrimaryToPyExpression :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.Expression
+pyPrimaryToPyExpression arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyPrimaryToPyExpression")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pyPrimaryToPySlice
+pyPrimaryToPySlice :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.Slice
+pyPrimaryToPySlice arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pyPrimaryToPySlice")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.pySimpleStatementToPyStatement
+pySimpleStatementToPyStatement :: Typed.TypedTerm Syntax.SimpleStatement -> Typed.TypedTerm Syntax.Statement
+pySimpleStatementToPyStatement arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.pySimpleStatementToPyStatement")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.raiseAssertionError
+raiseAssertionError :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Statement
+raiseAssertionError arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.raiseAssertionError")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.raiseTypeError
+raiseTypeError :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Statement
+raiseTypeError arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.raiseTypeError")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.returnSingle
+returnSingle :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
+returnSingle arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.returnSingle")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.selfOnlyParams
+selfOnlyParams :: Typed.TypedTerm Syntax.Parameters
+selfOnlyParams = Typed.TypedTerm (Model.TermVariable (Model.Name "hydra.python.utils.selfOnlyParams"))
+
+-- | DSL reference to hydra.python.utils.selfOtherParams
+selfOtherParams :: Typed.TypedTerm Syntax.Parameters
+selfOtherParams = Typed.TypedTerm (Model.TermVariable (Model.Name "hydra.python.utils.selfOtherParams"))
+
+-- | DSL reference to hydra.python.utils.singleQuotedString
+singleQuotedString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Expression
+singleQuotedString arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.singleQuotedString")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.stringToPyExpression
+stringToPyExpression :: Typed.TypedTerm Syntax.QuoteStyle -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.Expression
+stringToPyExpression arg0 arg1 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.stringToPyExpression")),
+        Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg1)}))
+
+-- | DSL reference to hydra.python.utils.targetPythonVersion
+targetPythonVersion :: Typed.TypedTerm Environment.PythonVersion
+targetPythonVersion = Typed.TypedTerm (Model.TermVariable (Model.Name "hydra.python.utils.targetPythonVersion"))
+
+-- | DSL reference to hydra.python.utils.tripleQuotedString
+tripleQuotedString :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Expression
+tripleQuotedString arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.tripleQuotedString")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
+
+-- | DSL reference to hydra.python.utils.typeAliasStatement
+typeAliasStatement :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
+typeAliasStatement arg0 arg1 arg2 arg3 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermApplication (Model.Application {
+          Model.applicationFunction = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.typeAliasStatement")),
+            Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+          Model.applicationArgument = (Typed.unTypedTerm arg1)})),
+        Model.applicationArgument = (Typed.unTypedTerm arg2)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg3)}))
+
+-- | DSL reference to hydra.python.utils.typeAliasStatement310
+typeAliasStatement310 :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm t0 -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement
+typeAliasStatement310 arg0 arg1 arg2 arg3 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermApplication (Model.Application {
+          Model.applicationFunction = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.typeAliasStatement310")),
+            Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+          Model.applicationArgument = (Typed.unTypedTerm arg1)})),
+        Model.applicationArgument = (Typed.unTypedTerm arg2)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg3)}))
+
+-- | DSL reference to hydra.python.utils.unionTypeClassStatements310
+unionTypeClassStatements310 :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm [Syntax.Statement]
+unionTypeClassStatements310 arg0 arg1 arg2 arg3 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermApplication (Model.Application {
+        Model.applicationFunction = (Model.TermApplication (Model.Application {
+          Model.applicationFunction = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.unionTypeClassStatements310")),
+            Model.applicationArgument = (Typed.unTypedTerm arg0)})),
+          Model.applicationArgument = (Typed.unTypedTerm arg1)})),
+        Model.applicationArgument = (Typed.unTypedTerm arg2)})),
+      Model.applicationArgument = (Typed.unTypedTerm arg3)}))
+
+-- | DSL reference to hydra.python.utils.unitVariantMethods
+unitVariantMethods :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm [Syntax.Statement]
+unitVariantMethods arg0 =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.python.utils.unitVariantMethods")),
+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
diff --git a/src/main/haskell/Hydra/Python/Environment.hs b/src/main/haskell/Hydra/Python/Environment.hs
--- a/src/main/haskell/Hydra/Python/Environment.hs
+++ b/src/main/haskell/Hydra/Python/Environment.hs
@@ -4,12 +4,12 @@
 
 module Hydra.Python.Environment where
 
-import qualified Hydra.Core as Core
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Packaging as Packaging
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Packaging as Packaging
+import qualified Hydra.Core.Typing as Typing
+import qualified Hydra.Core.Util as Util
 import qualified Hydra.Python.Syntax as Syntax
-import qualified Hydra.Typing as Typing
-import qualified Hydra.Util as Util
 import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
 import qualified Data.Scientific as Sci
 import Data.Void
@@ -22,11 +22,11 @@
   PythonVersionPython312
   deriving (Eq, Ord, Read, Show)
 
-_PythonVersion = Core.Name "hydra.python.environment.PythonVersion"
+_PythonVersion = Model.Name "hydra.python.environment.PythonVersion"
 
-_PythonVersion_python310 = Core.Name "python310"
+_PythonVersion_python310 = Model.Name "python310"
 
-_PythonVersion_python312 = Core.Name "python312"
+_PythonVersion_python312 = Model.Name "python312"
 
 -- | Environment for Python code generation
 data PythonEnvironment =
@@ -34,37 +34,37 @@
     -- | ModuleName mapping for imports
     pythonEnvironmentNamespaces :: (Util.ModuleNames Syntax.DottedName),
     -- | Type variables in scope, with their Python names
-    pythonEnvironmentBoundTypeVariables :: ([Core.Name], (M.Map Core.Name Syntax.Name)),
+    pythonEnvironmentBoundTypeVariables :: ([Model.Name], (M.Map Model.Name Syntax.Name)),
     -- | Graph context for type inference
     pythonEnvironmentGraph :: Graph.Graph,
     -- | Set of nullary bindings (need call syntax)
-    pythonEnvironmentNullaryBindings :: (S.Set Core.Name),
+    pythonEnvironmentNullaryBindings :: (S.Set Model.Name),
     -- | Target Python version
     pythonEnvironmentVersion :: PythonVersion,
     -- | When True, skip generating cast() calls for reduced memory usage
     pythonEnvironmentSkipCasts :: Bool,
     -- | Variables that are inline let bindings (walrus operators)
-    pythonEnvironmentInlineVariables :: (S.Set Core.Name),
-    -- | hydra.lib.<sub> sub-namespaces that have an overlay implementation on this host (#630) -- the on-disk existence signal driving emission-time redirect of primitive references to hydra.overlay.python.lib.<sub>
+    pythonEnvironmentInlineVariables :: (S.Set Model.Name),
+    -- | hydra.lib.<sub> sub-namespaces that have an overlay implementation on this host (#630) -- the on-disk existence signal driving emission-time redirect of primitive references to hydra.core.overlay.python.lib.<sub>
     pythonEnvironmentOverlaySubs :: (S.Set String)}
 
-_PythonEnvironment = Core.Name "hydra.python.environment.PythonEnvironment"
+_PythonEnvironment = Model.Name "hydra.python.environment.PythonEnvironment"
 
-_PythonEnvironment_namespaces = Core.Name "namespaces"
+_PythonEnvironment_namespaces = Model.Name "namespaces"
 
-_PythonEnvironment_boundTypeVariables = Core.Name "boundTypeVariables"
+_PythonEnvironment_boundTypeVariables = Model.Name "boundTypeVariables"
 
-_PythonEnvironment_graph = Core.Name "graph"
+_PythonEnvironment_graph = Model.Name "graph"
 
-_PythonEnvironment_nullaryBindings = Core.Name "nullaryBindings"
+_PythonEnvironment_nullaryBindings = Model.Name "nullaryBindings"
 
-_PythonEnvironment_version = Core.Name "version"
+_PythonEnvironment_version = Model.Name "version"
 
-_PythonEnvironment_skipCasts = Core.Name "skipCasts"
+_PythonEnvironment_skipCasts = Model.Name "skipCasts"
 
-_PythonEnvironment_inlineVariables = Core.Name "inlineVariables"
+_PythonEnvironment_inlineVariables = Model.Name "inlineVariables"
 
-_PythonEnvironment_overlaySubs = Core.Name "overlaySubs"
+_PythonEnvironment_overlaySubs = Model.Name "overlaySubs"
 
 -- | Temporary metadata used to create the header section of a Python file
 data PythonModuleMetadata =
@@ -72,7 +72,7 @@
     -- | ModuleName mapping for imports
     pythonModuleMetadataNamespaces :: (Util.ModuleNames Syntax.DottedName),
     -- | Type variables used in the module
-    pythonModuleMetadataTypeVariables :: (S.Set Core.Name),
+    pythonModuleMetadataTypeVariables :: (S.Set Model.Name),
     pythonModuleMetadataUsesAnnotated :: Bool,
     pythonModuleMetadataUsesCallable :: Bool,
     pythonModuleMetadataUsesCast :: Bool,
@@ -96,53 +96,53 @@
     pythonModuleMetadataUsesTypeVar :: Bool}
   deriving (Eq, Ord, Read, Show)
 
-_PythonModuleMetadata = Core.Name "hydra.python.environment.PythonModuleMetadata"
+_PythonModuleMetadata = Model.Name "hydra.python.environment.PythonModuleMetadata"
 
-_PythonModuleMetadata_namespaces = Core.Name "namespaces"
+_PythonModuleMetadata_namespaces = Model.Name "namespaces"
 
-_PythonModuleMetadata_typeVariables = Core.Name "typeVariables"
+_PythonModuleMetadata_typeVariables = Model.Name "typeVariables"
 
-_PythonModuleMetadata_usesAnnotated = Core.Name "usesAnnotated"
+_PythonModuleMetadata_usesAnnotated = Model.Name "usesAnnotated"
 
-_PythonModuleMetadata_usesCallable = Core.Name "usesCallable"
+_PythonModuleMetadata_usesCallable = Model.Name "usesCallable"
 
-_PythonModuleMetadata_usesCast = Core.Name "usesCast"
+_PythonModuleMetadata_usesCast = Model.Name "usesCast"
 
-_PythonModuleMetadata_usesLruCache = Core.Name "usesLruCache"
+_PythonModuleMetadata_usesLruCache = Model.Name "usesLruCache"
 
-_PythonModuleMetadata_usesTypeAlias = Core.Name "usesTypeAlias"
+_PythonModuleMetadata_usesTypeAlias = Model.Name "usesTypeAlias"
 
-_PythonModuleMetadata_usesDataclass = Core.Name "usesDataclass"
+_PythonModuleMetadata_usesDataclass = Model.Name "usesDataclass"
 
-_PythonModuleMetadata_usesDecimal = Core.Name "usesDecimal"
+_PythonModuleMetadata_usesDecimal = Model.Name "usesDecimal"
 
-_PythonModuleMetadata_usesEither = Core.Name "usesEither"
+_PythonModuleMetadata_usesEither = Model.Name "usesEither"
 
-_PythonModuleMetadata_usesEnum = Core.Name "usesEnum"
+_PythonModuleMetadata_usesEnum = Model.Name "usesEnum"
 
-_PythonModuleMetadata_usesFrozenDict = Core.Name "usesFrozenDict"
+_PythonModuleMetadata_usesFrozenDict = Model.Name "usesFrozenDict"
 
-_PythonModuleMetadata_usesFrozenList = Core.Name "usesFrozenList"
+_PythonModuleMetadata_usesFrozenList = Model.Name "usesFrozenList"
 
-_PythonModuleMetadata_usesFrozenSet = Core.Name "usesFrozenSet"
+_PythonModuleMetadata_usesFrozenSet = Model.Name "usesFrozenSet"
 
-_PythonModuleMetadata_usesGeneric = Core.Name "usesGeneric"
+_PythonModuleMetadata_usesGeneric = Model.Name "usesGeneric"
 
-_PythonModuleMetadata_usesJust = Core.Name "usesJust"
+_PythonModuleMetadata_usesJust = Model.Name "usesJust"
 
-_PythonModuleMetadata_usesLeft = Core.Name "usesLeft"
+_PythonModuleMetadata_usesLeft = Model.Name "usesLeft"
 
-_PythonModuleMetadata_usesMaybe = Core.Name "usesMaybe"
+_PythonModuleMetadata_usesMaybe = Model.Name "usesMaybe"
 
-_PythonModuleMetadata_usesName = Core.Name "usesName"
+_PythonModuleMetadata_usesName = Model.Name "usesName"
 
-_PythonModuleMetadata_usesNode = Core.Name "usesNode"
+_PythonModuleMetadata_usesNode = Model.Name "usesNode"
 
-_PythonModuleMetadata_usesNothing = Core.Name "usesNothing"
+_PythonModuleMetadata_usesNothing = Model.Name "usesNothing"
 
-_PythonModuleMetadata_usesRight = Core.Name "usesRight"
+_PythonModuleMetadata_usesRight = Model.Name "usesRight"
 
-_PythonModuleMetadata_usesTypeVar = Core.Name "usesTypeVar"
+_PythonModuleMetadata_usesTypeVar = Model.Name "usesTypeVar"
 
 -- | Combined graph and metadata state for Python code generation
 data PyGraph =
@@ -152,8 +152,8 @@
     -- | Accumulated module metadata
     pyGraphMetadata :: PythonModuleMetadata}
 
-_PyGraph = Core.Name "hydra.python.environment.PyGraph"
+_PyGraph = Model.Name "hydra.python.environment.PyGraph"
 
-_PyGraph_graph = Core.Name "graph"
+_PyGraph_graph = Model.Name "graph"
 
-_PyGraph_metadata = Core.Name "metadata"
+_PyGraph_metadata = Model.Name "metadata"
diff --git a/src/main/haskell/Hydra/Python/Language.hs b/src/main/haskell/Hydra/Python/Language.hs
--- a/src/main/haskell/Hydra/Python/Language.hs
+++ b/src/main/haskell/Hydra/Python/Language.hs
@@ -4,33 +4,33 @@
 
 module Hydra.Python.Language where
 
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Classes as Classes
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.Packaging as ErrorPackaging
-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.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-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.Classes as Classes
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+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.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+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
@@ -72,9 +72,9 @@
           Variants.LiteralVariantInteger,
           Variants.LiteralVariantString]
     floatTypes = Sets.fromList [
-      Core.FloatTypeFloat64]
+      Model.FloatTypeFloat64]
     integerTypes = Sets.fromList [
-      Core.IntegerTypeBigint]
+      Model.IntegerTypeBigint]
     termVariants =
         Sets.fromList [
           Variants.TermVariantAnnotated,
diff --git a/src/main/haskell/Hydra/Python/Names.hs b/src/main/haskell/Hydra/Python/Names.hs
--- a/src/main/haskell/Hydra/Python/Names.hs
+++ b/src/main/haskell/Hydra/Python/Names.hs
@@ -4,43 +4,43 @@
 
 module Hydra.Python.Names where
 
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Classes as Classes
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Errors as Errors
-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.Maps as Maps
-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals
-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.Core.Ast as Ast
+import qualified Hydra.Core.Classes as Classes
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Errors as Errors
+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.Maps as Maps
+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals
+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.Query as Query
+import qualified Hydra.Core.Relational as Relational
+import qualified Hydra.Core.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+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.Python.Environment as Environment
 import qualified Hydra.Python.Language as Language
 import qualified Hydra.Python.Serde as Serde
 import qualified Hydra.Python.Syntax as Syntax
-import qualified Hydra.Query as Query
-import qualified Hydra.Relational as Relational
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-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
@@ -48,24 +48,24 @@
 import qualified Data.Set as S
 
 -- | Generate a constant name for a field definition
-encodeConstantForFieldName :: t0 -> t1 -> Core.Name -> Syntax.Name
+encodeConstantForFieldName :: t0 -> t1 -> Model.Name -> Syntax.Name
 encodeConstantForFieldName env tname fname =
-    Syntax.Name (Formatting.convertCase Util.CaseConventionCamel Util.CaseConventionUpperSnake (Strings.join "_" (Strings.splitOn "-" (Core.unName fname))))
+    Syntax.Name (Formatting.convertCase Util.CaseConventionCamel Util.CaseConventionUpperSnake (Strings.join "_" (Strings.splitOn "-" (Model.unName fname))))
 
 -- | Generate a constant name for a type definition
 encodeConstantForTypeName :: t0 -> t1 -> Syntax.Name
 encodeConstantForTypeName env tname = Syntax.Name "TYPE_"
 
 -- | Encode a name as a Python enum value (UPPER_SNAKE case)
-encodeEnumValue :: Environment.PythonEnvironment -> Core.Name -> Syntax.Name
+encodeEnumValue :: Environment.PythonEnvironment -> Model.Name -> Syntax.Name
 encodeEnumValue = encodeName False Util.CaseConventionUpperSnake
 
 -- | Encode a name as a Python field name (lower_snake case)
-encodeFieldName :: Environment.PythonEnvironment -> Core.Name -> Syntax.Name
+encodeFieldName :: Environment.PythonEnvironment -> Model.Name -> Syntax.Name
 encodeFieldName env fname = encodeName False Util.CaseConventionLowerSnake env fname
 
 -- | Encode a Hydra name as a Python name
-encodeName :: Bool -> Util.CaseConvention -> Environment.PythonEnvironment -> Core.Name -> Syntax.Name
+encodeName :: Bool -> Util.CaseConvention -> Environment.PythonEnvironment -> Model.Name -> Syntax.Name
 encodeName isQualified conv env name =
 
       let namespaces = Environment.pythonEnvironmentNamespaces env
@@ -80,7 +80,7 @@
       in (Logic.ifElse isQualified (Optionals.match (Maps.lookup name boundVars) (Logic.ifElse (Equality.equal mns (Just focusNs)) (Syntax.Name (Logic.ifElse useFutureAnnotations pyLocal (Serde.escapePythonString True pyLocal))) (Optionals.match mns (Syntax.Name pyLocal) (\nsVal -> Syntax.Name (Strings.concat2 (pyNs nsVal) (Strings.concat2 "." pyLocal))))) (\n -> n)) (Syntax.Name pyLocal))
 
 -- | Encode a name as a fully qualified Python name
-encodeNameQualified :: Environment.PythonEnvironment -> Core.Name -> Syntax.Name
+encodeNameQualified :: Environment.PythonEnvironment -> Model.Name -> Syntax.Name
 encodeNameQualified env name =
 
       let namespaces = Environment.pythonEnvironmentNamespaces env
@@ -98,38 +98,39 @@
 encodeNamespace nsVal =
     Syntax.DottedName (Lists.map (\part -> Syntax.Name (Formatting.convertCase Util.CaseConventionCamel Util.CaseConventionLowerSnake part)) (Strings.splitOn "." (Packaging.unModuleName nsVal)))
 
--- | Convert a ModuleName to its Python dotted import string, routing overlay modules to hydra.overlay.python.*
+-- | Convert a ModuleName to its Python dotted import string, routing overlay modules to hydra.core.overlay.python.*
 encodeNamespaceStringWithOverrides :: S.Set String -> Packaging.ModuleName -> String
 encodeNamespaceStringWithOverrides overlaySubs nsVal =
-    Optionals.match (Logic.ifElse (Logic.and (Logic.and (Equality.equal (Lists.length (Strings.splitOn "." (Packaging.unModuleName nsVal))) 3) (Equality.equal (Lists.take 2 (Strings.splitOn "." (Packaging.unModuleName nsVal))) [
+    Optionals.match (Logic.ifElse (Logic.and (Logic.and (Equality.equal (Lists.length (Strings.splitOn "." (Packaging.unModuleName nsVal))) 4) (Equality.equal (Lists.take 3 (Strings.splitOn "." (Packaging.unModuleName nsVal))) [
       "hydra",
-      "lib"])) (Sets.member (Strings.join "." (Lists.drop 2 (Strings.splitOn "." (Packaging.unModuleName nsVal)))) overlaySubs)) (Just (Strings.concat2 "hydra.overlay.python.lib." (Strings.join "." (Lists.drop 2 (Strings.splitOn "." (Packaging.unModuleName nsVal)))))) Nothing) (Optionals.withDefault (Strings.join "." (Lists.map (Formatting.convertCase Util.CaseConventionCamel Util.CaseConventionLowerSnake) (Strings.splitOn "." (Packaging.unModuleName nsVal)))) (Maps.lookup nsVal overlayPythonModuleAliases)) (\redirected -> redirected)
+      "core",
+      "lib"])) (Sets.member (Strings.join "." (Lists.drop 3 (Strings.splitOn "." (Packaging.unModuleName nsVal)))) overlaySubs)) (Just (Strings.concat2 "hydra.core.overlay.python.lib." (Strings.join "." (Lists.drop 3 (Strings.splitOn "." (Packaging.unModuleName nsVal)))))) Nothing) (Optionals.withDefault (Strings.join "." (Lists.map (Formatting.convertCase Util.CaseConventionCamel Util.CaseConventionLowerSnake) (Strings.splitOn "." (Packaging.unModuleName nsVal)))) (Maps.lookup nsVal overlayPythonModuleAliases)) (\redirected -> redirected)
 
--- | Encode a namespace as a Python dotted name, routing overlay modules to their hydra.overlay.python.* paths
+-- | Encode a namespace as a Python dotted name, routing overlay modules to their hydra.core.overlay.python.* paths
 encodeNamespaceWithOverrides :: S.Set String -> Packaging.ModuleName -> Syntax.DottedName
 encodeNamespaceWithOverrides overlaySubs nsVal =
     Syntax.DottedName (Lists.map (\part -> Syntax.Name part) (Strings.splitOn "." (encodeNamespaceStringWithOverrides overlaySubs nsVal)))
 
 -- | Encode a type variable name (capitalized)
-encodeTypeVariable :: Core.Name -> Syntax.Name
-encodeTypeVariable name = Syntax.Name (Formatting.capitalize (Core.unName name))
+encodeTypeVariable :: Model.Name -> Syntax.Name
+encodeTypeVariable name = Syntax.Name (Formatting.capitalize (Model.unName name))
 
--- | Alias map routing DSL-declared module names to their hydra.overlay.python.* import strings
+-- | Alias map routing DSL-declared module names to their hydra.core.overlay.python.* import strings
 overlayPythonModuleAliases :: M.Map Packaging.ModuleName String
 overlayPythonModuleAliases =
     Maps.fromList [
-      (Packaging.ModuleName "hydra.test.testEnv", "hydra.overlay.python.test_env")]
+      (Packaging.ModuleName "hydra.core.test.testEnv", "hydra.core.overlay.python.test_env")]
 
 -- | Sanitize a string to be a valid Python name
 sanitizePythonName :: String -> String
 sanitizePythonName = Formatting.sanitizeWithUnderscores Language.pythonReservedWords
 
 -- | Reference a term variable as a Python expression
-termVariableReference :: Environment.PythonEnvironment -> Core.Name -> Syntax.Expression
+termVariableReference :: Environment.PythonEnvironment -> Model.Name -> Syntax.Expression
 termVariableReference = variableReference Util.CaseConventionLowerSnake False
 
 -- | Reference a type variable as a Python expression
-typeVariableReference :: Environment.PythonEnvironment -> Core.Name -> Syntax.Expression
+typeVariableReference :: Environment.PythonEnvironment -> Model.Name -> Syntax.Expression
 typeVariableReference = variableReference Util.CaseConventionPascal False
 
 -- | Whether to use __future__ annotations for forward references
@@ -137,7 +138,7 @@
 useFutureAnnotations = True
 
 -- | Reference a variable as a Python expression
-variableReference :: Util.CaseConvention -> Bool -> Environment.PythonEnvironment -> Core.Name -> Syntax.Expression
+variableReference :: Util.CaseConvention -> Bool -> Environment.PythonEnvironment -> Model.Name -> Syntax.Expression
 variableReference conv quoted env name =
 
       let pyName = encodeName True conv env name
@@ -194,6 +195,6 @@
             Syntax.comparisonRhs = []})]])) unquoted)
 
 -- | Generate a variant name from type name and field name
-variantName :: Bool -> Environment.PythonEnvironment -> Core.Name -> Core.Name -> Syntax.Name
+variantName :: Bool -> Environment.PythonEnvironment -> Model.Name -> Model.Name -> Syntax.Name
 variantName isQualified env tname fname =
-    encodeName isQualified Util.CaseConventionPascal env (Core.Name (Strings.concat2 (Core.unName tname) (Formatting.capitalize (Core.unName fname))))
+    encodeName isQualified Util.CaseConventionPascal env (Model.Name (Strings.concat2 (Model.unName tname) (Formatting.capitalize (Model.unName fname))))
diff --git a/src/main/haskell/Hydra/Python/Pyproject.hs b/src/main/haskell/Hydra/Python/Pyproject.hs
--- a/src/main/haskell/Hydra/Python/Pyproject.hs
+++ b/src/main/haskell/Hydra/Python/Pyproject.hs
@@ -4,8 +4,8 @@
 
 module Hydra.Python.Pyproject where
 
-import qualified Hydra.Core as Core
-import qualified Hydra.Packaging as Packaging
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Packaging as Packaging
 import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
 import qualified Data.Scientific as Sci
 import Data.Void
@@ -15,6 +15,6 @@
     pyProjectBuildConfigurationDependencies :: [Packaging.PackageDependency]}
   deriving (Eq, Ord, Read, Show)
 
-_PyProjectBuildConfiguration = Core.Name "hydra.python.pyproject.PyProjectBuildConfiguration"
+_PyProjectBuildConfiguration = Model.Name "hydra.python.pyproject.PyProjectBuildConfiguration"
 
-_PyProjectBuildConfiguration_dependencies = Core.Name "dependencies"
+_PyProjectBuildConfiguration_dependencies = Model.Name "dependencies"
diff --git a/src/main/haskell/Hydra/Python/Serde.hs b/src/main/haskell/Hydra/Python/Serde.hs
--- a/src/main/haskell/Hydra/Python/Serde.hs
+++ b/src/main/haskell/Hydra/Python/Serde.hs
@@ -4,41 +4,41 @@
 
 module Hydra.Python.Serde where
 
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Classes as Classes
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Constants as Constants
-import qualified Hydra.Core as Core
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Errors as Errors
-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.Literals as Literals
-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic
-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals
-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.Print.Docs as Docs
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Classes as Classes
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Constants as Constants
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Errors as Errors
+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.Literals as Literals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic
+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals
+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.Print.Docs as Docs
+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.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+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.Python.Syntax as Syntax
-import qualified Hydra.Query as Query
-import qualified Hydra.Relational as Relational
-import qualified Hydra.Serialization as Serialization
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-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
@@ -757,7 +757,7 @@
         primaryToExpr prim,
         (primaryRhsToExpr rhs)])
 
--- | Render a hydra.packaging.EntityReference as Sphinx/RST link syntax
+-- | Render a hydra.core.packaging.EntityReference as Sphinx/RST link syntax
 pythonDocEntityRef :: Packaging.EntityReference -> String
 pythonDocEntityRef ref =
     case ref of
diff --git a/src/main/haskell/Hydra/Python/Syntax.hs b/src/main/haskell/Hydra/Python/Syntax.hs
--- a/src/main/haskell/Hydra/Python/Syntax.hs
+++ b/src/main/haskell/Hydra/Python/Syntax.hs
@@ -5,2499 +5,2499 @@
 
 module Hydra.Python.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
-
-data AnnotatedStatement =
-  AnnotatedStatement {
-    annotatedStatementComment :: String,
-    annotatedStatementStatement :: Statement}
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotatedStatement = Core.Name "hydra.python.syntax.AnnotatedStatement"
-
-_AnnotatedStatement_comment = Core.Name "comment"
-
-_AnnotatedStatement_statement = Core.Name "statement"
-
-newtype Module =
-  Module {
-    unModule :: [[Statement]]}
-  deriving (Eq, Ord, Read, Show)
-
-_Module = Core.Name "hydra.python.syntax.Module"
-
-data QuoteStyle =
-  QuoteStyleSingle |
-  QuoteStyleDouble |
-  QuoteStyleTripleSingle |
-  QuoteStyleTripleDouble
-  deriving (Eq, Ord, Read, Show)
-
-_QuoteStyle = Core.Name "hydra.python.syntax.QuoteStyle"
-
-_QuoteStyle_single = Core.Name "single"
-
-_QuoteStyle_double = Core.Name "double"
-
-_QuoteStyle_tripleSingle = Core.Name "tripleSingle"
-
-_QuoteStyle_tripleDouble = Core.Name "tripleDouble"
-
-data StringPrefix =
-  StringPrefixRaw |
-  StringPrefixBytes |
-  StringPrefixRawBytes |
-  StringPrefixUnicode
-  deriving (Eq, Ord, Read, Show)
-
-_StringPrefix = Core.Name "hydra.python.syntax.StringPrefix"
-
-_StringPrefix_raw = Core.Name "raw"
-
-_StringPrefix_bytes = Core.Name "bytes"
-
-_StringPrefix_rawBytes = Core.Name "rawBytes"
-
-_StringPrefix_unicode = Core.Name "unicode"
-
-newtype Name =
-  Name {
-    unName :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_Name = Core.Name "hydra.python.syntax.Name"
-
-data Number =
-  NumberInteger Integer |
-  NumberFloat Double |
-  NumberImaginary Double
-  deriving (Eq, Ord, Read, Show)
-
-_Number = Core.Name "hydra.python.syntax.Number"
-
-_Number_integer = Core.Name "integer"
-
-_Number_float = Core.Name "float"
-
-_Number_imaginary = Core.Name "imaginary"
-
-data String_ =
-  String_ {
-    stringValue :: String,
-    stringPrefix :: (Maybe StringPrefix),
-    stringQuoteStyle :: QuoteStyle}
-  deriving (Eq, Ord, Read, Show)
-
-_String = Core.Name "hydra.python.syntax.String"
-
-_String_value = Core.Name "value"
-
-_String_prefix = Core.Name "prefix"
-
-_String_quoteStyle = Core.Name "quoteStyle"
-
-newtype TypeComment =
-  TypeComment {
-    unTypeComment :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_TypeComment = Core.Name "hydra.python.syntax.TypeComment"
-
-newtype File =
-  File {
-    unFile :: [Statement]}
-  deriving (Eq, Ord, Read, Show)
-
-_File = Core.Name "hydra.python.syntax.File"
-
-newtype Interactive =
-  Interactive {
-    unInteractive :: Statement}
-  deriving (Eq, Ord, Read, Show)
-
-_Interactive = Core.Name "hydra.python.syntax.Interactive"
-
-newtype Eval =
-  Eval {
-    unEval :: [Expression]}
-  deriving (Eq, Ord, Read, Show)
-
-_Eval = Core.Name "hydra.python.syntax.Eval"
-
-data Statement =
-  StatementCompound CompoundStatement |
-  StatementSimple [SimpleStatement] |
-  StatementAnnotated AnnotatedStatement
-  deriving (Eq, Ord, Read, Show)
-
-_Statement = Core.Name "hydra.python.syntax.Statement"
-
-_Statement_compound = Core.Name "compound"
-
-_Statement_simple = Core.Name "simple"
-
-_Statement_annotated = Core.Name "annotated"
-
-data SimpleStatement =
-  SimpleStatementAssignment Assignment |
-  SimpleStatementTypeAlias TypeAlias |
-  SimpleStatementStarExpressions [StarExpression] |
-  SimpleStatementReturn ReturnStatement |
-  SimpleStatementImport ImportStatement |
-  SimpleStatementRaise RaiseStatement |
-  SimpleStatementPass |
-  SimpleStatementDel DelStatement |
-  SimpleStatementYield YieldStatement |
-  SimpleStatementAssert AssertStatement |
-  SimpleStatementBreak |
-  SimpleStatementContinue |
-  SimpleStatementGlobal [Name] |
-  SimpleStatementNonlocal [Name]
-  deriving (Eq, Ord, Read, Show)
-
-_SimpleStatement = Core.Name "hydra.python.syntax.SimpleStatement"
-
-_SimpleStatement_assignment = Core.Name "assignment"
-
-_SimpleStatement_typeAlias = Core.Name "typeAlias"
-
-_SimpleStatement_starExpressions = Core.Name "starExpressions"
-
-_SimpleStatement_return = Core.Name "return"
-
-_SimpleStatement_import = Core.Name "import"
-
-_SimpleStatement_raise = Core.Name "raise"
-
-_SimpleStatement_pass = Core.Name "pass"
-
-_SimpleStatement_del = Core.Name "del"
-
-_SimpleStatement_yield = Core.Name "yield"
-
-_SimpleStatement_assert = Core.Name "assert"
-
-_SimpleStatement_break = Core.Name "break"
-
-_SimpleStatement_continue = Core.Name "continue"
-
-_SimpleStatement_global = Core.Name "global"
-
-_SimpleStatement_nonlocal = Core.Name "nonlocal"
-
-data CompoundStatement =
-  CompoundStatementFunction FunctionDefinition |
-  CompoundStatementIf IfStatement |
-  CompoundStatementClassDef ClassDefinition |
-  CompoundStatementWith WithStatement |
-  CompoundStatementFor ForStatement |
-  CompoundStatementTry TryStatement |
-  CompoundStatementWhile WhileStatement |
-  CompoundStatementMatch MatchStatement
-  deriving (Eq, Ord, Read, Show)
-
-_CompoundStatement = Core.Name "hydra.python.syntax.CompoundStatement"
-
-_CompoundStatement_function = Core.Name "function"
-
-_CompoundStatement_if = Core.Name "if"
-
-_CompoundStatement_classDef = Core.Name "classDef"
-
-_CompoundStatement_with = Core.Name "with"
-
-_CompoundStatement_for = Core.Name "for"
-
-_CompoundStatement_try = Core.Name "try"
-
-_CompoundStatement_while = Core.Name "while"
-
-_CompoundStatement_match = Core.Name "match"
-
-data Assignment =
-  AssignmentTyped TypedAssignment |
-  AssignmentUntyped UntypedAssignment |
-  AssignmentAug AugAssignment
-  deriving (Eq, Ord, Read, Show)
-
-_Assignment = Core.Name "hydra.python.syntax.Assignment"
-
-_Assignment_typed = Core.Name "typed"
-
-_Assignment_untyped = Core.Name "untyped"
-
-_Assignment_aug = Core.Name "aug"
-
-data TypedAssignment =
-  TypedAssignment {
-    typedAssignmentLhs :: SingleTarget,
-    typedAssignmentType :: Expression,
-    typedAssignmentRhs :: (Maybe AnnotatedRhs)}
-  deriving (Eq, Ord, Read, Show)
-
-_TypedAssignment = Core.Name "hydra.python.syntax.TypedAssignment"
-
-_TypedAssignment_lhs = Core.Name "lhs"
-
-_TypedAssignment_type = Core.Name "type"
-
-_TypedAssignment_rhs = Core.Name "rhs"
-
-data UntypedAssignment =
-  UntypedAssignment {
-    untypedAssignmentTargets :: [StarTarget],
-    untypedAssignmentRhs :: AnnotatedRhs,
-    untypedAssignmentTypeComment :: (Maybe TypeComment)}
-  deriving (Eq, Ord, Read, Show)
-
-_UntypedAssignment = Core.Name "hydra.python.syntax.UntypedAssignment"
-
-_UntypedAssignment_targets = Core.Name "targets"
-
-_UntypedAssignment_rhs = Core.Name "rhs"
-
-_UntypedAssignment_typeComment = Core.Name "typeComment"
-
-data AugAssignment =
-  AugAssignment {
-    augAssignmentLhs :: SingleTarget,
-    augAssignmentAugassign :: AugAssign,
-    augAssignmentRhs :: AnnotatedRhs}
-  deriving (Eq, Ord, Read, Show)
-
-_AugAssignment = Core.Name "hydra.python.syntax.AugAssignment"
-
-_AugAssignment_lhs = Core.Name "lhs"
-
-_AugAssignment_augassign = Core.Name "augassign"
-
-_AugAssignment_rhs = Core.Name "rhs"
-
-data AnnotatedRhs =
-  AnnotatedRhsYield YieldExpression |
-  AnnotatedRhsStar [StarExpression]
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotatedRhs = Core.Name "hydra.python.syntax.AnnotatedRhs"
-
-_AnnotatedRhs_yield = Core.Name "yield"
-
-_AnnotatedRhs_star = Core.Name "star"
-
-data AugAssign =
-  AugAssignPlusEqual |
-  AugAssignMinusEqual |
-  AugAssignTimesEqual |
-  AugAssignAtEqual |
-  AugAssignSlashEqual |
-  AugAssignPercentEqual |
-  AugAssignAmpersandEqual |
-  AugAssignBarEqual |
-  AugAssignCaretEqual |
-  AugAssignLeftShiftEqual |
-  AugAssignRightShiftEqual |
-  AugAssignStarStarEqual |
-  AugAssignDoubleSlashEqual
-  deriving (Eq, Ord, Read, Show)
-
-_AugAssign = Core.Name "hydra.python.syntax.AugAssign"
-
-_AugAssign_plusEqual = Core.Name "plusEqual"
-
-_AugAssign_minusEqual = Core.Name "minusEqual"
-
-_AugAssign_timesEqual = Core.Name "timesEqual"
-
-_AugAssign_atEqual = Core.Name "atEqual"
-
-_AugAssign_slashEqual = Core.Name "slashEqual"
-
-_AugAssign_percentEqual = Core.Name "percentEqual"
-
-_AugAssign_ampersandEqual = Core.Name "ampersandEqual"
-
-_AugAssign_barEqual = Core.Name "barEqual"
-
-_AugAssign_caretEqual = Core.Name "caretEqual"
-
-_AugAssign_leftShiftEqual = Core.Name "leftShiftEqual"
-
-_AugAssign_rightShiftEqual = Core.Name "rightShiftEqual"
-
-_AugAssign_starStarEqual = Core.Name "starStarEqual"
-
-_AugAssign_doubleSlashEqual = Core.Name "doubleSlashEqual"
-
-newtype ReturnStatement =
-  ReturnStatement {
-    unReturnStatement :: [StarExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_ReturnStatement = Core.Name "hydra.python.syntax.ReturnStatement"
-
-newtype RaiseStatement =
-  RaiseStatement {
-    unRaiseStatement :: (Maybe RaiseExpression)}
-  deriving (Eq, Ord, Read, Show)
-
-_RaiseStatement = Core.Name "hydra.python.syntax.RaiseStatement"
-
-data RaiseExpression =
-  RaiseExpression {
-    raiseExpressionExpression :: Expression,
-    raiseExpressionFrom :: (Maybe Expression)}
-  deriving (Eq, Ord, Read, Show)
-
-_RaiseExpression = Core.Name "hydra.python.syntax.RaiseExpression"
-
-_RaiseExpression_expression = Core.Name "expression"
-
-_RaiseExpression_from = Core.Name "from"
-
-newtype DelStatement =
-  DelStatement {
-    unDelStatement :: DelTargets}
-  deriving (Eq, Ord, Read, Show)
-
-_DelStatement = Core.Name "hydra.python.syntax.DelStatement"
-
-newtype YieldStatement =
-  YieldStatement {
-    unYieldStatement :: YieldExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_YieldStatement = Core.Name "hydra.python.syntax.YieldStatement"
-
-data AssertStatement =
-  AssertStatement {
-    assertStatementExpression1 :: Expression,
-    assertStatementExpression2 :: (Maybe Expression)}
-  deriving (Eq, Ord, Read, Show)
-
-_AssertStatement = Core.Name "hydra.python.syntax.AssertStatement"
-
-_AssertStatement_expression1 = Core.Name "expression1"
-
-_AssertStatement_expression2 = Core.Name "expression2"
-
-data ImportStatement =
-  ImportStatementName ImportName |
-  ImportStatementFrom ImportFrom
-  deriving (Eq, Ord, Read, Show)
-
-_ImportStatement = Core.Name "hydra.python.syntax.ImportStatement"
-
-_ImportStatement_name = Core.Name "name"
-
-_ImportStatement_from = Core.Name "from"
-
-newtype ImportName =
-  ImportName {
-    unImportName :: [DottedAsName]}
-  deriving (Eq, Ord, Read, Show)
-
-_ImportName = Core.Name "hydra.python.syntax.ImportName"
-
-data ImportFrom =
-  ImportFrom {
-    importFromPrefixes :: [RelativeImportPrefix],
-    importFromDottedName :: (Maybe DottedName),
-    importFromTargets :: ImportFromTargets}
-  deriving (Eq, Ord, Read, Show)
-
-_ImportFrom = Core.Name "hydra.python.syntax.ImportFrom"
-
-_ImportFrom_prefixes = Core.Name "prefixes"
-
-_ImportFrom_dottedName = Core.Name "dottedName"
-
-_ImportFrom_targets = Core.Name "targets"
-
-data RelativeImportPrefix =
-  RelativeImportPrefixDot |
-  RelativeImportPrefixEllipsis
-  deriving (Eq, Ord, Read, Show)
-
-_RelativeImportPrefix = Core.Name "hydra.python.syntax.RelativeImportPrefix"
-
-_RelativeImportPrefix_dot = Core.Name "dot"
-
-_RelativeImportPrefix_ellipsis = Core.Name "ellipsis"
-
-data ImportFromTargets =
-  ImportFromTargetsSimple [ImportFromAsName] |
-  ImportFromTargetsParens [ImportFromAsName] |
-  ImportFromTargetsStar
-  deriving (Eq, Ord, Read, Show)
-
-_ImportFromTargets = Core.Name "hydra.python.syntax.ImportFromTargets"
-
-_ImportFromTargets_simple = Core.Name "simple"
-
-_ImportFromTargets_parens = Core.Name "parens"
-
-_ImportFromTargets_star = Core.Name "star"
-
-data ImportFromAsName =
-  ImportFromAsName {
-    importFromAsNameName :: Name,
-    importFromAsNameAs :: (Maybe Name)}
-  deriving (Eq, Ord, Read, Show)
-
-_ImportFromAsName = Core.Name "hydra.python.syntax.ImportFromAsName"
-
-_ImportFromAsName_name = Core.Name "name"
-
-_ImportFromAsName_as = Core.Name "as"
-
-data DottedAsName =
-  DottedAsName {
-    dottedAsNameName :: DottedName,
-    dottedAsNameAs :: (Maybe Name)}
-  deriving (Eq, Ord, Read, Show)
-
-_DottedAsName = Core.Name "hydra.python.syntax.DottedAsName"
-
-_DottedAsName_name = Core.Name "name"
-
-_DottedAsName_as = Core.Name "as"
-
-newtype DottedName =
-  DottedName {
-    unDottedName :: [Name]}
-  deriving (Eq, Ord, Read, Show)
-
-_DottedName = Core.Name "hydra.python.syntax.DottedName"
-
-data Block =
-  BlockIndented [[Statement]] |
-  BlockSimple [SimpleStatement]
-  deriving (Eq, Ord, Read, Show)
-
-_Block = Core.Name "hydra.python.syntax.Block"
-
-_Block_indented = Core.Name "indented"
-
-_Block_simple = Core.Name "simple"
-
-newtype Decorators =
-  Decorators {
-    unDecorators :: [NamedExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_Decorators = Core.Name "hydra.python.syntax.Decorators"
-
-data ClassDefinition =
-  ClassDefinition {
-    classDefinitionDecorators :: (Maybe Decorators),
-    classDefinitionName :: Name,
-    classDefinitionTypeParams :: [TypeParameter],
-    classDefinitionArguments :: (Maybe Args),
-    classDefinitionBody :: Block}
-  deriving (Eq, Ord, Read, Show)
-
-_ClassDefinition = Core.Name "hydra.python.syntax.ClassDefinition"
-
-_ClassDefinition_decorators = Core.Name "decorators"
-
-_ClassDefinition_name = Core.Name "name"
-
-_ClassDefinition_typeParams = Core.Name "typeParams"
-
-_ClassDefinition_arguments = Core.Name "arguments"
-
-_ClassDefinition_body = Core.Name "body"
-
-data FunctionDefinition =
-  FunctionDefinition {
-    functionDefinitionDecorators :: (Maybe Decorators),
-    functionDefinitionRaw :: FunctionDefRaw}
-  deriving (Eq, Ord, Read, Show)
-
-_FunctionDefinition = Core.Name "hydra.python.syntax.FunctionDefinition"
-
-_FunctionDefinition_decorators = Core.Name "decorators"
-
-_FunctionDefinition_raw = Core.Name "raw"
-
-data FunctionDefRaw =
-  FunctionDefRaw {
-    functionDefRawAsync :: Bool,
-    functionDefRawName :: Name,
-    functionDefRawTypeParams :: [TypeParameter],
-    functionDefRawParams :: (Maybe Parameters),
-    functionDefRawReturnType :: (Maybe Expression),
-    functionDefRawFuncTypeComment :: (Maybe FuncTypeComment),
-    functionDefRawBlock :: Block}
-  deriving (Eq, Ord, Read, Show)
-
-_FunctionDefRaw = Core.Name "hydra.python.syntax.FunctionDefRaw"
-
-_FunctionDefRaw_async = Core.Name "async"
-
-_FunctionDefRaw_name = Core.Name "name"
-
-_FunctionDefRaw_typeParams = Core.Name "typeParams"
-
-_FunctionDefRaw_params = Core.Name "params"
-
-_FunctionDefRaw_returnType = Core.Name "returnType"
-
-_FunctionDefRaw_funcTypeComment = Core.Name "funcTypeComment"
-
-_FunctionDefRaw_block = Core.Name "block"
-
-data Parameters =
-  ParametersSlashNoDefault SlashNoDefaultParameters |
-  ParametersSlashWithDefault SlashWithDefaultParameters |
-  ParametersParamNoDefault ParamNoDefaultParameters |
-  ParametersParamWithDefault ParamWithDefaultParameters |
-  ParametersStarEtc StarEtc
-  deriving (Eq, Ord, Read, Show)
-
-_Parameters = Core.Name "hydra.python.syntax.Parameters"
-
-_Parameters_slashNoDefault = Core.Name "slashNoDefault"
-
-_Parameters_slashWithDefault = Core.Name "slashWithDefault"
-
-_Parameters_paramNoDefault = Core.Name "paramNoDefault"
-
-_Parameters_paramWithDefault = Core.Name "paramWithDefault"
-
-_Parameters_starEtc = Core.Name "starEtc"
-
-data SlashNoDefaultParameters =
-  SlashNoDefaultParameters {
-    slashNoDefaultParametersSlash :: SlashNoDefault,
-    slashNoDefaultParametersParamNoDefault :: [ParamNoDefault],
-    slashNoDefaultParametersParamWithDefault :: [ParamWithDefault],
-    slashNoDefaultParametersStarEtc :: (Maybe StarEtc)}
-  deriving (Eq, Ord, Read, Show)
-
-_SlashNoDefaultParameters = Core.Name "hydra.python.syntax.SlashNoDefaultParameters"
-
-_SlashNoDefaultParameters_slash = Core.Name "slash"
-
-_SlashNoDefaultParameters_paramNoDefault = Core.Name "paramNoDefault"
-
-_SlashNoDefaultParameters_paramWithDefault = Core.Name "paramWithDefault"
-
-_SlashNoDefaultParameters_starEtc = Core.Name "starEtc"
-
-data SlashWithDefaultParameters =
-  SlashWithDefaultParameters {
-    slashWithDefaultParametersParamNoDefault :: [ParamNoDefault],
-    slashWithDefaultParametersParamWithDefault :: [ParamWithDefault],
-    slashWithDefaultParametersStarEtc :: (Maybe StarEtc)}
-  deriving (Eq, Ord, Read, Show)
-
-_SlashWithDefaultParameters = Core.Name "hydra.python.syntax.SlashWithDefaultParameters"
-
-_SlashWithDefaultParameters_paramNoDefault = Core.Name "paramNoDefault"
-
-_SlashWithDefaultParameters_paramWithDefault = Core.Name "paramWithDefault"
-
-_SlashWithDefaultParameters_starEtc = Core.Name "starEtc"
-
-data ParamNoDefaultParameters =
-  ParamNoDefaultParameters {
-    paramNoDefaultParametersParamNoDefault :: [ParamNoDefault],
-    paramNoDefaultParametersParamWithDefault :: [ParamWithDefault],
-    paramNoDefaultParametersStarEtc :: (Maybe StarEtc)}
-  deriving (Eq, Ord, Read, Show)
-
-_ParamNoDefaultParameters = Core.Name "hydra.python.syntax.ParamNoDefaultParameters"
-
-_ParamNoDefaultParameters_paramNoDefault = Core.Name "paramNoDefault"
-
-_ParamNoDefaultParameters_paramWithDefault = Core.Name "paramWithDefault"
-
-_ParamNoDefaultParameters_starEtc = Core.Name "starEtc"
-
-data ParamWithDefaultParameters =
-  ParamWithDefaultParameters {
-    paramWithDefaultParametersParamWithDefault :: [ParamWithDefault],
-    paramWithDefaultParametersStarEtc :: (Maybe StarEtc)}
-  deriving (Eq, Ord, Read, Show)
-
-_ParamWithDefaultParameters = Core.Name "hydra.python.syntax.ParamWithDefaultParameters"
-
-_ParamWithDefaultParameters_paramWithDefault = Core.Name "paramWithDefault"
-
-_ParamWithDefaultParameters_starEtc = Core.Name "starEtc"
-
-newtype SlashNoDefault =
-  SlashNoDefault {
-    unSlashNoDefault :: [ParamNoDefault]}
-  deriving (Eq, Ord, Read, Show)
-
-_SlashNoDefault = Core.Name "hydra.python.syntax.SlashNoDefault"
-
-data SlashWithDefault =
-  SlashWithDefault {
-    slashWithDefaultParamNoDefault :: [ParamNoDefault],
-    slashWithDefaultParamWithDefault :: [ParamWithDefault]}
-  deriving (Eq, Ord, Read, Show)
-
-_SlashWithDefault = Core.Name "hydra.python.syntax.SlashWithDefault"
-
-_SlashWithDefault_paramNoDefault = Core.Name "paramNoDefault"
-
-_SlashWithDefault_paramWithDefault = Core.Name "paramWithDefault"
-
-data StarEtc =
-  StarEtcStarNoDefault NoDefaultStarEtc |
-  StarEtcStarNoDefaultStarAnnotation NoDefaultStarAnnotationStarEtc |
-  StarEtcStarComma CommaStarEtc |
-  StarEtcKeywords Keywords
-  deriving (Eq, Ord, Read, Show)
-
-_StarEtc = Core.Name "hydra.python.syntax.StarEtc"
-
-_StarEtc_starNoDefault = Core.Name "starNoDefault"
-
-_StarEtc_starNoDefaultStarAnnotation = Core.Name "starNoDefaultStarAnnotation"
-
-_StarEtc_starComma = Core.Name "starComma"
-
-_StarEtc_keywords = Core.Name "keywords"
-
-data NoDefaultStarEtc =
-  NoDefaultStarEtc {
-    noDefaultStarEtcParamNoDefault :: ParamNoDefault,
-    noDefaultStarEtcParamMaybeDefault :: [ParamMaybeDefault],
-    noDefaultStarEtcKeywords :: (Maybe Keywords)}
-  deriving (Eq, Ord, Read, Show)
-
-_NoDefaultStarEtc = Core.Name "hydra.python.syntax.NoDefaultStarEtc"
-
-_NoDefaultStarEtc_paramNoDefault = Core.Name "paramNoDefault"
-
-_NoDefaultStarEtc_paramMaybeDefault = Core.Name "paramMaybeDefault"
-
-_NoDefaultStarEtc_keywords = Core.Name "keywords"
-
-data NoDefaultStarAnnotationStarEtc =
-  NoDefaultStarAnnotationStarEtc {
-    noDefaultStarAnnotationStarEtcParamNoDefaultStarAnnotation :: ParamNoDefaultStarAnnotation,
-    noDefaultStarAnnotationStarEtcParamMaybeDefault :: [ParamMaybeDefault],
-    noDefaultStarAnnotationStarEtcKeywords :: (Maybe Keywords)}
-  deriving (Eq, Ord, Read, Show)
-
-_NoDefaultStarAnnotationStarEtc = Core.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"
-
-_NoDefaultStarAnnotationStarEtc_paramNoDefaultStarAnnotation = Core.Name "paramNoDefaultStarAnnotation"
-
-_NoDefaultStarAnnotationStarEtc_paramMaybeDefault = Core.Name "paramMaybeDefault"
-
-_NoDefaultStarAnnotationStarEtc_keywords = Core.Name "keywords"
-
-data CommaStarEtc =
-  CommaStarEtc {
-    commaStarEtcParamMaybeDefault :: [ParamMaybeDefault],
-    commaStarEtcKeywords :: (Maybe Keywords)}
-  deriving (Eq, Ord, Read, Show)
-
-_CommaStarEtc = Core.Name "hydra.python.syntax.CommaStarEtc"
-
-_CommaStarEtc_paramMaybeDefault = Core.Name "paramMaybeDefault"
-
-_CommaStarEtc_keywords = Core.Name "keywords"
-
-newtype Keywords =
-  Keywords {
-    unKeywords :: ParamNoDefault}
-  deriving (Eq, Ord, Read, Show)
-
-_Keywords = Core.Name "hydra.python.syntax.Keywords"
-
-data ParamNoDefault =
-  ParamNoDefault {
-    paramNoDefaultParam :: Param,
-    paramNoDefaultTypeComment :: (Maybe TypeComment)}
-  deriving (Eq, Ord, Read, Show)
-
-_ParamNoDefault = Core.Name "hydra.python.syntax.ParamNoDefault"
-
-_ParamNoDefault_param = Core.Name "param"
-
-_ParamNoDefault_typeComment = Core.Name "typeComment"
-
-data ParamNoDefaultStarAnnotation =
-  ParamNoDefaultStarAnnotation {
-    paramNoDefaultStarAnnotationParamStarAnnotation :: ParamStarAnnotation,
-    paramNoDefaultStarAnnotationTypeComment :: (Maybe TypeComment)}
-  deriving (Eq, Ord, Read, Show)
-
-_ParamNoDefaultStarAnnotation = Core.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"
-
-_ParamNoDefaultStarAnnotation_paramStarAnnotation = Core.Name "paramStarAnnotation"
-
-_ParamNoDefaultStarAnnotation_typeComment = Core.Name "typeComment"
-
-data ParamWithDefault =
-  ParamWithDefault {
-    paramWithDefaultParam :: Param,
-    paramWithDefaultDefault :: Default,
-    paramWithDefaultTypeComment :: (Maybe TypeComment)}
-  deriving (Eq, Ord, Read, Show)
-
-_ParamWithDefault = Core.Name "hydra.python.syntax.ParamWithDefault"
-
-_ParamWithDefault_param = Core.Name "param"
-
-_ParamWithDefault_default = Core.Name "default"
-
-_ParamWithDefault_typeComment = Core.Name "typeComment"
-
-data ParamMaybeDefault =
-  ParamMaybeDefault {
-    paramMaybeDefaultParam :: Param,
-    paramMaybeDefaultDefault :: (Maybe Default),
-    paramMaybeDefaultTypeComment :: (Maybe TypeComment)}
-  deriving (Eq, Ord, Read, Show)
-
-_ParamMaybeDefault = Core.Name "hydra.python.syntax.ParamMaybeDefault"
-
-_ParamMaybeDefault_param = Core.Name "param"
-
-_ParamMaybeDefault_default = Core.Name "default"
-
-_ParamMaybeDefault_typeComment = Core.Name "typeComment"
-
-data Param =
-  Param {
-    paramName :: Name,
-    paramAnnotation :: (Maybe Annotation)}
-  deriving (Eq, Ord, Read, Show)
-
-_Param = Core.Name "hydra.python.syntax.Param"
-
-_Param_name = Core.Name "name"
-
-_Param_annotation = Core.Name "annotation"
-
-data ParamStarAnnotation =
-  ParamStarAnnotation {
-    paramStarAnnotationName :: Name,
-    paramStarAnnotationAnnotation :: StarAnnotation}
-  deriving (Eq, Ord, Read, Show)
-
-_ParamStarAnnotation = Core.Name "hydra.python.syntax.ParamStarAnnotation"
-
-_ParamStarAnnotation_name = Core.Name "name"
-
-_ParamStarAnnotation_annotation = Core.Name "annotation"
-
-newtype Annotation =
-  Annotation {
-    unAnnotation :: Expression}
-  deriving (Eq, Ord, Read, Show)
-
-_Annotation = Core.Name "hydra.python.syntax.Annotation"
-
-newtype StarAnnotation =
-  StarAnnotation {
-    unStarAnnotation :: StarExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_StarAnnotation = Core.Name "hydra.python.syntax.StarAnnotation"
-
-newtype Default =
-  Default {
-    unDefault :: Expression}
-  deriving (Eq, Ord, Read, Show)
-
-_Default = Core.Name "hydra.python.syntax.Default"
-
-data IfStatement =
-  IfStatement {
-    ifStatementCondition :: NamedExpression,
-    ifStatementBody :: Block,
-    ifStatementContinuation :: (Maybe IfTail)}
-  deriving (Eq, Ord, Read, Show)
-
-_IfStatement = Core.Name "hydra.python.syntax.IfStatement"
-
-_IfStatement_condition = Core.Name "condition"
-
-_IfStatement_body = Core.Name "body"
-
-_IfStatement_continuation = Core.Name "continuation"
-
-data IfTail =
-  IfTailElif IfStatement |
-  IfTailElse Block
-  deriving (Eq, Ord, Read, Show)
-
-_IfTail = Core.Name "hydra.python.syntax.IfTail"
-
-_IfTail_elif = Core.Name "elif"
-
-_IfTail_else = Core.Name "else"
-
-data WhileStatement =
-  WhileStatement {
-    whileStatementCondition :: NamedExpression,
-    whileStatementBody :: Block,
-    whileStatementElse :: (Maybe Block)}
-  deriving (Eq, Ord, Read, Show)
-
-_WhileStatement = Core.Name "hydra.python.syntax.WhileStatement"
-
-_WhileStatement_condition = Core.Name "condition"
-
-_WhileStatement_body = Core.Name "body"
-
-_WhileStatement_else = Core.Name "else"
-
-data ForStatement =
-  ForStatement {
-    forStatementAsync :: Bool,
-    forStatementTargets :: [StarTarget],
-    forStatementExpressions :: [StarExpression],
-    forStatementTypeComment :: (Maybe TypeComment),
-    forStatementBody :: Block,
-    forStatementElse :: (Maybe Block)}
-  deriving (Eq, Ord, Read, Show)
-
-_ForStatement = Core.Name "hydra.python.syntax.ForStatement"
-
-_ForStatement_async = Core.Name "async"
-
-_ForStatement_targets = Core.Name "targets"
-
-_ForStatement_expressions = Core.Name "expressions"
-
-_ForStatement_typeComment = Core.Name "typeComment"
-
-_ForStatement_body = Core.Name "body"
-
-_ForStatement_else = Core.Name "else"
-
-data WithStatement =
-  WithStatement {
-    withStatementAsync :: Bool,
-    withStatementItems :: [WithItem],
-    withStatementTypeComment :: (Maybe TypeComment),
-    withStatementBody :: Block}
-  deriving (Eq, Ord, Read, Show)
-
-_WithStatement = Core.Name "hydra.python.syntax.WithStatement"
-
-_WithStatement_async = Core.Name "async"
-
-_WithStatement_items = Core.Name "items"
-
-_WithStatement_typeComment = Core.Name "typeComment"
-
-_WithStatement_body = Core.Name "body"
-
-data WithItem =
-  WithItem {
-    withItemExpression :: Expression,
-    withItemAs :: (Maybe StarTarget)}
-  deriving (Eq, Ord, Read, Show)
-
-_WithItem = Core.Name "hydra.python.syntax.WithItem"
-
-_WithItem_expression = Core.Name "expression"
-
-_WithItem_as = Core.Name "as"
-
-data TryStatement =
-  TryStatementFinally TryFinallyStatement |
-  TryStatementExcept TryExceptStatement |
-  TryStatementExceptStar TryExceptStarStatement
-  deriving (Eq, Ord, Read, Show)
-
-_TryStatement = Core.Name "hydra.python.syntax.TryStatement"
-
-_TryStatement_finally = Core.Name "finally"
-
-_TryStatement_except = Core.Name "except"
-
-_TryStatement_exceptStar = Core.Name "exceptStar"
-
-data TryFinallyStatement =
-  TryFinallyStatement {
-    tryFinallyStatementBody :: Block,
-    tryFinallyStatementFinally :: Block}
-  deriving (Eq, Ord, Read, Show)
-
-_TryFinallyStatement = Core.Name "hydra.python.syntax.TryFinallyStatement"
-
-_TryFinallyStatement_body = Core.Name "body"
-
-_TryFinallyStatement_finally = Core.Name "finally"
-
-data TryExceptStatement =
-  TryExceptStatement {
-    tryExceptStatementBody :: Block,
-    tryExceptStatementExcepts :: [ExceptBlock],
-    tryExceptStatementElse :: (Maybe Block),
-    tryExceptStatementFinally :: (Maybe Block)}
-  deriving (Eq, Ord, Read, Show)
-
-_TryExceptStatement = Core.Name "hydra.python.syntax.TryExceptStatement"
-
-_TryExceptStatement_body = Core.Name "body"
-
-_TryExceptStatement_excepts = Core.Name "excepts"
-
-_TryExceptStatement_else = Core.Name "else"
-
-_TryExceptStatement_finally = Core.Name "finally"
-
-data TryExceptStarStatement =
-  TryExceptStarStatement {
-    tryExceptStarStatementBody :: Block,
-    tryExceptStarStatementExcepts :: [ExceptStarBlock],
-    tryExceptStarStatementElse :: (Maybe Block),
-    tryExceptStarStatementFinally :: (Maybe Block)}
-  deriving (Eq, Ord, Read, Show)
-
-_TryExceptStarStatement = Core.Name "hydra.python.syntax.TryExceptStarStatement"
-
-_TryExceptStarStatement_body = Core.Name "body"
-
-_TryExceptStarStatement_excepts = Core.Name "excepts"
-
-_TryExceptStarStatement_else = Core.Name "else"
-
-_TryExceptStarStatement_finally = Core.Name "finally"
-
-data ExceptBlock =
-  ExceptBlock {
-    exceptBlockExpression :: (Maybe ExceptExpression),
-    exceptBlockBody :: Block}
-  deriving (Eq, Ord, Read, Show)
-
-_ExceptBlock = Core.Name "hydra.python.syntax.ExceptBlock"
-
-_ExceptBlock_expression = Core.Name "expression"
-
-_ExceptBlock_body = Core.Name "body"
-
-data ExceptExpression =
-  ExceptExpression {
-    exceptExpressionExpression :: Expression,
-    exceptExpressionAs :: (Maybe Name)}
-  deriving (Eq, Ord, Read, Show)
-
-_ExceptExpression = Core.Name "hydra.python.syntax.ExceptExpression"
-
-_ExceptExpression_expression = Core.Name "expression"
-
-_ExceptExpression_as = Core.Name "as"
-
-data ExceptStarBlock =
-  ExceptStarBlock {
-    exceptStarBlockExpression :: Expression,
-    exceptStarBlockAs :: (Maybe Name),
-    exceptStarBlockBody :: Block}
-  deriving (Eq, Ord, Read, Show)
-
-_ExceptStarBlock = Core.Name "hydra.python.syntax.ExceptStarBlock"
-
-_ExceptStarBlock_expression = Core.Name "expression"
-
-_ExceptStarBlock_as = Core.Name "as"
-
-_ExceptStarBlock_body = Core.Name "body"
-
-data MatchStatement =
-  MatchStatement {
-    matchStatementSubject :: SubjectExpression,
-    matchStatementCases :: [CaseBlock]}
-  deriving (Eq, Ord, Read, Show)
-
-_MatchStatement = Core.Name "hydra.python.syntax.MatchStatement"
-
-_MatchStatement_subject = Core.Name "subject"
-
-_MatchStatement_cases = Core.Name "cases"
-
-data SubjectExpression =
-  SubjectExpressionTuple [StarNamedExpression] |
-  SubjectExpressionSimple NamedExpression
-  deriving (Eq, Ord, Read, Show)
-
-_SubjectExpression = Core.Name "hydra.python.syntax.SubjectExpression"
-
-_SubjectExpression_tuple = Core.Name "tuple"
-
-_SubjectExpression_simple = Core.Name "simple"
-
-data CaseBlock =
-  CaseBlock {
-    caseBlockPatterns :: Patterns,
-    caseBlockGuard :: (Maybe Guard),
-    caseBlockBody :: Block}
-  deriving (Eq, Ord, Read, Show)
-
-_CaseBlock = Core.Name "hydra.python.syntax.CaseBlock"
-
-_CaseBlock_patterns = Core.Name "patterns"
-
-_CaseBlock_guard = Core.Name "guard"
-
-_CaseBlock_body = Core.Name "body"
-
-newtype Guard =
-  Guard {
-    unGuard :: NamedExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_Guard = Core.Name "hydra.python.syntax.Guard"
-
-data Patterns =
-  PatternsSequence OpenSequencePattern |
-  PatternsPattern Pattern
-  deriving (Eq, Ord, Read, Show)
-
-_Patterns = Core.Name "hydra.python.syntax.Patterns"
-
-_Patterns_sequence = Core.Name "sequence"
-
-_Patterns_pattern = Core.Name "pattern"
-
-data Pattern =
-  PatternAs AsPattern |
-  PatternOr OrPattern
-  deriving (Eq, Ord, Read, Show)
-
-_Pattern = Core.Name "hydra.python.syntax.Pattern"
-
-_Pattern_as = Core.Name "as"
-
-_Pattern_or = Core.Name "or"
-
-data AsPattern =
-  AsPattern {
-    asPatternPattern :: OrPattern,
-    asPatternAs :: PatternCaptureTarget}
-  deriving (Eq, Ord, Read, Show)
-
-_AsPattern = Core.Name "hydra.python.syntax.AsPattern"
-
-_AsPattern_pattern = Core.Name "pattern"
-
-_AsPattern_as = Core.Name "as"
-
-newtype OrPattern =
-  OrPattern {
-    unOrPattern :: [ClosedPattern]}
-  deriving (Eq, Ord, Read, Show)
-
-_OrPattern = Core.Name "hydra.python.syntax.OrPattern"
-
-data ClosedPattern =
-  ClosedPatternLiteral LiteralExpression |
-  ClosedPatternCapture CapturePattern |
-  ClosedPatternWildcard |
-  ClosedPatternValue ValuePattern |
-  ClosedPatternGroup GroupPattern |
-  ClosedPatternSequence SequencePattern |
-  ClosedPatternMapping MappingPattern |
-  ClosedPatternClass ClassPattern
-  deriving (Eq, Ord, Read, Show)
-
-_ClosedPattern = Core.Name "hydra.python.syntax.ClosedPattern"
-
-_ClosedPattern_literal = Core.Name "literal"
-
-_ClosedPattern_capture = Core.Name "capture"
-
-_ClosedPattern_wildcard = Core.Name "wildcard"
-
-_ClosedPattern_value = Core.Name "value"
-
-_ClosedPattern_group = Core.Name "group"
-
-_ClosedPattern_sequence = Core.Name "sequence"
-
-_ClosedPattern_mapping = Core.Name "mapping"
-
-_ClosedPattern_class = Core.Name "class"
-
-data LiteralExpression =
-  LiteralExpressionNumber SignedNumber |
-  LiteralExpressionComplex ComplexNumber |
-  LiteralExpressionString String_ |
-  LiteralExpressionNone |
-  LiteralExpressionTrue |
-  LiteralExpressionFalse
-  deriving (Eq, Ord, Read, Show)
-
-_LiteralExpression = Core.Name "hydra.python.syntax.LiteralExpression"
-
-_LiteralExpression_number = Core.Name "number"
-
-_LiteralExpression_complex = Core.Name "complex"
-
-_LiteralExpression_string = Core.Name "string"
-
-_LiteralExpression_none = Core.Name "none"
-
-_LiteralExpression_true = Core.Name "true"
-
-_LiteralExpression_false = Core.Name "false"
-
-data ComplexNumber =
-  ComplexNumber {
-    complexNumberReal :: SignedRealNumber,
-    complexNumberPlusOrMinus :: PlusOrMinus,
-    complexNumberImaginary :: ImaginaryNumber}
-  deriving (Eq, Ord, Read, Show)
-
-_ComplexNumber = Core.Name "hydra.python.syntax.ComplexNumber"
-
-_ComplexNumber_real = Core.Name "real"
-
-_ComplexNumber_plusOrMinus = Core.Name "plusOrMinus"
-
-_ComplexNumber_imaginary = Core.Name "imaginary"
-
-data PlusOrMinus =
-  PlusOrMinusPlus |
-  PlusOrMinusMinus
-  deriving (Eq, Ord, Read, Show)
-
-_PlusOrMinus = Core.Name "hydra.python.syntax.PlusOrMinus"
-
-_PlusOrMinus_plus = Core.Name "plus"
-
-_PlusOrMinus_minus = Core.Name "minus"
-
-data SignedNumber =
-  SignedNumberSign PlusOrMinus |
-  SignedNumberNumber Number
-  deriving (Eq, Ord, Read, Show)
-
-_SignedNumber = Core.Name "hydra.python.syntax.SignedNumber"
-
-_SignedNumber_sign = Core.Name "sign"
-
-_SignedNumber_number = Core.Name "number"
-
-data SignedRealNumber =
-  SignedRealNumberSign PlusOrMinus |
-  SignedRealNumberNumber RealNumber
-  deriving (Eq, Ord, Read, Show)
-
-_SignedRealNumber = Core.Name "hydra.python.syntax.SignedRealNumber"
-
-_SignedRealNumber_sign = Core.Name "sign"
-
-_SignedRealNumber_number = Core.Name "number"
-
-data RealNumber =
-  RealNumberInteger Integer |
-  RealNumberFloat Double
-  deriving (Eq, Ord, Read, Show)
-
-_RealNumber = Core.Name "hydra.python.syntax.RealNumber"
-
-_RealNumber_integer = Core.Name "integer"
-
-_RealNumber_float = Core.Name "float"
-
-newtype ImaginaryNumber =
-  ImaginaryNumber {
-    unImaginaryNumber :: Double}
-  deriving (Eq, Ord, Read, Show)
-
-_ImaginaryNumber = Core.Name "hydra.python.syntax.ImaginaryNumber"
-
-newtype CapturePattern =
-  CapturePattern {
-    unCapturePattern :: PatternCaptureTarget}
-  deriving (Eq, Ord, Read, Show)
-
-_CapturePattern = Core.Name "hydra.python.syntax.CapturePattern"
-
-newtype PatternCaptureTarget =
-  PatternCaptureTarget {
-    unPatternCaptureTarget :: Name}
-  deriving (Eq, Ord, Read, Show)
-
-_PatternCaptureTarget = Core.Name "hydra.python.syntax.PatternCaptureTarget"
-
-newtype ValuePattern =
-  ValuePattern {
-    unValuePattern :: Attribute}
-  deriving (Eq, Ord, Read, Show)
-
-_ValuePattern = Core.Name "hydra.python.syntax.ValuePattern"
-
-newtype Attribute =
-  Attribute {
-    unAttribute :: [Name]}
-  deriving (Eq, Ord, Read, Show)
-
-_Attribute = Core.Name "hydra.python.syntax.Attribute"
-
-newtype NameOrAttribute =
-  NameOrAttribute {
-    unNameOrAttribute :: [Name]}
-  deriving (Eq, Ord, Read, Show)
-
-_NameOrAttribute = Core.Name "hydra.python.syntax.NameOrAttribute"
-
-newtype GroupPattern =
-  GroupPattern {
-    unGroupPattern :: Pattern}
-  deriving (Eq, Ord, Read, Show)
-
-_GroupPattern = Core.Name "hydra.python.syntax.GroupPattern"
-
-data SequencePattern =
-  SequencePatternList (Maybe MaybeSequencePattern) |
-  SequencePatternTuple (Maybe OpenSequencePattern)
-  deriving (Eq, Ord, Read, Show)
-
-_SequencePattern = Core.Name "hydra.python.syntax.SequencePattern"
-
-_SequencePattern_list = Core.Name "list"
-
-_SequencePattern_tuple = Core.Name "tuple"
-
-data OpenSequencePattern =
-  OpenSequencePattern {
-    openSequencePatternHead :: MaybeStarPattern,
-    openSequencePatternTail :: (Maybe MaybeSequencePattern)}
-  deriving (Eq, Ord, Read, Show)
-
-_OpenSequencePattern = Core.Name "hydra.python.syntax.OpenSequencePattern"
-
-_OpenSequencePattern_head = Core.Name "head"
-
-_OpenSequencePattern_tail = Core.Name "tail"
-
-newtype MaybeSequencePattern =
-  MaybeSequencePattern {
-    unMaybeSequencePattern :: [MaybeStarPattern]}
-  deriving (Eq, Ord, Read, Show)
-
-_MaybeSequencePattern = Core.Name "hydra.python.syntax.MaybeSequencePattern"
-
-data MaybeStarPattern =
-  MaybeStarPatternStar StarPattern |
-  MaybeStarPatternPattern Pattern
-  deriving (Eq, Ord, Read, Show)
-
-_MaybeStarPattern = Core.Name "hydra.python.syntax.MaybeStarPattern"
-
-_MaybeStarPattern_star = Core.Name "star"
-
-_MaybeStarPattern_pattern = Core.Name "pattern"
-
-data StarPattern =
-  StarPatternCapture PatternCaptureTarget |
-  StarPatternWildcard
-  deriving (Eq, Ord, Read, Show)
-
-_StarPattern = Core.Name "hydra.python.syntax.StarPattern"
-
-_StarPattern_capture = Core.Name "capture"
-
-_StarPattern_wildcard = Core.Name "wildcard"
-
-data MappingPattern =
-  MappingPattern {
-    mappingPatternItems :: (Maybe ItemsPattern),
-    mappingPatternDoubleStar :: (Maybe DoubleStarPattern)}
-  deriving (Eq, Ord, Read, Show)
-
-_MappingPattern = Core.Name "hydra.python.syntax.MappingPattern"
-
-_MappingPattern_items = Core.Name "items"
-
-_MappingPattern_doubleStar = Core.Name "doubleStar"
-
-newtype ItemsPattern =
-  ItemsPattern {
-    unItemsPattern :: [KeyValuePattern]}
-  deriving (Eq, Ord, Read, Show)
-
-_ItemsPattern = Core.Name "hydra.python.syntax.ItemsPattern"
-
-data KeyValuePattern =
-  KeyValuePattern {
-    keyValuePatternKey :: LiteralExpressionOrAttribute,
-    keyValuePatternValue :: Pattern}
-  deriving (Eq, Ord, Read, Show)
-
-_KeyValuePattern = Core.Name "hydra.python.syntax.KeyValuePattern"
-
-_KeyValuePattern_key = Core.Name "key"
-
-_KeyValuePattern_value = Core.Name "value"
-
-data LiteralExpressionOrAttribute =
-  LiteralExpressionOrAttributeLiteral LiteralExpression |
-  LiteralExpressionOrAttributeAttribute Attribute
-  deriving (Eq, Ord, Read, Show)
-
-_LiteralExpressionOrAttribute = Core.Name "hydra.python.syntax.LiteralExpressionOrAttribute"
-
-_LiteralExpressionOrAttribute_literal = Core.Name "literal"
-
-_LiteralExpressionOrAttribute_attribute = Core.Name "attribute"
-
-newtype DoubleStarPattern =
-  DoubleStarPattern {
-    unDoubleStarPattern :: PatternCaptureTarget}
-  deriving (Eq, Ord, Read, Show)
-
-_DoubleStarPattern = Core.Name "hydra.python.syntax.DoubleStarPattern"
-
-data ClassPattern =
-  ClassPattern {
-    classPatternNameOrAttribute :: NameOrAttribute,
-    classPatternPositionalPatterns :: (Maybe PositionalPatterns),
-    classPatternKeywordPatterns :: (Maybe KeywordPatterns)}
-  deriving (Eq, Ord, Read, Show)
-
-_ClassPattern = Core.Name "hydra.python.syntax.ClassPattern"
-
-_ClassPattern_nameOrAttribute = Core.Name "nameOrAttribute"
-
-_ClassPattern_positionalPatterns = Core.Name "positionalPatterns"
-
-_ClassPattern_keywordPatterns = Core.Name "keywordPatterns"
-
-newtype PositionalPatterns =
-  PositionalPatterns {
-    unPositionalPatterns :: [Pattern]}
-  deriving (Eq, Ord, Read, Show)
-
-_PositionalPatterns = Core.Name "hydra.python.syntax.PositionalPatterns"
-
-newtype KeywordPatterns =
-  KeywordPatterns {
-    unKeywordPatterns :: [KeywordPattern]}
-  deriving (Eq, Ord, Read, Show)
-
-_KeywordPatterns = Core.Name "hydra.python.syntax.KeywordPatterns"
-
-data KeywordPattern =
-  KeywordPattern {
-    keywordPatternName :: Name,
-    keywordPatternPattern :: Pattern}
-  deriving (Eq, Ord, Read, Show)
-
-_KeywordPattern = Core.Name "hydra.python.syntax.KeywordPattern"
-
-_KeywordPattern_name = Core.Name "name"
-
-_KeywordPattern_pattern = Core.Name "pattern"
-
-data TypeAlias =
-  TypeAlias {
-    typeAliasName :: Name,
-    typeAliasTypeParams :: [TypeParameter],
-    typeAliasExpression :: Expression}
-  deriving (Eq, Ord, Read, Show)
-
-_TypeAlias = Core.Name "hydra.python.syntax.TypeAlias"
-
-_TypeAlias_name = Core.Name "name"
-
-_TypeAlias_typeParams = Core.Name "typeParams"
-
-_TypeAlias_expression = Core.Name "expression"
-
-data TypeParameter =
-  TypeParameterSimple SimpleTypeParameter |
-  TypeParameterStar StarTypeParameter |
-  TypeParameterDoubleStar DoubleStarTypeParameter
-  deriving (Eq, Ord, Read, Show)
-
-_TypeParameter = Core.Name "hydra.python.syntax.TypeParameter"
-
-_TypeParameter_simple = Core.Name "simple"
-
-_TypeParameter_star = Core.Name "star"
-
-_TypeParameter_doubleStar = Core.Name "doubleStar"
-
-data SimpleTypeParameter =
-  SimpleTypeParameter {
-    simpleTypeParameterName :: Name,
-    simpleTypeParameterBound :: (Maybe Expression),
-    simpleTypeParameterDefault :: (Maybe Expression)}
-  deriving (Eq, Ord, Read, Show)
-
-_SimpleTypeParameter = Core.Name "hydra.python.syntax.SimpleTypeParameter"
-
-_SimpleTypeParameter_name = Core.Name "name"
-
-_SimpleTypeParameter_bound = Core.Name "bound"
-
-_SimpleTypeParameter_default = Core.Name "default"
-
-data StarTypeParameter =
-  StarTypeParameter {
-    starTypeParameterName :: Name,
-    starTypeParameterDefault :: (Maybe StarExpression)}
-  deriving (Eq, Ord, Read, Show)
-
-_StarTypeParameter = Core.Name "hydra.python.syntax.StarTypeParameter"
-
-_StarTypeParameter_name = Core.Name "name"
-
-_StarTypeParameter_default = Core.Name "default"
-
-data DoubleStarTypeParameter =
-  DoubleStarTypeParameter {
-    doubleStarTypeParameterName :: Name,
-    doubleStarTypeParameterDefault :: (Maybe Expression)}
-  deriving (Eq, Ord, Read, Show)
-
-_DoubleStarTypeParameter = Core.Name "hydra.python.syntax.DoubleStarTypeParameter"
-
-_DoubleStarTypeParameter_name = Core.Name "name"
-
-_DoubleStarTypeParameter_default = Core.Name "default"
-
-data Expression =
-  ExpressionConditional Conditional |
-  ExpressionSimple Disjunction |
-  ExpressionLambda Lambda
-  deriving (Eq, Ord, Read, Show)
-
-_Expression = Core.Name "hydra.python.syntax.Expression"
-
-_Expression_conditional = Core.Name "conditional"
-
-_Expression_simple = Core.Name "simple"
-
-_Expression_lambda = Core.Name "lambda"
-
-data Conditional =
-  Conditional {
-    conditionalBody :: Disjunction,
-    conditionalIf :: Disjunction,
-    conditionalElse :: Expression}
-  deriving (Eq, Ord, Read, Show)
-
-_Conditional = Core.Name "hydra.python.syntax.Conditional"
-
-_Conditional_body = Core.Name "body"
-
-_Conditional_if = Core.Name "if"
-
-_Conditional_else = Core.Name "else"
-
-data YieldExpression =
-  YieldExpressionFrom Expression |
-  YieldExpressionSimple [StarExpression]
-  deriving (Eq, Ord, Read, Show)
-
-_YieldExpression = Core.Name "hydra.python.syntax.YieldExpression"
-
-_YieldExpression_from = Core.Name "from"
-
-_YieldExpression_simple = Core.Name "simple"
-
-data StarExpression =
-  StarExpressionStar BitwiseOr |
-  StarExpressionSimple Expression
-  deriving (Eq, Ord, Read, Show)
-
-_StarExpression = Core.Name "hydra.python.syntax.StarExpression"
-
-_StarExpression_star = Core.Name "star"
-
-_StarExpression_simple = Core.Name "simple"
-
-newtype StarNamedExpressions =
-  StarNamedExpressions {
-    unStarNamedExpressions :: [StarNamedExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_StarNamedExpressions = Core.Name "hydra.python.syntax.StarNamedExpressions"
-
-data StarNamedExpression =
-  StarNamedExpressionStar BitwiseOr |
-  StarNamedExpressionSimple NamedExpression
-  deriving (Eq, Ord, Read, Show)
-
-_StarNamedExpression = Core.Name "hydra.python.syntax.StarNamedExpression"
-
-_StarNamedExpression_star = Core.Name "star"
-
-_StarNamedExpression_simple = Core.Name "simple"
-
-data AssignmentExpression =
-  AssignmentExpression {
-    assignmentExpressionName :: Name,
-    assignmentExpressionExpression :: Expression}
-  deriving (Eq, Ord, Read, Show)
-
-_AssignmentExpression = Core.Name "hydra.python.syntax.AssignmentExpression"
-
-_AssignmentExpression_name = Core.Name "name"
-
-_AssignmentExpression_expression = Core.Name "expression"
-
-data NamedExpression =
-  NamedExpressionAssignment AssignmentExpression |
-  NamedExpressionSimple Expression
-  deriving (Eq, Ord, Read, Show)
-
-_NamedExpression = Core.Name "hydra.python.syntax.NamedExpression"
-
-_NamedExpression_assignment = Core.Name "assignment"
-
-_NamedExpression_simple = Core.Name "simple"
-
-newtype Disjunction =
-  Disjunction {
-    unDisjunction :: [Conjunction]}
-  deriving (Eq, Ord, Read, Show)
-
-_Disjunction = Core.Name "hydra.python.syntax.Disjunction"
-
-newtype Conjunction =
-  Conjunction {
-    unConjunction :: [Inversion]}
-  deriving (Eq, Ord, Read, Show)
-
-_Conjunction = Core.Name "hydra.python.syntax.Conjunction"
-
-data Inversion =
-  InversionNot Inversion |
-  InversionSimple Comparison
-  deriving (Eq, Ord, Read, Show)
-
-_Inversion = Core.Name "hydra.python.syntax.Inversion"
-
-_Inversion_not = Core.Name "not"
-
-_Inversion_simple = Core.Name "simple"
-
-data Comparison =
-  Comparison {
-    comparisonLhs :: BitwiseOr,
-    comparisonRhs :: [CompareOpBitwiseOrPair]}
-  deriving (Eq, Ord, Read, Show)
-
-_Comparison = Core.Name "hydra.python.syntax.Comparison"
-
-_Comparison_lhs = Core.Name "lhs"
-
-_Comparison_rhs = Core.Name "rhs"
-
-data CompareOpBitwiseOrPair =
-  CompareOpBitwiseOrPair {
-    compareOpBitwiseOrPairOperator :: CompareOp,
-    compareOpBitwiseOrPairRhs :: BitwiseOr}
-  deriving (Eq, Ord, Read, Show)
-
-_CompareOpBitwiseOrPair = Core.Name "hydra.python.syntax.CompareOpBitwiseOrPair"
-
-_CompareOpBitwiseOrPair_operator = Core.Name "operator"
-
-_CompareOpBitwiseOrPair_rhs = Core.Name "rhs"
-
-data CompareOp =
-  CompareOpEq |
-  CompareOpNoteq |
-  CompareOpLte |
-  CompareOpLt |
-  CompareOpGte |
-  CompareOpGt |
-  CompareOpNotin |
-  CompareOpIn |
-  CompareOpIsnot |
-  CompareOpIs
-  deriving (Eq, Ord, Read, Show)
-
-_CompareOp = Core.Name "hydra.python.syntax.CompareOp"
-
-_CompareOp_eq = Core.Name "eq"
-
-_CompareOp_noteq = Core.Name "noteq"
-
-_CompareOp_lte = Core.Name "lte"
-
-_CompareOp_lt = Core.Name "lt"
-
-_CompareOp_gte = Core.Name "gte"
-
-_CompareOp_gt = Core.Name "gt"
-
-_CompareOp_notin = Core.Name "notin"
-
-_CompareOp_in = Core.Name "in"
-
-_CompareOp_isnot = Core.Name "isnot"
-
-_CompareOp_is = Core.Name "is"
-
-data BitwiseOr =
-  BitwiseOr {
-    bitwiseOrLhs :: (Maybe BitwiseOr),
-    bitwiseOrRhs :: BitwiseXor}
-  deriving (Eq, Ord, Read, Show)
-
-_BitwiseOr = Core.Name "hydra.python.syntax.BitwiseOr"
-
-_BitwiseOr_lhs = Core.Name "lhs"
-
-_BitwiseOr_rhs = Core.Name "rhs"
-
-data BitwiseXor =
-  BitwiseXor {
-    bitwiseXorLhs :: (Maybe BitwiseXor),
-    bitwiseXorRhs :: BitwiseAnd}
-  deriving (Eq, Ord, Read, Show)
-
-_BitwiseXor = Core.Name "hydra.python.syntax.BitwiseXor"
-
-_BitwiseXor_lhs = Core.Name "lhs"
-
-_BitwiseXor_rhs = Core.Name "rhs"
-
-data BitwiseAnd =
-  BitwiseAnd {
-    bitwiseAndLhs :: (Maybe BitwiseAnd),
-    bitwiseAndRhs :: ShiftExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_BitwiseAnd = Core.Name "hydra.python.syntax.BitwiseAnd"
-
-_BitwiseAnd_lhs = Core.Name "lhs"
-
-_BitwiseAnd_rhs = Core.Name "rhs"
-
-data ShiftExpression =
-  ShiftExpression {
-    shiftExpressionLhs :: (Maybe ShiftLhs),
-    shiftExpressionRhs :: Sum}
-  deriving (Eq, Ord, Read, Show)
-
-_ShiftExpression = Core.Name "hydra.python.syntax.ShiftExpression"
-
-_ShiftExpression_lhs = Core.Name "lhs"
-
-_ShiftExpression_rhs = Core.Name "rhs"
-
-data ShiftLhs =
-  ShiftLhs {
-    shiftLhsOperand :: ShiftExpression,
-    shiftLhsOperator :: ShiftOp}
-  deriving (Eq, Ord, Read, Show)
-
-_ShiftLhs = Core.Name "hydra.python.syntax.ShiftLhs"
-
-_ShiftLhs_operand = Core.Name "operand"
-
-_ShiftLhs_operator = Core.Name "operator"
-
-data ShiftOp =
-  ShiftOpLeft |
-  ShiftOpRight
-  deriving (Eq, Ord, Read, Show)
-
-_ShiftOp = Core.Name "hydra.python.syntax.ShiftOp"
-
-_ShiftOp_left = Core.Name "left"
-
-_ShiftOp_right = Core.Name "right"
-
-data Sum =
-  Sum {
-    sumLhs :: (Maybe SumLhs),
-    sumRhs :: Term}
-  deriving (Eq, Ord, Read, Show)
-
-_Sum = Core.Name "hydra.python.syntax.Sum"
-
-_Sum_lhs = Core.Name "lhs"
-
-_Sum_rhs = Core.Name "rhs"
-
-data SumLhs =
-  SumLhs {
-    sumLhsOperand :: Sum,
-    sumLhsOperator :: SumOp}
-  deriving (Eq, Ord, Read, Show)
-
-_SumLhs = Core.Name "hydra.python.syntax.SumLhs"
-
-_SumLhs_operand = Core.Name "operand"
-
-_SumLhs_operator = Core.Name "operator"
-
-data SumOp =
-  SumOpAdd |
-  SumOpSub
-  deriving (Eq, Ord, Read, Show)
-
-_SumOp = Core.Name "hydra.python.syntax.SumOp"
-
-_SumOp_add = Core.Name "add"
-
-_SumOp_sub = Core.Name "sub"
-
-data Term =
-  Term {
-    termLhs :: (Maybe TermLhs),
-    termRhs :: Factor}
-  deriving (Eq, Ord, Read, Show)
-
-_Term = Core.Name "hydra.python.syntax.Term"
-
-_Term_lhs = Core.Name "lhs"
-
-_Term_rhs = Core.Name "rhs"
-
-data TermLhs =
-  TermLhs {
-    termLhsOperand :: Term,
-    termLhsOperator :: TermOp}
-  deriving (Eq, Ord, Read, Show)
-
-_TermLhs = Core.Name "hydra.python.syntax.TermLhs"
-
-_TermLhs_operand = Core.Name "operand"
-
-_TermLhs_operator = Core.Name "operator"
-
-data TermOp =
-  TermOpMul |
-  TermOpDiv |
-  TermOpFloordiv |
-  TermOpMod |
-  TermOpMatmul
-  deriving (Eq, Ord, Read, Show)
-
-_TermOp = Core.Name "hydra.python.syntax.TermOp"
-
-_TermOp_mul = Core.Name "mul"
-
-_TermOp_div = Core.Name "div"
-
-_TermOp_floordiv = Core.Name "floordiv"
-
-_TermOp_mod = Core.Name "mod"
-
-_TermOp_matmul = Core.Name "matmul"
-
-data Factor =
-  FactorPositive Factor |
-  FactorNegative Factor |
-  FactorComplement Factor |
-  FactorSimple Power
-  deriving (Eq, Ord, Read, Show)
-
-_Factor = Core.Name "hydra.python.syntax.Factor"
-
-_Factor_positive = Core.Name "positive"
-
-_Factor_negative = Core.Name "negative"
-
-_Factor_complement = Core.Name "complement"
-
-_Factor_simple = Core.Name "simple"
-
-data Power =
-  Power {
-    powerLhs :: AwaitPrimary,
-    powerRhs :: (Maybe Factor)}
-  deriving (Eq, Ord, Read, Show)
-
-_Power = Core.Name "hydra.python.syntax.Power"
-
-_Power_lhs = Core.Name "lhs"
-
-_Power_rhs = Core.Name "rhs"
-
-data AwaitPrimary =
-  AwaitPrimary {
-    awaitPrimaryAwait :: Bool,
-    awaitPrimaryPrimary :: Primary}
-  deriving (Eq, Ord, Read, Show)
-
-_AwaitPrimary = Core.Name "hydra.python.syntax.AwaitPrimary"
-
-_AwaitPrimary_await = Core.Name "await"
-
-_AwaitPrimary_primary = Core.Name "primary"
-
-data Primary =
-  PrimarySimple Atom |
-  PrimaryCompound PrimaryWithRhs
-  deriving (Eq, Ord, Read, Show)
-
-_Primary = Core.Name "hydra.python.syntax.Primary"
-
-_Primary_simple = Core.Name "simple"
-
-_Primary_compound = Core.Name "compound"
-
-data PrimaryWithRhs =
-  PrimaryWithRhs {
-    primaryWithRhsPrimary :: Primary,
-    primaryWithRhsRhs :: PrimaryRhs}
-  deriving (Eq, Ord, Read, Show)
-
-_PrimaryWithRhs = Core.Name "hydra.python.syntax.PrimaryWithRhs"
-
-_PrimaryWithRhs_primary = Core.Name "primary"
-
-_PrimaryWithRhs_rhs = Core.Name "rhs"
-
-data PrimaryRhs =
-  PrimaryRhsProject Name |
-  PrimaryRhsGenexp Genexp |
-  PrimaryRhsCall Args |
-  PrimaryRhsSlices Slices
-  deriving (Eq, Ord, Read, Show)
-
-_PrimaryRhs = Core.Name "hydra.python.syntax.PrimaryRhs"
-
-_PrimaryRhs_project = Core.Name "project"
-
-_PrimaryRhs_genexp = Core.Name "genexp"
-
-_PrimaryRhs_call = Core.Name "call"
-
-_PrimaryRhs_slices = Core.Name "slices"
-
-data Slices =
-  Slices {
-    slicesHead :: Slice,
-    slicesTail :: [SliceOrStarredExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_Slices = Core.Name "hydra.python.syntax.Slices"
-
-_Slices_head = Core.Name "head"
-
-_Slices_tail = Core.Name "tail"
-
-data SliceOrStarredExpression =
-  SliceOrStarredExpressionSlice Slice |
-  SliceOrStarredExpressionStarred StarredExpression
-  deriving (Eq, Ord, Read, Show)
-
-_SliceOrStarredExpression = Core.Name "hydra.python.syntax.SliceOrStarredExpression"
-
-_SliceOrStarredExpression_slice = Core.Name "slice"
-
-_SliceOrStarredExpression_starred = Core.Name "starred"
-
-data Slice =
-  SliceNamed NamedExpression |
-  SliceSlice_ SliceExpression
-  deriving (Eq, Ord, Read, Show)
-
-_Slice = Core.Name "hydra.python.syntax.Slice"
-
-_Slice_named = Core.Name "named"
-
-_Slice_slice_ = Core.Name "slice_"
-
-data SliceExpression =
-  SliceExpression {
-    sliceExpressionStart :: (Maybe Expression),
-    sliceExpressionStop :: (Maybe Expression),
-    sliceExpressionStep :: (Maybe Expression)}
-  deriving (Eq, Ord, Read, Show)
-
-_SliceExpression = Core.Name "hydra.python.syntax.SliceExpression"
-
-_SliceExpression_start = Core.Name "start"
-
-_SliceExpression_stop = Core.Name "stop"
-
-_SliceExpression_step = Core.Name "step"
-
-data Atom =
-  AtomName Name |
-  AtomTrue |
-  AtomFalse |
-  AtomNone |
-  AtomString String_ |
-  AtomNumber Number |
-  AtomTuple Tuple |
-  AtomGroup Group |
-  AtomGenexp Genexp |
-  AtomList List |
-  AtomListcomp Listcomp |
-  AtomDict Dict |
-  AtomSet Set |
-  AtomDictcomp Dictcomp |
-  AtomSetcomp Setcomp |
-  AtomEllipsis
-  deriving (Eq, Ord, Read, Show)
-
-_Atom = Core.Name "hydra.python.syntax.Atom"
-
-_Atom_name = Core.Name "name"
-
-_Atom_true = Core.Name "true"
-
-_Atom_false = Core.Name "false"
-
-_Atom_none = Core.Name "none"
-
-_Atom_string = Core.Name "string"
-
-_Atom_number = Core.Name "number"
-
-_Atom_tuple = Core.Name "tuple"
-
-_Atom_group = Core.Name "group"
-
-_Atom_genexp = Core.Name "genexp"
-
-_Atom_list = Core.Name "list"
-
-_Atom_listcomp = Core.Name "listcomp"
-
-_Atom_dict = Core.Name "dict"
-
-_Atom_set = Core.Name "set"
-
-_Atom_dictcomp = Core.Name "dictcomp"
-
-_Atom_setcomp = Core.Name "setcomp"
-
-_Atom_ellipsis = Core.Name "ellipsis"
-
-data Group =
-  GroupYield YieldExpression |
-  GroupExpression NamedExpression
-  deriving (Eq, Ord, Read, Show)
-
-_Group = Core.Name "hydra.python.syntax.Group"
-
-_Group_yield = Core.Name "yield"
-
-_Group_expression = Core.Name "expression"
-
-data Lambda =
-  Lambda {
-    lambdaParams :: LambdaParameters,
-    lambdaBody :: Expression}
-  deriving (Eq, Ord, Read, Show)
-
-_Lambda = Core.Name "hydra.python.syntax.Lambda"
-
-_Lambda_params = Core.Name "params"
-
-_Lambda_body = Core.Name "body"
-
-data LambdaParameters =
-  LambdaParameters {
-    lambdaParametersSlashNoDefault :: (Maybe LambdaSlashNoDefault),
-    lambdaParametersParamNoDefault :: [LambdaParamNoDefault],
-    lambdaParametersParamWithDefault :: [LambdaParamWithDefault],
-    lambdaParametersStarEtc :: (Maybe LambdaStarEtc)}
-  deriving (Eq, Ord, Read, Show)
-
-_LambdaParameters = Core.Name "hydra.python.syntax.LambdaParameters"
-
-_LambdaParameters_slashNoDefault = Core.Name "slashNoDefault"
-
-_LambdaParameters_paramNoDefault = Core.Name "paramNoDefault"
-
-_LambdaParameters_paramWithDefault = Core.Name "paramWithDefault"
-
-_LambdaParameters_starEtc = Core.Name "starEtc"
-
-data LambdaSlashNoDefault =
-  LambdaSlashNoDefault {
-    lambdaSlashNoDefaultParameters :: [LambdaParamNoDefault]}
-  deriving (Eq, Ord, Read, Show)
-
-_LambdaSlashNoDefault = Core.Name "hydra.python.syntax.LambdaSlashNoDefault"
-
-_LambdaSlashNoDefault_parameters = Core.Name "parameters"
-
-data LambdaSlashWithDefault =
-  LambdaSlashWithDefault {
-    lambdaSlashWithDefaultParamNoDefault :: [LambdaParamNoDefault],
-    lambdaSlashWithDefaultParamWithDefault :: [LambdaParamWithDefault]}
-  deriving (Eq, Ord, Read, Show)
-
-_LambdaSlashWithDefault = Core.Name "hydra.python.syntax.LambdaSlashWithDefault"
-
-_LambdaSlashWithDefault_paramNoDefault = Core.Name "paramNoDefault"
-
-_LambdaSlashWithDefault_paramWithDefault = Core.Name "paramWithDefault"
-
-data LambdaStarEtc =
-  LambdaStarEtcStar Bool |
-  LambdaStarEtcParamNoDefault LambdaParamNoDefault |
-  LambdaStarEtcParamMaybeDefault [LambdaParamMaybeDefault] |
-  LambdaStarEtcKwds LambdaKwds
-  deriving (Eq, Ord, Read, Show)
-
-_LambdaStarEtc = Core.Name "hydra.python.syntax.LambdaStarEtc"
-
-_LambdaStarEtc_star = Core.Name "star"
-
-_LambdaStarEtc_paramNoDefault = Core.Name "paramNoDefault"
-
-_LambdaStarEtc_paramMaybeDefault = Core.Name "paramMaybeDefault"
-
-_LambdaStarEtc_kwds = Core.Name "kwds"
-
-newtype LambdaKwds =
-  LambdaKwds {
-    unLambdaKwds :: LambdaParamNoDefault}
-  deriving (Eq, Ord, Read, Show)
-
-_LambdaKwds = Core.Name "hydra.python.syntax.LambdaKwds"
-
-newtype LambdaParamNoDefault =
-  LambdaParamNoDefault {
-    unLambdaParamNoDefault :: Name}
-  deriving (Eq, Ord, Read, Show)
-
-_LambdaParamNoDefault = Core.Name "hydra.python.syntax.LambdaParamNoDefault"
-
-data LambdaParamWithDefault =
-  LambdaParamWithDefault {
-    lambdaParamWithDefaultParam :: Name,
-    lambdaParamWithDefaultDefault :: (Maybe Default)}
-  deriving (Eq, Ord, Read, Show)
-
-_LambdaParamWithDefault = Core.Name "hydra.python.syntax.LambdaParamWithDefault"
-
-_LambdaParamWithDefault_param = Core.Name "param"
-
-_LambdaParamWithDefault_default = Core.Name "default"
-
-data LambdaParamMaybeDefault =
-  LambdaParamMaybeDefault {
-    lambdaParamMaybeDefaultParam :: Name,
-    lambdaParamMaybeDefaultDefault :: (Maybe Default)}
-  deriving (Eq, Ord, Read, Show)
-
-_LambdaParamMaybeDefault = Core.Name "hydra.python.syntax.LambdaParamMaybeDefault"
-
-_LambdaParamMaybeDefault_param = Core.Name "param"
-
-_LambdaParamMaybeDefault_default = Core.Name "default"
-
-newtype List =
-  List {
-    unList :: [StarNamedExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_List = Core.Name "hydra.python.syntax.List"
-
-newtype Tuple =
-  Tuple {
-    unTuple :: [StarNamedExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_Tuple = Core.Name "hydra.python.syntax.Tuple"
-
-newtype Set =
-  Set {
-    unSet :: [StarNamedExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_Set = Core.Name "hydra.python.syntax.Set"
-
-newtype Dict =
-  Dict {
-    unDict :: [DoubleStarredKvpair]}
-  deriving (Eq, Ord, Read, Show)
-
-_Dict = Core.Name "hydra.python.syntax.Dict"
-
-data DoubleStarredKvpair =
-  DoubleStarredKvpairStarred BitwiseOr |
-  DoubleStarredKvpairPair Kvpair
-  deriving (Eq, Ord, Read, Show)
-
-_DoubleStarredKvpair = Core.Name "hydra.python.syntax.DoubleStarredKvpair"
-
-_DoubleStarredKvpair_starred = Core.Name "starred"
-
-_DoubleStarredKvpair_pair = Core.Name "pair"
-
-data Kvpair =
-  Kvpair {
-    kvpairKey :: Expression,
-    kvpairValue :: Expression}
-  deriving (Eq, Ord, Read, Show)
-
-_Kvpair = Core.Name "hydra.python.syntax.Kvpair"
-
-_Kvpair_key = Core.Name "key"
-
-_Kvpair_value = Core.Name "value"
-
-newtype ForIfClauses =
-  ForIfClauses {
-    unForIfClauses :: [ForIfClause]}
-  deriving (Eq, Ord, Read, Show)
-
-_ForIfClauses = Core.Name "hydra.python.syntax.ForIfClauses"
-
-data ForIfClause =
-  ForIfClause {
-    forIfClauseAsync :: Bool,
-    forIfClauseTargets :: [StarTarget],
-    forIfClauseIn :: Disjunction,
-    forIfClauseIfs :: [Disjunction]}
-  deriving (Eq, Ord, Read, Show)
-
-_ForIfClause = Core.Name "hydra.python.syntax.ForIfClause"
-
-_ForIfClause_async = Core.Name "async"
-
-_ForIfClause_targets = Core.Name "targets"
-
-_ForIfClause_in = Core.Name "in"
-
-_ForIfClause_ifs = Core.Name "ifs"
-
-data Listcomp =
-  Listcomp {
-    listcompExpression :: NamedExpression,
-    listcompForIfClauses :: ForIfClauses}
-  deriving (Eq, Ord, Read, Show)
-
-_Listcomp = Core.Name "hydra.python.syntax.Listcomp"
-
-_Listcomp_expression = Core.Name "expression"
-
-_Listcomp_forIfClauses = Core.Name "forIfClauses"
-
-data Setcomp =
-  Setcomp {
-    setcompExpression :: NamedExpression,
-    setcompForIfClauses :: ForIfClauses}
-  deriving (Eq, Ord, Read, Show)
-
-_Setcomp = Core.Name "hydra.python.syntax.Setcomp"
-
-_Setcomp_expression = Core.Name "expression"
-
-_Setcomp_forIfClauses = Core.Name "forIfClauses"
-
-data Genexp =
-  Genexp {
-    genexpHead :: GenexpHead,
-    genexpTail :: ForIfClauses}
-  deriving (Eq, Ord, Read, Show)
-
-_Genexp = Core.Name "hydra.python.syntax.Genexp"
-
-_Genexp_head = Core.Name "head"
-
-_Genexp_tail = Core.Name "tail"
-
-data GenexpHead =
-  GenexpHeadAssignment AssignmentExpression |
-  GenexpHeadExpression Expression
-  deriving (Eq, Ord, Read, Show)
-
-_GenexpHead = Core.Name "hydra.python.syntax.GenexpHead"
-
-_GenexpHead_assignment = Core.Name "assignment"
-
-_GenexpHead_expression = Core.Name "expression"
-
-data Dictcomp =
-  Dictcomp {
-    dictcompKvpair :: Kvpair,
-    dictcompForIfClauses :: ForIfClauses}
-  deriving (Eq, Ord, Read, Show)
-
-_Dictcomp = Core.Name "hydra.python.syntax.Dictcomp"
-
-_Dictcomp_kvpair = Core.Name "kvpair"
-
-_Dictcomp_forIfClauses = Core.Name "forIfClauses"
-
-data Args =
-  Args {
-    argsPositional :: [PosArg],
-    argsKwargOrStarred :: [KwargOrStarred],
-    argsKwargOrDoubleStarred :: [KwargOrDoubleStarred]}
-  deriving (Eq, Ord, Read, Show)
-
-_Args = Core.Name "hydra.python.syntax.Args"
-
-_Args_positional = Core.Name "positional"
-
-_Args_kwargOrStarred = Core.Name "kwargOrStarred"
-
-_Args_kwargOrDoubleStarred = Core.Name "kwargOrDoubleStarred"
-
-data PosArg =
-  PosArgStarred StarredExpression |
-  PosArgAssignment AssignmentExpression |
-  PosArgExpression Expression
-  deriving (Eq, Ord, Read, Show)
-
-_PosArg = Core.Name "hydra.python.syntax.PosArg"
-
-_PosArg_starred = Core.Name "starred"
-
-_PosArg_assignment = Core.Name "assignment"
-
-_PosArg_expression = Core.Name "expression"
-
-newtype StarredExpression =
-  StarredExpression {
-    unStarredExpression :: Expression}
-  deriving (Eq, Ord, Read, Show)
-
-_StarredExpression = Core.Name "hydra.python.syntax.StarredExpression"
-
-data KwargOrStarred =
-  KwargOrStarredKwarg Kwarg |
-  KwargOrStarredStarred StarredExpression
-  deriving (Eq, Ord, Read, Show)
-
-_KwargOrStarred = Core.Name "hydra.python.syntax.KwargOrStarred"
-
-_KwargOrStarred_kwarg = Core.Name "kwarg"
-
-_KwargOrStarred_starred = Core.Name "starred"
-
-data Kwarg =
-  Kwarg {
-    kwargName :: Name,
-    kwargValue :: Expression}
-  deriving (Eq, Ord, Read, Show)
-
-_Kwarg = Core.Name "hydra.python.syntax.Kwarg"
-
-_Kwarg_name = Core.Name "name"
-
-_Kwarg_value = Core.Name "value"
-
-data KwargOrDoubleStarred =
-  KwargOrDoubleStarredKwarg Kwarg |
-  KwargOrDoubleStarredDoubleStarred Expression
-  deriving (Eq, Ord, Read, Show)
-
-_KwargOrDoubleStarred = Core.Name "hydra.python.syntax.KwargOrDoubleStarred"
-
-_KwargOrDoubleStarred_kwarg = Core.Name "kwarg"
-
-_KwargOrDoubleStarred_doubleStarred = Core.Name "doubleStarred"
-
-newtype StarTargetsListSeq =
-  StarTargetsListSeq {
-    unStarTargetsListSeq :: [StarTarget]}
-  deriving (Eq, Ord, Read, Show)
-
-_StarTargetsListSeq = Core.Name "hydra.python.syntax.StarTargetsListSeq"
-
-newtype StarTargetsTupleSeq =
-  StarTargetsTupleSeq {
-    unStarTargetsTupleSeq :: [StarTarget]}
-  deriving (Eq, Ord, Read, Show)
-
-_StarTargetsTupleSeq = Core.Name "hydra.python.syntax.StarTargetsTupleSeq"
-
-data StarTarget =
-  StarTargetStarred StarTarget |
-  StarTargetUnstarred TargetWithStarAtom
-  deriving (Eq, Ord, Read, Show)
-
-_StarTarget = Core.Name "hydra.python.syntax.StarTarget"
-
-_StarTarget_starred = Core.Name "starred"
-
-_StarTarget_unstarred = Core.Name "unstarred"
-
-data TargetWithStarAtom =
-  TargetWithStarAtomProject TPrimaryAndName |
-  TargetWithStarAtomSlices TPrimaryAndSlices |
-  TargetWithStarAtomAtom StarAtom
-  deriving (Eq, Ord, Read, Show)
-
-_TargetWithStarAtom = Core.Name "hydra.python.syntax.TargetWithStarAtom"
-
-_TargetWithStarAtom_project = Core.Name "project"
-
-_TargetWithStarAtom_slices = Core.Name "slices"
-
-_TargetWithStarAtom_atom = Core.Name "atom"
-
-data TPrimaryAndName =
-  TPrimaryAndName {
-    tPrimaryAndNamePrimary :: TPrimary,
-    tPrimaryAndNameName :: Name}
-  deriving (Eq, Ord, Read, Show)
-
-_TPrimaryAndName = Core.Name "hydra.python.syntax.TPrimaryAndName"
-
-_TPrimaryAndName_primary = Core.Name "primary"
-
-_TPrimaryAndName_name = Core.Name "name"
-
-data TPrimaryAndSlices =
-  TPrimaryAndSlices {
-    tPrimaryAndSlicesPrimary :: TPrimary,
-    tPrimaryAndSlicesSlices :: Slices}
-  deriving (Eq, Ord, Read, Show)
-
-_TPrimaryAndSlices = Core.Name "hydra.python.syntax.TPrimaryAndSlices"
-
-_TPrimaryAndSlices_primary = Core.Name "primary"
-
-_TPrimaryAndSlices_slices = Core.Name "slices"
-
-data StarAtom =
-  StarAtomName Name |
-  StarAtomTargetWithStarAtom TargetWithStarAtom |
-  StarAtomStarTargetsTupleSeq (Maybe StarTargetsTupleSeq) |
-  StarAtomStarTargetsListSeq (Maybe StarTargetsListSeq)
-  deriving (Eq, Ord, Read, Show)
-
-_StarAtom = Core.Name "hydra.python.syntax.StarAtom"
-
-_StarAtom_name = Core.Name "name"
-
-_StarAtom_targetWithStarAtom = Core.Name "targetWithStarAtom"
-
-_StarAtom_starTargetsTupleSeq = Core.Name "starTargetsTupleSeq"
-
-_StarAtom_starTargetsListSeq = Core.Name "starTargetsListSeq"
-
-data SingleTarget =
-  SingleTargetSubscriptAttributeTarget SingleSubscriptAttributeTarget |
-  SingleTargetName Name |
-  SingleTargetParens SingleTarget
-  deriving (Eq, Ord, Read, Show)
-
-_SingleTarget = Core.Name "hydra.python.syntax.SingleTarget"
-
-_SingleTarget_subscriptAttributeTarget = Core.Name "subscriptAttributeTarget"
-
-_SingleTarget_name = Core.Name "name"
-
-_SingleTarget_parens = Core.Name "parens"
-
-data SingleSubscriptAttributeTarget =
-  SingleSubscriptAttributeTargetPrimaryAndName TPrimaryAndName |
-  SingleSubscriptAttributeTargetPrimaryAndSlices TPrimaryAndSlices
-  deriving (Eq, Ord, Read, Show)
-
-_SingleSubscriptAttributeTarget = Core.Name "hydra.python.syntax.SingleSubscriptAttributeTarget"
-
-_SingleSubscriptAttributeTarget_primaryAndName = Core.Name "primaryAndName"
-
-_SingleSubscriptAttributeTarget_primaryAndSlices = Core.Name "primaryAndSlices"
-
-data TPrimary =
-  TPrimaryPrimaryAndName TPrimaryAndName |
-  TPrimaryPrimaryAndSlices TPrimaryAndSlices |
-  TPrimaryPrimaryAndGenexp TPrimaryAndGenexp |
-  TPrimaryPrimaryAndArguments TPrimaryAndArguments |
-  TPrimaryAtom Atom
-  deriving (Eq, Ord, Read, Show)
-
-_TPrimary = Core.Name "hydra.python.syntax.TPrimary"
-
-_TPrimary_primaryAndName = Core.Name "primaryAndName"
-
-_TPrimary_primaryAndSlices = Core.Name "primaryAndSlices"
-
-_TPrimary_primaryAndGenexp = Core.Name "primaryAndGenexp"
-
-_TPrimary_primaryAndArguments = Core.Name "primaryAndArguments"
-
-_TPrimary_atom = Core.Name "atom"
-
-data TPrimaryAndGenexp =
-  TPrimaryAndGenexp {
-    tPrimaryAndGenexpPrimary :: TPrimary,
-    tPrimaryAndGenexpGenexp :: Genexp}
-  deriving (Eq, Ord, Read, Show)
-
-_TPrimaryAndGenexp = Core.Name "hydra.python.syntax.TPrimaryAndGenexp"
-
-_TPrimaryAndGenexp_primary = Core.Name "primary"
-
-_TPrimaryAndGenexp_genexp = Core.Name "genexp"
-
-data TPrimaryAndArguments =
-  TPrimaryAndArguments {
-    tPrimaryAndArgumentsPrimary :: TPrimary,
-    tPrimaryAndArgumentsArguments :: (Maybe Args)}
-  deriving (Eq, Ord, Read, Show)
-
-_TPrimaryAndArguments = Core.Name "hydra.python.syntax.TPrimaryAndArguments"
-
-_TPrimaryAndArguments_primary = Core.Name "primary"
-
-_TPrimaryAndArguments_arguments = Core.Name "arguments"
-
-newtype DelTargets =
-  DelTargets {
-    unDelTargets :: [DelTarget]}
-  deriving (Eq, Ord, Read, Show)
-
-_DelTargets = Core.Name "hydra.python.syntax.DelTargets"
-
-data DelTarget =
-  DelTargetPrimaryAndName TPrimaryAndName |
-  DelTargetPrimaryAndSlices TPrimaryAndSlices |
-  DelTargetDelTAtom DelTAtom
-  deriving (Eq, Ord, Read, Show)
-
-_DelTarget = Core.Name "hydra.python.syntax.DelTarget"
-
-_DelTarget_primaryAndName = Core.Name "primaryAndName"
-
-_DelTarget_primaryAndSlices = Core.Name "primaryAndSlices"
-
-_DelTarget_delTAtom = Core.Name "delTAtom"
-
-data DelTAtom =
-  DelTAtomName Name |
-  DelTAtomTarget DelTarget |
-  DelTAtomTargets DelTargets
-  deriving (Eq, Ord, Read, Show)
-
-_DelTAtom = Core.Name "hydra.python.syntax.DelTAtom"
-
-_DelTAtom_name = Core.Name "name"
-
-_DelTAtom_target = Core.Name "target"
-
-_DelTAtom_targets = Core.Name "targets"
-
-data TypeExpression =
-  TypeExpressionExpression Expression |
-  TypeExpressionStarredExpression Expression |
-  TypeExpressionDoubleStarredExpression Expression
-  deriving (Eq, Ord, Read, Show)
-
-_TypeExpression = Core.Name "hydra.python.syntax.TypeExpression"
-
-_TypeExpression_expression = Core.Name "expression"
-
-_TypeExpression_starredExpression = Core.Name "starredExpression"
-
-_TypeExpression_doubleStarredExpression = Core.Name "doubleStarredExpression"
-
-newtype FuncTypeComment =
-  FuncTypeComment {
-    unFuncTypeComment :: TypeComment}
-  deriving (Eq, Ord, Read, Show)
-
-_FuncTypeComment = Core.Name "hydra.python.syntax.FuncTypeComment"
+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
+
+data AnnotatedStatement =
+  AnnotatedStatement {
+    annotatedStatementComment :: String,
+    annotatedStatementStatement :: Statement}
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotatedStatement = Model.Name "hydra.python.syntax.AnnotatedStatement"
+
+_AnnotatedStatement_comment = Model.Name "comment"
+
+_AnnotatedStatement_statement = Model.Name "statement"
+
+newtype Module =
+  Module {
+    unModule :: [[Statement]]}
+  deriving (Eq, Ord, Read, Show)
+
+_Module = Model.Name "hydra.python.syntax.Module"
+
+data QuoteStyle =
+  QuoteStyleSingle |
+  QuoteStyleDouble |
+  QuoteStyleTripleSingle |
+  QuoteStyleTripleDouble
+  deriving (Eq, Ord, Read, Show)
+
+_QuoteStyle = Model.Name "hydra.python.syntax.QuoteStyle"
+
+_QuoteStyle_single = Model.Name "single"
+
+_QuoteStyle_double = Model.Name "double"
+
+_QuoteStyle_tripleSingle = Model.Name "tripleSingle"
+
+_QuoteStyle_tripleDouble = Model.Name "tripleDouble"
+
+data StringPrefix =
+  StringPrefixRaw |
+  StringPrefixBytes |
+  StringPrefixRawBytes |
+  StringPrefixUnicode
+  deriving (Eq, Ord, Read, Show)
+
+_StringPrefix = Model.Name "hydra.python.syntax.StringPrefix"
+
+_StringPrefix_raw = Model.Name "raw"
+
+_StringPrefix_bytes = Model.Name "bytes"
+
+_StringPrefix_rawBytes = Model.Name "rawBytes"
+
+_StringPrefix_unicode = Model.Name "unicode"
+
+newtype Name =
+  Name {
+    unName :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Name = Model.Name "hydra.python.syntax.Name"
+
+data Number =
+  NumberInteger Integer |
+  NumberFloat Double |
+  NumberImaginary Double
+  deriving (Eq, Ord, Read, Show)
+
+_Number = Model.Name "hydra.python.syntax.Number"
+
+_Number_integer = Model.Name "integer"
+
+_Number_float = Model.Name "float"
+
+_Number_imaginary = Model.Name "imaginary"
+
+data String_ =
+  String_ {
+    stringValue :: String,
+    stringPrefix :: (Maybe StringPrefix),
+    stringQuoteStyle :: QuoteStyle}
+  deriving (Eq, Ord, Read, Show)
+
+_String = Model.Name "hydra.python.syntax.String"
+
+_String_value = Model.Name "value"
+
+_String_prefix = Model.Name "prefix"
+
+_String_quoteStyle = Model.Name "quoteStyle"
+
+newtype TypeComment =
+  TypeComment {
+    unTypeComment :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_TypeComment = Model.Name "hydra.python.syntax.TypeComment"
+
+newtype File =
+  File {
+    unFile :: [Statement]}
+  deriving (Eq, Ord, Read, Show)
+
+_File = Model.Name "hydra.python.syntax.File"
+
+newtype Interactive =
+  Interactive {
+    unInteractive :: Statement}
+  deriving (Eq, Ord, Read, Show)
+
+_Interactive = Model.Name "hydra.python.syntax.Interactive"
+
+newtype Eval =
+  Eval {
+    unEval :: [Expression]}
+  deriving (Eq, Ord, Read, Show)
+
+_Eval = Model.Name "hydra.python.syntax.Eval"
+
+data Statement =
+  StatementCompound CompoundStatement |
+  StatementSimple [SimpleStatement] |
+  StatementAnnotated AnnotatedStatement
+  deriving (Eq, Ord, Read, Show)
+
+_Statement = Model.Name "hydra.python.syntax.Statement"
+
+_Statement_compound = Model.Name "compound"
+
+_Statement_simple = Model.Name "simple"
+
+_Statement_annotated = Model.Name "annotated"
+
+data SimpleStatement =
+  SimpleStatementAssignment Assignment |
+  SimpleStatementTypeAlias TypeAlias |
+  SimpleStatementStarExpressions [StarExpression] |
+  SimpleStatementReturn ReturnStatement |
+  SimpleStatementImport ImportStatement |
+  SimpleStatementRaise RaiseStatement |
+  SimpleStatementPass |
+  SimpleStatementDel DelStatement |
+  SimpleStatementYield YieldStatement |
+  SimpleStatementAssert AssertStatement |
+  SimpleStatementBreak |
+  SimpleStatementContinue |
+  SimpleStatementGlobal [Name] |
+  SimpleStatementNonlocal [Name]
+  deriving (Eq, Ord, Read, Show)
+
+_SimpleStatement = Model.Name "hydra.python.syntax.SimpleStatement"
+
+_SimpleStatement_assignment = Model.Name "assignment"
+
+_SimpleStatement_typeAlias = Model.Name "typeAlias"
+
+_SimpleStatement_starExpressions = Model.Name "starExpressions"
+
+_SimpleStatement_return = Model.Name "return"
+
+_SimpleStatement_import = Model.Name "import"
+
+_SimpleStatement_raise = Model.Name "raise"
+
+_SimpleStatement_pass = Model.Name "pass"
+
+_SimpleStatement_del = Model.Name "del"
+
+_SimpleStatement_yield = Model.Name "yield"
+
+_SimpleStatement_assert = Model.Name "assert"
+
+_SimpleStatement_break = Model.Name "break"
+
+_SimpleStatement_continue = Model.Name "continue"
+
+_SimpleStatement_global = Model.Name "global"
+
+_SimpleStatement_nonlocal = Model.Name "nonlocal"
+
+data CompoundStatement =
+  CompoundStatementFunction FunctionDefinition |
+  CompoundStatementIf IfStatement |
+  CompoundStatementClassDef ClassDefinition |
+  CompoundStatementWith WithStatement |
+  CompoundStatementFor ForStatement |
+  CompoundStatementTry TryStatement |
+  CompoundStatementWhile WhileStatement |
+  CompoundStatementMatch MatchStatement
+  deriving (Eq, Ord, Read, Show)
+
+_CompoundStatement = Model.Name "hydra.python.syntax.CompoundStatement"
+
+_CompoundStatement_function = Model.Name "function"
+
+_CompoundStatement_if = Model.Name "if"
+
+_CompoundStatement_classDef = Model.Name "classDef"
+
+_CompoundStatement_with = Model.Name "with"
+
+_CompoundStatement_for = Model.Name "for"
+
+_CompoundStatement_try = Model.Name "try"
+
+_CompoundStatement_while = Model.Name "while"
+
+_CompoundStatement_match = Model.Name "match"
+
+data Assignment =
+  AssignmentTyped TypedAssignment |
+  AssignmentUntyped UntypedAssignment |
+  AssignmentAug AugAssignment
+  deriving (Eq, Ord, Read, Show)
+
+_Assignment = Model.Name "hydra.python.syntax.Assignment"
+
+_Assignment_typed = Model.Name "typed"
+
+_Assignment_untyped = Model.Name "untyped"
+
+_Assignment_aug = Model.Name "aug"
+
+data TypedAssignment =
+  TypedAssignment {
+    typedAssignmentLhs :: SingleTarget,
+    typedAssignmentType :: Expression,
+    typedAssignmentRhs :: (Maybe AnnotatedRhs)}
+  deriving (Eq, Ord, Read, Show)
+
+_TypedAssignment = Model.Name "hydra.python.syntax.TypedAssignment"
+
+_TypedAssignment_lhs = Model.Name "lhs"
+
+_TypedAssignment_type = Model.Name "type"
+
+_TypedAssignment_rhs = Model.Name "rhs"
+
+data UntypedAssignment =
+  UntypedAssignment {
+    untypedAssignmentTargets :: [StarTarget],
+    untypedAssignmentRhs :: AnnotatedRhs,
+    untypedAssignmentTypeComment :: (Maybe TypeComment)}
+  deriving (Eq, Ord, Read, Show)
+
+_UntypedAssignment = Model.Name "hydra.python.syntax.UntypedAssignment"
+
+_UntypedAssignment_targets = Model.Name "targets"
+
+_UntypedAssignment_rhs = Model.Name "rhs"
+
+_UntypedAssignment_typeComment = Model.Name "typeComment"
+
+data AugAssignment =
+  AugAssignment {
+    augAssignmentLhs :: SingleTarget,
+    augAssignmentAugassign :: AugAssign,
+    augAssignmentRhs :: AnnotatedRhs}
+  deriving (Eq, Ord, Read, Show)
+
+_AugAssignment = Model.Name "hydra.python.syntax.AugAssignment"
+
+_AugAssignment_lhs = Model.Name "lhs"
+
+_AugAssignment_augassign = Model.Name "augassign"
+
+_AugAssignment_rhs = Model.Name "rhs"
+
+data AnnotatedRhs =
+  AnnotatedRhsYield YieldExpression |
+  AnnotatedRhsStar [StarExpression]
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotatedRhs = Model.Name "hydra.python.syntax.AnnotatedRhs"
+
+_AnnotatedRhs_yield = Model.Name "yield"
+
+_AnnotatedRhs_star = Model.Name "star"
+
+data AugAssign =
+  AugAssignPlusEqual |
+  AugAssignMinusEqual |
+  AugAssignTimesEqual |
+  AugAssignAtEqual |
+  AugAssignSlashEqual |
+  AugAssignPercentEqual |
+  AugAssignAmpersandEqual |
+  AugAssignBarEqual |
+  AugAssignCaretEqual |
+  AugAssignLeftShiftEqual |
+  AugAssignRightShiftEqual |
+  AugAssignStarStarEqual |
+  AugAssignDoubleSlashEqual
+  deriving (Eq, Ord, Read, Show)
+
+_AugAssign = Model.Name "hydra.python.syntax.AugAssign"
+
+_AugAssign_plusEqual = Model.Name "plusEqual"
+
+_AugAssign_minusEqual = Model.Name "minusEqual"
+
+_AugAssign_timesEqual = Model.Name "timesEqual"
+
+_AugAssign_atEqual = Model.Name "atEqual"
+
+_AugAssign_slashEqual = Model.Name "slashEqual"
+
+_AugAssign_percentEqual = Model.Name "percentEqual"
+
+_AugAssign_ampersandEqual = Model.Name "ampersandEqual"
+
+_AugAssign_barEqual = Model.Name "barEqual"
+
+_AugAssign_caretEqual = Model.Name "caretEqual"
+
+_AugAssign_leftShiftEqual = Model.Name "leftShiftEqual"
+
+_AugAssign_rightShiftEqual = Model.Name "rightShiftEqual"
+
+_AugAssign_starStarEqual = Model.Name "starStarEqual"
+
+_AugAssign_doubleSlashEqual = Model.Name "doubleSlashEqual"
+
+newtype ReturnStatement =
+  ReturnStatement {
+    unReturnStatement :: [StarExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_ReturnStatement = Model.Name "hydra.python.syntax.ReturnStatement"
+
+newtype RaiseStatement =
+  RaiseStatement {
+    unRaiseStatement :: (Maybe RaiseExpression)}
+  deriving (Eq, Ord, Read, Show)
+
+_RaiseStatement = Model.Name "hydra.python.syntax.RaiseStatement"
+
+data RaiseExpression =
+  RaiseExpression {
+    raiseExpressionExpression :: Expression,
+    raiseExpressionFrom :: (Maybe Expression)}
+  deriving (Eq, Ord, Read, Show)
+
+_RaiseExpression = Model.Name "hydra.python.syntax.RaiseExpression"
+
+_RaiseExpression_expression = Model.Name "expression"
+
+_RaiseExpression_from = Model.Name "from"
+
+newtype DelStatement =
+  DelStatement {
+    unDelStatement :: DelTargets}
+  deriving (Eq, Ord, Read, Show)
+
+_DelStatement = Model.Name "hydra.python.syntax.DelStatement"
+
+newtype YieldStatement =
+  YieldStatement {
+    unYieldStatement :: YieldExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_YieldStatement = Model.Name "hydra.python.syntax.YieldStatement"
+
+data AssertStatement =
+  AssertStatement {
+    assertStatementExpression1 :: Expression,
+    assertStatementExpression2 :: (Maybe Expression)}
+  deriving (Eq, Ord, Read, Show)
+
+_AssertStatement = Model.Name "hydra.python.syntax.AssertStatement"
+
+_AssertStatement_expression1 = Model.Name "expression1"
+
+_AssertStatement_expression2 = Model.Name "expression2"
+
+data ImportStatement =
+  ImportStatementName ImportName |
+  ImportStatementFrom ImportFrom
+  deriving (Eq, Ord, Read, Show)
+
+_ImportStatement = Model.Name "hydra.python.syntax.ImportStatement"
+
+_ImportStatement_name = Model.Name "name"
+
+_ImportStatement_from = Model.Name "from"
+
+newtype ImportName =
+  ImportName {
+    unImportName :: [DottedAsName]}
+  deriving (Eq, Ord, Read, Show)
+
+_ImportName = Model.Name "hydra.python.syntax.ImportName"
+
+data ImportFrom =
+  ImportFrom {
+    importFromPrefixes :: [RelativeImportPrefix],
+    importFromDottedName :: (Maybe DottedName),
+    importFromTargets :: ImportFromTargets}
+  deriving (Eq, Ord, Read, Show)
+
+_ImportFrom = Model.Name "hydra.python.syntax.ImportFrom"
+
+_ImportFrom_prefixes = Model.Name "prefixes"
+
+_ImportFrom_dottedName = Model.Name "dottedName"
+
+_ImportFrom_targets = Model.Name "targets"
+
+data RelativeImportPrefix =
+  RelativeImportPrefixDot |
+  RelativeImportPrefixEllipsis
+  deriving (Eq, Ord, Read, Show)
+
+_RelativeImportPrefix = Model.Name "hydra.python.syntax.RelativeImportPrefix"
+
+_RelativeImportPrefix_dot = Model.Name "dot"
+
+_RelativeImportPrefix_ellipsis = Model.Name "ellipsis"
+
+data ImportFromTargets =
+  ImportFromTargetsSimple [ImportFromAsName] |
+  ImportFromTargetsParens [ImportFromAsName] |
+  ImportFromTargetsStar
+  deriving (Eq, Ord, Read, Show)
+
+_ImportFromTargets = Model.Name "hydra.python.syntax.ImportFromTargets"
+
+_ImportFromTargets_simple = Model.Name "simple"
+
+_ImportFromTargets_parens = Model.Name "parens"
+
+_ImportFromTargets_star = Model.Name "star"
+
+data ImportFromAsName =
+  ImportFromAsName {
+    importFromAsNameName :: Name,
+    importFromAsNameAs :: (Maybe Name)}
+  deriving (Eq, Ord, Read, Show)
+
+_ImportFromAsName = Model.Name "hydra.python.syntax.ImportFromAsName"
+
+_ImportFromAsName_name = Model.Name "name"
+
+_ImportFromAsName_as = Model.Name "as"
+
+data DottedAsName =
+  DottedAsName {
+    dottedAsNameName :: DottedName,
+    dottedAsNameAs :: (Maybe Name)}
+  deriving (Eq, Ord, Read, Show)
+
+_DottedAsName = Model.Name "hydra.python.syntax.DottedAsName"
+
+_DottedAsName_name = Model.Name "name"
+
+_DottedAsName_as = Model.Name "as"
+
+newtype DottedName =
+  DottedName {
+    unDottedName :: [Name]}
+  deriving (Eq, Ord, Read, Show)
+
+_DottedName = Model.Name "hydra.python.syntax.DottedName"
+
+data Block =
+  BlockIndented [[Statement]] |
+  BlockSimple [SimpleStatement]
+  deriving (Eq, Ord, Read, Show)
+
+_Block = Model.Name "hydra.python.syntax.Block"
+
+_Block_indented = Model.Name "indented"
+
+_Block_simple = Model.Name "simple"
+
+newtype Decorators =
+  Decorators {
+    unDecorators :: [NamedExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_Decorators = Model.Name "hydra.python.syntax.Decorators"
+
+data ClassDefinition =
+  ClassDefinition {
+    classDefinitionDecorators :: (Maybe Decorators),
+    classDefinitionName :: Name,
+    classDefinitionTypeParams :: [TypeParameter],
+    classDefinitionArguments :: (Maybe Args),
+    classDefinitionBody :: Block}
+  deriving (Eq, Ord, Read, Show)
+
+_ClassDefinition = Model.Name "hydra.python.syntax.ClassDefinition"
+
+_ClassDefinition_decorators = Model.Name "decorators"
+
+_ClassDefinition_name = Model.Name "name"
+
+_ClassDefinition_typeParams = Model.Name "typeParams"
+
+_ClassDefinition_arguments = Model.Name "arguments"
+
+_ClassDefinition_body = Model.Name "body"
+
+data FunctionDefinition =
+  FunctionDefinition {
+    functionDefinitionDecorators :: (Maybe Decorators),
+    functionDefinitionRaw :: FunctionDefRaw}
+  deriving (Eq, Ord, Read, Show)
+
+_FunctionDefinition = Model.Name "hydra.python.syntax.FunctionDefinition"
+
+_FunctionDefinition_decorators = Model.Name "decorators"
+
+_FunctionDefinition_raw = Model.Name "raw"
+
+data FunctionDefRaw =
+  FunctionDefRaw {
+    functionDefRawAsync :: Bool,
+    functionDefRawName :: Name,
+    functionDefRawTypeParams :: [TypeParameter],
+    functionDefRawParams :: (Maybe Parameters),
+    functionDefRawReturnType :: (Maybe Expression),
+    functionDefRawFuncTypeComment :: (Maybe FuncTypeComment),
+    functionDefRawBlock :: Block}
+  deriving (Eq, Ord, Read, Show)
+
+_FunctionDefRaw = Model.Name "hydra.python.syntax.FunctionDefRaw"
+
+_FunctionDefRaw_async = Model.Name "async"
+
+_FunctionDefRaw_name = Model.Name "name"
+
+_FunctionDefRaw_typeParams = Model.Name "typeParams"
+
+_FunctionDefRaw_params = Model.Name "params"
+
+_FunctionDefRaw_returnType = Model.Name "returnType"
+
+_FunctionDefRaw_funcTypeComment = Model.Name "funcTypeComment"
+
+_FunctionDefRaw_block = Model.Name "block"
+
+data Parameters =
+  ParametersSlashNoDefault SlashNoDefaultParameters |
+  ParametersSlashWithDefault SlashWithDefaultParameters |
+  ParametersParamNoDefault ParamNoDefaultParameters |
+  ParametersParamWithDefault ParamWithDefaultParameters |
+  ParametersStarEtc StarEtc
+  deriving (Eq, Ord, Read, Show)
+
+_Parameters = Model.Name "hydra.python.syntax.Parameters"
+
+_Parameters_slashNoDefault = Model.Name "slashNoDefault"
+
+_Parameters_slashWithDefault = Model.Name "slashWithDefault"
+
+_Parameters_paramNoDefault = Model.Name "paramNoDefault"
+
+_Parameters_paramWithDefault = Model.Name "paramWithDefault"
+
+_Parameters_starEtc = Model.Name "starEtc"
+
+data SlashNoDefaultParameters =
+  SlashNoDefaultParameters {
+    slashNoDefaultParametersSlash :: SlashNoDefault,
+    slashNoDefaultParametersParamNoDefault :: [ParamNoDefault],
+    slashNoDefaultParametersParamWithDefault :: [ParamWithDefault],
+    slashNoDefaultParametersStarEtc :: (Maybe StarEtc)}
+  deriving (Eq, Ord, Read, Show)
+
+_SlashNoDefaultParameters = Model.Name "hydra.python.syntax.SlashNoDefaultParameters"
+
+_SlashNoDefaultParameters_slash = Model.Name "slash"
+
+_SlashNoDefaultParameters_paramNoDefault = Model.Name "paramNoDefault"
+
+_SlashNoDefaultParameters_paramWithDefault = Model.Name "paramWithDefault"
+
+_SlashNoDefaultParameters_starEtc = Model.Name "starEtc"
+
+data SlashWithDefaultParameters =
+  SlashWithDefaultParameters {
+    slashWithDefaultParametersParamNoDefault :: [ParamNoDefault],
+    slashWithDefaultParametersParamWithDefault :: [ParamWithDefault],
+    slashWithDefaultParametersStarEtc :: (Maybe StarEtc)}
+  deriving (Eq, Ord, Read, Show)
+
+_SlashWithDefaultParameters = Model.Name "hydra.python.syntax.SlashWithDefaultParameters"
+
+_SlashWithDefaultParameters_paramNoDefault = Model.Name "paramNoDefault"
+
+_SlashWithDefaultParameters_paramWithDefault = Model.Name "paramWithDefault"
+
+_SlashWithDefaultParameters_starEtc = Model.Name "starEtc"
+
+data ParamNoDefaultParameters =
+  ParamNoDefaultParameters {
+    paramNoDefaultParametersParamNoDefault :: [ParamNoDefault],
+    paramNoDefaultParametersParamWithDefault :: [ParamWithDefault],
+    paramNoDefaultParametersStarEtc :: (Maybe StarEtc)}
+  deriving (Eq, Ord, Read, Show)
+
+_ParamNoDefaultParameters = Model.Name "hydra.python.syntax.ParamNoDefaultParameters"
+
+_ParamNoDefaultParameters_paramNoDefault = Model.Name "paramNoDefault"
+
+_ParamNoDefaultParameters_paramWithDefault = Model.Name "paramWithDefault"
+
+_ParamNoDefaultParameters_starEtc = Model.Name "starEtc"
+
+data ParamWithDefaultParameters =
+  ParamWithDefaultParameters {
+    paramWithDefaultParametersParamWithDefault :: [ParamWithDefault],
+    paramWithDefaultParametersStarEtc :: (Maybe StarEtc)}
+  deriving (Eq, Ord, Read, Show)
+
+_ParamWithDefaultParameters = Model.Name "hydra.python.syntax.ParamWithDefaultParameters"
+
+_ParamWithDefaultParameters_paramWithDefault = Model.Name "paramWithDefault"
+
+_ParamWithDefaultParameters_starEtc = Model.Name "starEtc"
+
+newtype SlashNoDefault =
+  SlashNoDefault {
+    unSlashNoDefault :: [ParamNoDefault]}
+  deriving (Eq, Ord, Read, Show)
+
+_SlashNoDefault = Model.Name "hydra.python.syntax.SlashNoDefault"
+
+data SlashWithDefault =
+  SlashWithDefault {
+    slashWithDefaultParamNoDefault :: [ParamNoDefault],
+    slashWithDefaultParamWithDefault :: [ParamWithDefault]}
+  deriving (Eq, Ord, Read, Show)
+
+_SlashWithDefault = Model.Name "hydra.python.syntax.SlashWithDefault"
+
+_SlashWithDefault_paramNoDefault = Model.Name "paramNoDefault"
+
+_SlashWithDefault_paramWithDefault = Model.Name "paramWithDefault"
+
+data StarEtc =
+  StarEtcStarNoDefault NoDefaultStarEtc |
+  StarEtcStarNoDefaultStarAnnotation NoDefaultStarAnnotationStarEtc |
+  StarEtcStarComma CommaStarEtc |
+  StarEtcKeywords Keywords
+  deriving (Eq, Ord, Read, Show)
+
+_StarEtc = Model.Name "hydra.python.syntax.StarEtc"
+
+_StarEtc_starNoDefault = Model.Name "starNoDefault"
+
+_StarEtc_starNoDefaultStarAnnotation = Model.Name "starNoDefaultStarAnnotation"
+
+_StarEtc_starComma = Model.Name "starComma"
+
+_StarEtc_keywords = Model.Name "keywords"
+
+data NoDefaultStarEtc =
+  NoDefaultStarEtc {
+    noDefaultStarEtcParamNoDefault :: ParamNoDefault,
+    noDefaultStarEtcParamMaybeDefault :: [ParamMaybeDefault],
+    noDefaultStarEtcKeywords :: (Maybe Keywords)}
+  deriving (Eq, Ord, Read, Show)
+
+_NoDefaultStarEtc = Model.Name "hydra.python.syntax.NoDefaultStarEtc"
+
+_NoDefaultStarEtc_paramNoDefault = Model.Name "paramNoDefault"
+
+_NoDefaultStarEtc_paramMaybeDefault = Model.Name "paramMaybeDefault"
+
+_NoDefaultStarEtc_keywords = Model.Name "keywords"
+
+data NoDefaultStarAnnotationStarEtc =
+  NoDefaultStarAnnotationStarEtc {
+    noDefaultStarAnnotationStarEtcParamNoDefaultStarAnnotation :: ParamNoDefaultStarAnnotation,
+    noDefaultStarAnnotationStarEtcParamMaybeDefault :: [ParamMaybeDefault],
+    noDefaultStarAnnotationStarEtcKeywords :: (Maybe Keywords)}
+  deriving (Eq, Ord, Read, Show)
+
+_NoDefaultStarAnnotationStarEtc = Model.Name "hydra.python.syntax.NoDefaultStarAnnotationStarEtc"
+
+_NoDefaultStarAnnotationStarEtc_paramNoDefaultStarAnnotation = Model.Name "paramNoDefaultStarAnnotation"
+
+_NoDefaultStarAnnotationStarEtc_paramMaybeDefault = Model.Name "paramMaybeDefault"
+
+_NoDefaultStarAnnotationStarEtc_keywords = Model.Name "keywords"
+
+data CommaStarEtc =
+  CommaStarEtc {
+    commaStarEtcParamMaybeDefault :: [ParamMaybeDefault],
+    commaStarEtcKeywords :: (Maybe Keywords)}
+  deriving (Eq, Ord, Read, Show)
+
+_CommaStarEtc = Model.Name "hydra.python.syntax.CommaStarEtc"
+
+_CommaStarEtc_paramMaybeDefault = Model.Name "paramMaybeDefault"
+
+_CommaStarEtc_keywords = Model.Name "keywords"
+
+newtype Keywords =
+  Keywords {
+    unKeywords :: ParamNoDefault}
+  deriving (Eq, Ord, Read, Show)
+
+_Keywords = Model.Name "hydra.python.syntax.Keywords"
+
+data ParamNoDefault =
+  ParamNoDefault {
+    paramNoDefaultParam :: Param,
+    paramNoDefaultTypeComment :: (Maybe TypeComment)}
+  deriving (Eq, Ord, Read, Show)
+
+_ParamNoDefault = Model.Name "hydra.python.syntax.ParamNoDefault"
+
+_ParamNoDefault_param = Model.Name "param"
+
+_ParamNoDefault_typeComment = Model.Name "typeComment"
+
+data ParamNoDefaultStarAnnotation =
+  ParamNoDefaultStarAnnotation {
+    paramNoDefaultStarAnnotationParamStarAnnotation :: ParamStarAnnotation,
+    paramNoDefaultStarAnnotationTypeComment :: (Maybe TypeComment)}
+  deriving (Eq, Ord, Read, Show)
+
+_ParamNoDefaultStarAnnotation = Model.Name "hydra.python.syntax.ParamNoDefaultStarAnnotation"
+
+_ParamNoDefaultStarAnnotation_paramStarAnnotation = Model.Name "paramStarAnnotation"
+
+_ParamNoDefaultStarAnnotation_typeComment = Model.Name "typeComment"
+
+data ParamWithDefault =
+  ParamWithDefault {
+    paramWithDefaultParam :: Param,
+    paramWithDefaultDefault :: Default,
+    paramWithDefaultTypeComment :: (Maybe TypeComment)}
+  deriving (Eq, Ord, Read, Show)
+
+_ParamWithDefault = Model.Name "hydra.python.syntax.ParamWithDefault"
+
+_ParamWithDefault_param = Model.Name "param"
+
+_ParamWithDefault_default = Model.Name "default"
+
+_ParamWithDefault_typeComment = Model.Name "typeComment"
+
+data ParamMaybeDefault =
+  ParamMaybeDefault {
+    paramMaybeDefaultParam :: Param,
+    paramMaybeDefaultDefault :: (Maybe Default),
+    paramMaybeDefaultTypeComment :: (Maybe TypeComment)}
+  deriving (Eq, Ord, Read, Show)
+
+_ParamMaybeDefault = Model.Name "hydra.python.syntax.ParamMaybeDefault"
+
+_ParamMaybeDefault_param = Model.Name "param"
+
+_ParamMaybeDefault_default = Model.Name "default"
+
+_ParamMaybeDefault_typeComment = Model.Name "typeComment"
+
+data Param =
+  Param {
+    paramName :: Name,
+    paramAnnotation :: (Maybe Annotation)}
+  deriving (Eq, Ord, Read, Show)
+
+_Param = Model.Name "hydra.python.syntax.Param"
+
+_Param_name = Model.Name "name"
+
+_Param_annotation = Model.Name "annotation"
+
+data ParamStarAnnotation =
+  ParamStarAnnotation {
+    paramStarAnnotationName :: Name,
+    paramStarAnnotationAnnotation :: StarAnnotation}
+  deriving (Eq, Ord, Read, Show)
+
+_ParamStarAnnotation = Model.Name "hydra.python.syntax.ParamStarAnnotation"
+
+_ParamStarAnnotation_name = Model.Name "name"
+
+_ParamStarAnnotation_annotation = Model.Name "annotation"
+
+newtype Annotation =
+  Annotation {
+    unAnnotation :: Expression}
+  deriving (Eq, Ord, Read, Show)
+
+_Annotation = Model.Name "hydra.python.syntax.Annotation"
+
+newtype StarAnnotation =
+  StarAnnotation {
+    unStarAnnotation :: StarExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_StarAnnotation = Model.Name "hydra.python.syntax.StarAnnotation"
+
+newtype Default =
+  Default {
+    unDefault :: Expression}
+  deriving (Eq, Ord, Read, Show)
+
+_Default = Model.Name "hydra.python.syntax.Default"
+
+data IfStatement =
+  IfStatement {
+    ifStatementCondition :: NamedExpression,
+    ifStatementBody :: Block,
+    ifStatementContinuation :: (Maybe IfTail)}
+  deriving (Eq, Ord, Read, Show)
+
+_IfStatement = Model.Name "hydra.python.syntax.IfStatement"
+
+_IfStatement_condition = Model.Name "condition"
+
+_IfStatement_body = Model.Name "body"
+
+_IfStatement_continuation = Model.Name "continuation"
+
+data IfTail =
+  IfTailElif IfStatement |
+  IfTailElse Block
+  deriving (Eq, Ord, Read, Show)
+
+_IfTail = Model.Name "hydra.python.syntax.IfTail"
+
+_IfTail_elif = Model.Name "elif"
+
+_IfTail_else = Model.Name "else"
+
+data WhileStatement =
+  WhileStatement {
+    whileStatementCondition :: NamedExpression,
+    whileStatementBody :: Block,
+    whileStatementElse :: (Maybe Block)}
+  deriving (Eq, Ord, Read, Show)
+
+_WhileStatement = Model.Name "hydra.python.syntax.WhileStatement"
+
+_WhileStatement_condition = Model.Name "condition"
+
+_WhileStatement_body = Model.Name "body"
+
+_WhileStatement_else = Model.Name "else"
+
+data ForStatement =
+  ForStatement {
+    forStatementAsync :: Bool,
+    forStatementTargets :: [StarTarget],
+    forStatementExpressions :: [StarExpression],
+    forStatementTypeComment :: (Maybe TypeComment),
+    forStatementBody :: Block,
+    forStatementElse :: (Maybe Block)}
+  deriving (Eq, Ord, Read, Show)
+
+_ForStatement = Model.Name "hydra.python.syntax.ForStatement"
+
+_ForStatement_async = Model.Name "async"
+
+_ForStatement_targets = Model.Name "targets"
+
+_ForStatement_expressions = Model.Name "expressions"
+
+_ForStatement_typeComment = Model.Name "typeComment"
+
+_ForStatement_body = Model.Name "body"
+
+_ForStatement_else = Model.Name "else"
+
+data WithStatement =
+  WithStatement {
+    withStatementAsync :: Bool,
+    withStatementItems :: [WithItem],
+    withStatementTypeComment :: (Maybe TypeComment),
+    withStatementBody :: Block}
+  deriving (Eq, Ord, Read, Show)
+
+_WithStatement = Model.Name "hydra.python.syntax.WithStatement"
+
+_WithStatement_async = Model.Name "async"
+
+_WithStatement_items = Model.Name "items"
+
+_WithStatement_typeComment = Model.Name "typeComment"
+
+_WithStatement_body = Model.Name "body"
+
+data WithItem =
+  WithItem {
+    withItemExpression :: Expression,
+    withItemAs :: (Maybe StarTarget)}
+  deriving (Eq, Ord, Read, Show)
+
+_WithItem = Model.Name "hydra.python.syntax.WithItem"
+
+_WithItem_expression = Model.Name "expression"
+
+_WithItem_as = Model.Name "as"
+
+data TryStatement =
+  TryStatementFinally TryFinallyStatement |
+  TryStatementExcept TryExceptStatement |
+  TryStatementExceptStar TryExceptStarStatement
+  deriving (Eq, Ord, Read, Show)
+
+_TryStatement = Model.Name "hydra.python.syntax.TryStatement"
+
+_TryStatement_finally = Model.Name "finally"
+
+_TryStatement_except = Model.Name "except"
+
+_TryStatement_exceptStar = Model.Name "exceptStar"
+
+data TryFinallyStatement =
+  TryFinallyStatement {
+    tryFinallyStatementBody :: Block,
+    tryFinallyStatementFinally :: Block}
+  deriving (Eq, Ord, Read, Show)
+
+_TryFinallyStatement = Model.Name "hydra.python.syntax.TryFinallyStatement"
+
+_TryFinallyStatement_body = Model.Name "body"
+
+_TryFinallyStatement_finally = Model.Name "finally"
+
+data TryExceptStatement =
+  TryExceptStatement {
+    tryExceptStatementBody :: Block,
+    tryExceptStatementExcepts :: [ExceptBlock],
+    tryExceptStatementElse :: (Maybe Block),
+    tryExceptStatementFinally :: (Maybe Block)}
+  deriving (Eq, Ord, Read, Show)
+
+_TryExceptStatement = Model.Name "hydra.python.syntax.TryExceptStatement"
+
+_TryExceptStatement_body = Model.Name "body"
+
+_TryExceptStatement_excepts = Model.Name "excepts"
+
+_TryExceptStatement_else = Model.Name "else"
+
+_TryExceptStatement_finally = Model.Name "finally"
+
+data TryExceptStarStatement =
+  TryExceptStarStatement {
+    tryExceptStarStatementBody :: Block,
+    tryExceptStarStatementExcepts :: [ExceptStarBlock],
+    tryExceptStarStatementElse :: (Maybe Block),
+    tryExceptStarStatementFinally :: (Maybe Block)}
+  deriving (Eq, Ord, Read, Show)
+
+_TryExceptStarStatement = Model.Name "hydra.python.syntax.TryExceptStarStatement"
+
+_TryExceptStarStatement_body = Model.Name "body"
+
+_TryExceptStarStatement_excepts = Model.Name "excepts"
+
+_TryExceptStarStatement_else = Model.Name "else"
+
+_TryExceptStarStatement_finally = Model.Name "finally"
+
+data ExceptBlock =
+  ExceptBlock {
+    exceptBlockExpression :: (Maybe ExceptExpression),
+    exceptBlockBody :: Block}
+  deriving (Eq, Ord, Read, Show)
+
+_ExceptBlock = Model.Name "hydra.python.syntax.ExceptBlock"
+
+_ExceptBlock_expression = Model.Name "expression"
+
+_ExceptBlock_body = Model.Name "body"
+
+data ExceptExpression =
+  ExceptExpression {
+    exceptExpressionExpression :: Expression,
+    exceptExpressionAs :: (Maybe Name)}
+  deriving (Eq, Ord, Read, Show)
+
+_ExceptExpression = Model.Name "hydra.python.syntax.ExceptExpression"
+
+_ExceptExpression_expression = Model.Name "expression"
+
+_ExceptExpression_as = Model.Name "as"
+
+data ExceptStarBlock =
+  ExceptStarBlock {
+    exceptStarBlockExpression :: Expression,
+    exceptStarBlockAs :: (Maybe Name),
+    exceptStarBlockBody :: Block}
+  deriving (Eq, Ord, Read, Show)
+
+_ExceptStarBlock = Model.Name "hydra.python.syntax.ExceptStarBlock"
+
+_ExceptStarBlock_expression = Model.Name "expression"
+
+_ExceptStarBlock_as = Model.Name "as"
+
+_ExceptStarBlock_body = Model.Name "body"
+
+data MatchStatement =
+  MatchStatement {
+    matchStatementSubject :: SubjectExpression,
+    matchStatementCases :: [CaseBlock]}
+  deriving (Eq, Ord, Read, Show)
+
+_MatchStatement = Model.Name "hydra.python.syntax.MatchStatement"
+
+_MatchStatement_subject = Model.Name "subject"
+
+_MatchStatement_cases = Model.Name "cases"
+
+data SubjectExpression =
+  SubjectExpressionTuple [StarNamedExpression] |
+  SubjectExpressionSimple NamedExpression
+  deriving (Eq, Ord, Read, Show)
+
+_SubjectExpression = Model.Name "hydra.python.syntax.SubjectExpression"
+
+_SubjectExpression_tuple = Model.Name "tuple"
+
+_SubjectExpression_simple = Model.Name "simple"
+
+data CaseBlock =
+  CaseBlock {
+    caseBlockPatterns :: Patterns,
+    caseBlockGuard :: (Maybe Guard),
+    caseBlockBody :: Block}
+  deriving (Eq, Ord, Read, Show)
+
+_CaseBlock = Model.Name "hydra.python.syntax.CaseBlock"
+
+_CaseBlock_patterns = Model.Name "patterns"
+
+_CaseBlock_guard = Model.Name "guard"
+
+_CaseBlock_body = Model.Name "body"
+
+newtype Guard =
+  Guard {
+    unGuard :: NamedExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_Guard = Model.Name "hydra.python.syntax.Guard"
+
+data Patterns =
+  PatternsSequence OpenSequencePattern |
+  PatternsPattern Pattern
+  deriving (Eq, Ord, Read, Show)
+
+_Patterns = Model.Name "hydra.python.syntax.Patterns"
+
+_Patterns_sequence = Model.Name "sequence"
+
+_Patterns_pattern = Model.Name "pattern"
+
+data Pattern =
+  PatternAs AsPattern |
+  PatternOr OrPattern
+  deriving (Eq, Ord, Read, Show)
+
+_Pattern = Model.Name "hydra.python.syntax.Pattern"
+
+_Pattern_as = Model.Name "as"
+
+_Pattern_or = Model.Name "or"
+
+data AsPattern =
+  AsPattern {
+    asPatternPattern :: OrPattern,
+    asPatternAs :: PatternCaptureTarget}
+  deriving (Eq, Ord, Read, Show)
+
+_AsPattern = Model.Name "hydra.python.syntax.AsPattern"
+
+_AsPattern_pattern = Model.Name "pattern"
+
+_AsPattern_as = Model.Name "as"
+
+newtype OrPattern =
+  OrPattern {
+    unOrPattern :: [ClosedPattern]}
+  deriving (Eq, Ord, Read, Show)
+
+_OrPattern = Model.Name "hydra.python.syntax.OrPattern"
+
+data ClosedPattern =
+  ClosedPatternLiteral LiteralExpression |
+  ClosedPatternCapture CapturePattern |
+  ClosedPatternWildcard |
+  ClosedPatternValue ValuePattern |
+  ClosedPatternGroup GroupPattern |
+  ClosedPatternSequence SequencePattern |
+  ClosedPatternMapping MappingPattern |
+  ClosedPatternClass ClassPattern
+  deriving (Eq, Ord, Read, Show)
+
+_ClosedPattern = Model.Name "hydra.python.syntax.ClosedPattern"
+
+_ClosedPattern_literal = Model.Name "literal"
+
+_ClosedPattern_capture = Model.Name "capture"
+
+_ClosedPattern_wildcard = Model.Name "wildcard"
+
+_ClosedPattern_value = Model.Name "value"
+
+_ClosedPattern_group = Model.Name "group"
+
+_ClosedPattern_sequence = Model.Name "sequence"
+
+_ClosedPattern_mapping = Model.Name "mapping"
+
+_ClosedPattern_class = Model.Name "class"
+
+data LiteralExpression =
+  LiteralExpressionNumber SignedNumber |
+  LiteralExpressionComplex ComplexNumber |
+  LiteralExpressionString String_ |
+  LiteralExpressionNone |
+  LiteralExpressionTrue |
+  LiteralExpressionFalse
+  deriving (Eq, Ord, Read, Show)
+
+_LiteralExpression = Model.Name "hydra.python.syntax.LiteralExpression"
+
+_LiteralExpression_number = Model.Name "number"
+
+_LiteralExpression_complex = Model.Name "complex"
+
+_LiteralExpression_string = Model.Name "string"
+
+_LiteralExpression_none = Model.Name "none"
+
+_LiteralExpression_true = Model.Name "true"
+
+_LiteralExpression_false = Model.Name "false"
+
+data ComplexNumber =
+  ComplexNumber {
+    complexNumberReal :: SignedRealNumber,
+    complexNumberPlusOrMinus :: PlusOrMinus,
+    complexNumberImaginary :: ImaginaryNumber}
+  deriving (Eq, Ord, Read, Show)
+
+_ComplexNumber = Model.Name "hydra.python.syntax.ComplexNumber"
+
+_ComplexNumber_real = Model.Name "real"
+
+_ComplexNumber_plusOrMinus = Model.Name "plusOrMinus"
+
+_ComplexNumber_imaginary = Model.Name "imaginary"
+
+data PlusOrMinus =
+  PlusOrMinusPlus |
+  PlusOrMinusMinus
+  deriving (Eq, Ord, Read, Show)
+
+_PlusOrMinus = Model.Name "hydra.python.syntax.PlusOrMinus"
+
+_PlusOrMinus_plus = Model.Name "plus"
+
+_PlusOrMinus_minus = Model.Name "minus"
+
+data SignedNumber =
+  SignedNumberSign PlusOrMinus |
+  SignedNumberNumber Number
+  deriving (Eq, Ord, Read, Show)
+
+_SignedNumber = Model.Name "hydra.python.syntax.SignedNumber"
+
+_SignedNumber_sign = Model.Name "sign"
+
+_SignedNumber_number = Model.Name "number"
+
+data SignedRealNumber =
+  SignedRealNumberSign PlusOrMinus |
+  SignedRealNumberNumber RealNumber
+  deriving (Eq, Ord, Read, Show)
+
+_SignedRealNumber = Model.Name "hydra.python.syntax.SignedRealNumber"
+
+_SignedRealNumber_sign = Model.Name "sign"
+
+_SignedRealNumber_number = Model.Name "number"
+
+data RealNumber =
+  RealNumberInteger Integer |
+  RealNumberFloat Double
+  deriving (Eq, Ord, Read, Show)
+
+_RealNumber = Model.Name "hydra.python.syntax.RealNumber"
+
+_RealNumber_integer = Model.Name "integer"
+
+_RealNumber_float = Model.Name "float"
+
+newtype ImaginaryNumber =
+  ImaginaryNumber {
+    unImaginaryNumber :: Double}
+  deriving (Eq, Ord, Read, Show)
+
+_ImaginaryNumber = Model.Name "hydra.python.syntax.ImaginaryNumber"
+
+newtype CapturePattern =
+  CapturePattern {
+    unCapturePattern :: PatternCaptureTarget}
+  deriving (Eq, Ord, Read, Show)
+
+_CapturePattern = Model.Name "hydra.python.syntax.CapturePattern"
+
+newtype PatternCaptureTarget =
+  PatternCaptureTarget {
+    unPatternCaptureTarget :: Name}
+  deriving (Eq, Ord, Read, Show)
+
+_PatternCaptureTarget = Model.Name "hydra.python.syntax.PatternCaptureTarget"
+
+newtype ValuePattern =
+  ValuePattern {
+    unValuePattern :: Attribute}
+  deriving (Eq, Ord, Read, Show)
+
+_ValuePattern = Model.Name "hydra.python.syntax.ValuePattern"
+
+newtype Attribute =
+  Attribute {
+    unAttribute :: [Name]}
+  deriving (Eq, Ord, Read, Show)
+
+_Attribute = Model.Name "hydra.python.syntax.Attribute"
+
+newtype NameOrAttribute =
+  NameOrAttribute {
+    unNameOrAttribute :: [Name]}
+  deriving (Eq, Ord, Read, Show)
+
+_NameOrAttribute = Model.Name "hydra.python.syntax.NameOrAttribute"
+
+newtype GroupPattern =
+  GroupPattern {
+    unGroupPattern :: Pattern}
+  deriving (Eq, Ord, Read, Show)
+
+_GroupPattern = Model.Name "hydra.python.syntax.GroupPattern"
+
+data SequencePattern =
+  SequencePatternList (Maybe MaybeSequencePattern) |
+  SequencePatternTuple (Maybe OpenSequencePattern)
+  deriving (Eq, Ord, Read, Show)
+
+_SequencePattern = Model.Name "hydra.python.syntax.SequencePattern"
+
+_SequencePattern_list = Model.Name "list"
+
+_SequencePattern_tuple = Model.Name "tuple"
+
+data OpenSequencePattern =
+  OpenSequencePattern {
+    openSequencePatternHead :: MaybeStarPattern,
+    openSequencePatternTail :: (Maybe MaybeSequencePattern)}
+  deriving (Eq, Ord, Read, Show)
+
+_OpenSequencePattern = Model.Name "hydra.python.syntax.OpenSequencePattern"
+
+_OpenSequencePattern_head = Model.Name "head"
+
+_OpenSequencePattern_tail = Model.Name "tail"
+
+newtype MaybeSequencePattern =
+  MaybeSequencePattern {
+    unMaybeSequencePattern :: [MaybeStarPattern]}
+  deriving (Eq, Ord, Read, Show)
+
+_MaybeSequencePattern = Model.Name "hydra.python.syntax.MaybeSequencePattern"
+
+data MaybeStarPattern =
+  MaybeStarPatternStar StarPattern |
+  MaybeStarPatternPattern Pattern
+  deriving (Eq, Ord, Read, Show)
+
+_MaybeStarPattern = Model.Name "hydra.python.syntax.MaybeStarPattern"
+
+_MaybeStarPattern_star = Model.Name "star"
+
+_MaybeStarPattern_pattern = Model.Name "pattern"
+
+data StarPattern =
+  StarPatternCapture PatternCaptureTarget |
+  StarPatternWildcard
+  deriving (Eq, Ord, Read, Show)
+
+_StarPattern = Model.Name "hydra.python.syntax.StarPattern"
+
+_StarPattern_capture = Model.Name "capture"
+
+_StarPattern_wildcard = Model.Name "wildcard"
+
+data MappingPattern =
+  MappingPattern {
+    mappingPatternItems :: (Maybe ItemsPattern),
+    mappingPatternDoubleStar :: (Maybe DoubleStarPattern)}
+  deriving (Eq, Ord, Read, Show)
+
+_MappingPattern = Model.Name "hydra.python.syntax.MappingPattern"
+
+_MappingPattern_items = Model.Name "items"
+
+_MappingPattern_doubleStar = Model.Name "doubleStar"
+
+newtype ItemsPattern =
+  ItemsPattern {
+    unItemsPattern :: [KeyValuePattern]}
+  deriving (Eq, Ord, Read, Show)
+
+_ItemsPattern = Model.Name "hydra.python.syntax.ItemsPattern"
+
+data KeyValuePattern =
+  KeyValuePattern {
+    keyValuePatternKey :: LiteralExpressionOrAttribute,
+    keyValuePatternValue :: Pattern}
+  deriving (Eq, Ord, Read, Show)
+
+_KeyValuePattern = Model.Name "hydra.python.syntax.KeyValuePattern"
+
+_KeyValuePattern_key = Model.Name "key"
+
+_KeyValuePattern_value = Model.Name "value"
+
+data LiteralExpressionOrAttribute =
+  LiteralExpressionOrAttributeLiteral LiteralExpression |
+  LiteralExpressionOrAttributeAttribute Attribute
+  deriving (Eq, Ord, Read, Show)
+
+_LiteralExpressionOrAttribute = Model.Name "hydra.python.syntax.LiteralExpressionOrAttribute"
+
+_LiteralExpressionOrAttribute_literal = Model.Name "literal"
+
+_LiteralExpressionOrAttribute_attribute = Model.Name "attribute"
+
+newtype DoubleStarPattern =
+  DoubleStarPattern {
+    unDoubleStarPattern :: PatternCaptureTarget}
+  deriving (Eq, Ord, Read, Show)
+
+_DoubleStarPattern = Model.Name "hydra.python.syntax.DoubleStarPattern"
+
+data ClassPattern =
+  ClassPattern {
+    classPatternNameOrAttribute :: NameOrAttribute,
+    classPatternPositionalPatterns :: (Maybe PositionalPatterns),
+    classPatternKeywordPatterns :: (Maybe KeywordPatterns)}
+  deriving (Eq, Ord, Read, Show)
+
+_ClassPattern = Model.Name "hydra.python.syntax.ClassPattern"
+
+_ClassPattern_nameOrAttribute = Model.Name "nameOrAttribute"
+
+_ClassPattern_positionalPatterns = Model.Name "positionalPatterns"
+
+_ClassPattern_keywordPatterns = Model.Name "keywordPatterns"
+
+newtype PositionalPatterns =
+  PositionalPatterns {
+    unPositionalPatterns :: [Pattern]}
+  deriving (Eq, Ord, Read, Show)
+
+_PositionalPatterns = Model.Name "hydra.python.syntax.PositionalPatterns"
+
+newtype KeywordPatterns =
+  KeywordPatterns {
+    unKeywordPatterns :: [KeywordPattern]}
+  deriving (Eq, Ord, Read, Show)
+
+_KeywordPatterns = Model.Name "hydra.python.syntax.KeywordPatterns"
+
+data KeywordPattern =
+  KeywordPattern {
+    keywordPatternName :: Name,
+    keywordPatternPattern :: Pattern}
+  deriving (Eq, Ord, Read, Show)
+
+_KeywordPattern = Model.Name "hydra.python.syntax.KeywordPattern"
+
+_KeywordPattern_name = Model.Name "name"
+
+_KeywordPattern_pattern = Model.Name "pattern"
+
+data TypeAlias =
+  TypeAlias {
+    typeAliasName :: Name,
+    typeAliasTypeParams :: [TypeParameter],
+    typeAliasExpression :: Expression}
+  deriving (Eq, Ord, Read, Show)
+
+_TypeAlias = Model.Name "hydra.python.syntax.TypeAlias"
+
+_TypeAlias_name = Model.Name "name"
+
+_TypeAlias_typeParams = Model.Name "typeParams"
+
+_TypeAlias_expression = Model.Name "expression"
+
+data TypeParameter =
+  TypeParameterSimple SimpleTypeParameter |
+  TypeParameterStar StarTypeParameter |
+  TypeParameterDoubleStar DoubleStarTypeParameter
+  deriving (Eq, Ord, Read, Show)
+
+_TypeParameter = Model.Name "hydra.python.syntax.TypeParameter"
+
+_TypeParameter_simple = Model.Name "simple"
+
+_TypeParameter_star = Model.Name "star"
+
+_TypeParameter_doubleStar = Model.Name "doubleStar"
+
+data SimpleTypeParameter =
+  SimpleTypeParameter {
+    simpleTypeParameterName :: Name,
+    simpleTypeParameterBound :: (Maybe Expression),
+    simpleTypeParameterDefault :: (Maybe Expression)}
+  deriving (Eq, Ord, Read, Show)
+
+_SimpleTypeParameter = Model.Name "hydra.python.syntax.SimpleTypeParameter"
+
+_SimpleTypeParameter_name = Model.Name "name"
+
+_SimpleTypeParameter_bound = Model.Name "bound"
+
+_SimpleTypeParameter_default = Model.Name "default"
+
+data StarTypeParameter =
+  StarTypeParameter {
+    starTypeParameterName :: Name,
+    starTypeParameterDefault :: (Maybe StarExpression)}
+  deriving (Eq, Ord, Read, Show)
+
+_StarTypeParameter = Model.Name "hydra.python.syntax.StarTypeParameter"
+
+_StarTypeParameter_name = Model.Name "name"
+
+_StarTypeParameter_default = Model.Name "default"
+
+data DoubleStarTypeParameter =
+  DoubleStarTypeParameter {
+    doubleStarTypeParameterName :: Name,
+    doubleStarTypeParameterDefault :: (Maybe Expression)}
+  deriving (Eq, Ord, Read, Show)
+
+_DoubleStarTypeParameter = Model.Name "hydra.python.syntax.DoubleStarTypeParameter"
+
+_DoubleStarTypeParameter_name = Model.Name "name"
+
+_DoubleStarTypeParameter_default = Model.Name "default"
+
+data Expression =
+  ExpressionConditional Conditional |
+  ExpressionSimple Disjunction |
+  ExpressionLambda Lambda
+  deriving (Eq, Ord, Read, Show)
+
+_Expression = Model.Name "hydra.python.syntax.Expression"
+
+_Expression_conditional = Model.Name "conditional"
+
+_Expression_simple = Model.Name "simple"
+
+_Expression_lambda = Model.Name "lambda"
+
+data Conditional =
+  Conditional {
+    conditionalBody :: Disjunction,
+    conditionalIf :: Disjunction,
+    conditionalElse :: Expression}
+  deriving (Eq, Ord, Read, Show)
+
+_Conditional = Model.Name "hydra.python.syntax.Conditional"
+
+_Conditional_body = Model.Name "body"
+
+_Conditional_if = Model.Name "if"
+
+_Conditional_else = Model.Name "else"
+
+data YieldExpression =
+  YieldExpressionFrom Expression |
+  YieldExpressionSimple [StarExpression]
+  deriving (Eq, Ord, Read, Show)
+
+_YieldExpression = Model.Name "hydra.python.syntax.YieldExpression"
+
+_YieldExpression_from = Model.Name "from"
+
+_YieldExpression_simple = Model.Name "simple"
+
+data StarExpression =
+  StarExpressionStar BitwiseOr |
+  StarExpressionSimple Expression
+  deriving (Eq, Ord, Read, Show)
+
+_StarExpression = Model.Name "hydra.python.syntax.StarExpression"
+
+_StarExpression_star = Model.Name "star"
+
+_StarExpression_simple = Model.Name "simple"
+
+newtype StarNamedExpressions =
+  StarNamedExpressions {
+    unStarNamedExpressions :: [StarNamedExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_StarNamedExpressions = Model.Name "hydra.python.syntax.StarNamedExpressions"
+
+data StarNamedExpression =
+  StarNamedExpressionStar BitwiseOr |
+  StarNamedExpressionSimple NamedExpression
+  deriving (Eq, Ord, Read, Show)
+
+_StarNamedExpression = Model.Name "hydra.python.syntax.StarNamedExpression"
+
+_StarNamedExpression_star = Model.Name "star"
+
+_StarNamedExpression_simple = Model.Name "simple"
+
+data AssignmentExpression =
+  AssignmentExpression {
+    assignmentExpressionName :: Name,
+    assignmentExpressionExpression :: Expression}
+  deriving (Eq, Ord, Read, Show)
+
+_AssignmentExpression = Model.Name "hydra.python.syntax.AssignmentExpression"
+
+_AssignmentExpression_name = Model.Name "name"
+
+_AssignmentExpression_expression = Model.Name "expression"
+
+data NamedExpression =
+  NamedExpressionAssignment AssignmentExpression |
+  NamedExpressionSimple Expression
+  deriving (Eq, Ord, Read, Show)
+
+_NamedExpression = Model.Name "hydra.python.syntax.NamedExpression"
+
+_NamedExpression_assignment = Model.Name "assignment"
+
+_NamedExpression_simple = Model.Name "simple"
+
+newtype Disjunction =
+  Disjunction {
+    unDisjunction :: [Conjunction]}
+  deriving (Eq, Ord, Read, Show)
+
+_Disjunction = Model.Name "hydra.python.syntax.Disjunction"
+
+newtype Conjunction =
+  Conjunction {
+    unConjunction :: [Inversion]}
+  deriving (Eq, Ord, Read, Show)
+
+_Conjunction = Model.Name "hydra.python.syntax.Conjunction"
+
+data Inversion =
+  InversionNot Inversion |
+  InversionSimple Comparison
+  deriving (Eq, Ord, Read, Show)
+
+_Inversion = Model.Name "hydra.python.syntax.Inversion"
+
+_Inversion_not = Model.Name "not"
+
+_Inversion_simple = Model.Name "simple"
+
+data Comparison =
+  Comparison {
+    comparisonLhs :: BitwiseOr,
+    comparisonRhs :: [CompareOpBitwiseOrPair]}
+  deriving (Eq, Ord, Read, Show)
+
+_Comparison = Model.Name "hydra.python.syntax.Comparison"
+
+_Comparison_lhs = Model.Name "lhs"
+
+_Comparison_rhs = Model.Name "rhs"
+
+data CompareOpBitwiseOrPair =
+  CompareOpBitwiseOrPair {
+    compareOpBitwiseOrPairOperator :: CompareOp,
+    compareOpBitwiseOrPairRhs :: BitwiseOr}
+  deriving (Eq, Ord, Read, Show)
+
+_CompareOpBitwiseOrPair = Model.Name "hydra.python.syntax.CompareOpBitwiseOrPair"
+
+_CompareOpBitwiseOrPair_operator = Model.Name "operator"
+
+_CompareOpBitwiseOrPair_rhs = Model.Name "rhs"
+
+data CompareOp =
+  CompareOpEq |
+  CompareOpNoteq |
+  CompareOpLte |
+  CompareOpLt |
+  CompareOpGte |
+  CompareOpGt |
+  CompareOpNotin |
+  CompareOpIn |
+  CompareOpIsnot |
+  CompareOpIs
+  deriving (Eq, Ord, Read, Show)
+
+_CompareOp = Model.Name "hydra.python.syntax.CompareOp"
+
+_CompareOp_eq = Model.Name "eq"
+
+_CompareOp_noteq = Model.Name "noteq"
+
+_CompareOp_lte = Model.Name "lte"
+
+_CompareOp_lt = Model.Name "lt"
+
+_CompareOp_gte = Model.Name "gte"
+
+_CompareOp_gt = Model.Name "gt"
+
+_CompareOp_notin = Model.Name "notin"
+
+_CompareOp_in = Model.Name "in"
+
+_CompareOp_isnot = Model.Name "isnot"
+
+_CompareOp_is = Model.Name "is"
+
+data BitwiseOr =
+  BitwiseOr {
+    bitwiseOrLhs :: (Maybe BitwiseOr),
+    bitwiseOrRhs :: BitwiseXor}
+  deriving (Eq, Ord, Read, Show)
+
+_BitwiseOr = Model.Name "hydra.python.syntax.BitwiseOr"
+
+_BitwiseOr_lhs = Model.Name "lhs"
+
+_BitwiseOr_rhs = Model.Name "rhs"
+
+data BitwiseXor =
+  BitwiseXor {
+    bitwiseXorLhs :: (Maybe BitwiseXor),
+    bitwiseXorRhs :: BitwiseAnd}
+  deriving (Eq, Ord, Read, Show)
+
+_BitwiseXor = Model.Name "hydra.python.syntax.BitwiseXor"
+
+_BitwiseXor_lhs = Model.Name "lhs"
+
+_BitwiseXor_rhs = Model.Name "rhs"
+
+data BitwiseAnd =
+  BitwiseAnd {
+    bitwiseAndLhs :: (Maybe BitwiseAnd),
+    bitwiseAndRhs :: ShiftExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_BitwiseAnd = Model.Name "hydra.python.syntax.BitwiseAnd"
+
+_BitwiseAnd_lhs = Model.Name "lhs"
+
+_BitwiseAnd_rhs = Model.Name "rhs"
+
+data ShiftExpression =
+  ShiftExpression {
+    shiftExpressionLhs :: (Maybe ShiftLhs),
+    shiftExpressionRhs :: Sum}
+  deriving (Eq, Ord, Read, Show)
+
+_ShiftExpression = Model.Name "hydra.python.syntax.ShiftExpression"
+
+_ShiftExpression_lhs = Model.Name "lhs"
+
+_ShiftExpression_rhs = Model.Name "rhs"
+
+data ShiftLhs =
+  ShiftLhs {
+    shiftLhsOperand :: ShiftExpression,
+    shiftLhsOperator :: ShiftOp}
+  deriving (Eq, Ord, Read, Show)
+
+_ShiftLhs = Model.Name "hydra.python.syntax.ShiftLhs"
+
+_ShiftLhs_operand = Model.Name "operand"
+
+_ShiftLhs_operator = Model.Name "operator"
+
+data ShiftOp =
+  ShiftOpLeft |
+  ShiftOpRight
+  deriving (Eq, Ord, Read, Show)
+
+_ShiftOp = Model.Name "hydra.python.syntax.ShiftOp"
+
+_ShiftOp_left = Model.Name "left"
+
+_ShiftOp_right = Model.Name "right"
+
+data Sum =
+  Sum {
+    sumLhs :: (Maybe SumLhs),
+    sumRhs :: Term}
+  deriving (Eq, Ord, Read, Show)
+
+_Sum = Model.Name "hydra.python.syntax.Sum"
+
+_Sum_lhs = Model.Name "lhs"
+
+_Sum_rhs = Model.Name "rhs"
+
+data SumLhs =
+  SumLhs {
+    sumLhsOperand :: Sum,
+    sumLhsOperator :: SumOp}
+  deriving (Eq, Ord, Read, Show)
+
+_SumLhs = Model.Name "hydra.python.syntax.SumLhs"
+
+_SumLhs_operand = Model.Name "operand"
+
+_SumLhs_operator = Model.Name "operator"
+
+data SumOp =
+  SumOpAdd |
+  SumOpSub
+  deriving (Eq, Ord, Read, Show)
+
+_SumOp = Model.Name "hydra.python.syntax.SumOp"
+
+_SumOp_add = Model.Name "add"
+
+_SumOp_sub = Model.Name "sub"
+
+data Term =
+  Term {
+    termLhs :: (Maybe TermLhs),
+    termRhs :: Factor}
+  deriving (Eq, Ord, Read, Show)
+
+_Term = Model.Name "hydra.python.syntax.Term"
+
+_Term_lhs = Model.Name "lhs"
+
+_Term_rhs = Model.Name "rhs"
+
+data TermLhs =
+  TermLhs {
+    termLhsOperand :: Term,
+    termLhsOperator :: TermOp}
+  deriving (Eq, Ord, Read, Show)
+
+_TermLhs = Model.Name "hydra.python.syntax.TermLhs"
+
+_TermLhs_operand = Model.Name "operand"
+
+_TermLhs_operator = Model.Name "operator"
+
+data TermOp =
+  TermOpMul |
+  TermOpDiv |
+  TermOpFloordiv |
+  TermOpMod |
+  TermOpMatmul
+  deriving (Eq, Ord, Read, Show)
+
+_TermOp = Model.Name "hydra.python.syntax.TermOp"
+
+_TermOp_mul = Model.Name "mul"
+
+_TermOp_div = Model.Name "div"
+
+_TermOp_floordiv = Model.Name "floordiv"
+
+_TermOp_mod = Model.Name "mod"
+
+_TermOp_matmul = Model.Name "matmul"
+
+data Factor =
+  FactorPositive Factor |
+  FactorNegative Factor |
+  FactorComplement Factor |
+  FactorSimple Power
+  deriving (Eq, Ord, Read, Show)
+
+_Factor = Model.Name "hydra.python.syntax.Factor"
+
+_Factor_positive = Model.Name "positive"
+
+_Factor_negative = Model.Name "negative"
+
+_Factor_complement = Model.Name "complement"
+
+_Factor_simple = Model.Name "simple"
+
+data Power =
+  Power {
+    powerLhs :: AwaitPrimary,
+    powerRhs :: (Maybe Factor)}
+  deriving (Eq, Ord, Read, Show)
+
+_Power = Model.Name "hydra.python.syntax.Power"
+
+_Power_lhs = Model.Name "lhs"
+
+_Power_rhs = Model.Name "rhs"
+
+data AwaitPrimary =
+  AwaitPrimary {
+    awaitPrimaryAwait :: Bool,
+    awaitPrimaryPrimary :: Primary}
+  deriving (Eq, Ord, Read, Show)
+
+_AwaitPrimary = Model.Name "hydra.python.syntax.AwaitPrimary"
+
+_AwaitPrimary_await = Model.Name "await"
+
+_AwaitPrimary_primary = Model.Name "primary"
+
+data Primary =
+  PrimarySimple Atom |
+  PrimaryCompound PrimaryWithRhs
+  deriving (Eq, Ord, Read, Show)
+
+_Primary = Model.Name "hydra.python.syntax.Primary"
+
+_Primary_simple = Model.Name "simple"
+
+_Primary_compound = Model.Name "compound"
+
+data PrimaryWithRhs =
+  PrimaryWithRhs {
+    primaryWithRhsPrimary :: Primary,
+    primaryWithRhsRhs :: PrimaryRhs}
+  deriving (Eq, Ord, Read, Show)
+
+_PrimaryWithRhs = Model.Name "hydra.python.syntax.PrimaryWithRhs"
+
+_PrimaryWithRhs_primary = Model.Name "primary"
+
+_PrimaryWithRhs_rhs = Model.Name "rhs"
+
+data PrimaryRhs =
+  PrimaryRhsProject Name |
+  PrimaryRhsGenexp Genexp |
+  PrimaryRhsCall Args |
+  PrimaryRhsSlices Slices
+  deriving (Eq, Ord, Read, Show)
+
+_PrimaryRhs = Model.Name "hydra.python.syntax.PrimaryRhs"
+
+_PrimaryRhs_project = Model.Name "project"
+
+_PrimaryRhs_genexp = Model.Name "genexp"
+
+_PrimaryRhs_call = Model.Name "call"
+
+_PrimaryRhs_slices = Model.Name "slices"
+
+data Slices =
+  Slices {
+    slicesHead :: Slice,
+    slicesTail :: [SliceOrStarredExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_Slices = Model.Name "hydra.python.syntax.Slices"
+
+_Slices_head = Model.Name "head"
+
+_Slices_tail = Model.Name "tail"
+
+data SliceOrStarredExpression =
+  SliceOrStarredExpressionSlice Slice |
+  SliceOrStarredExpressionStarred StarredExpression
+  deriving (Eq, Ord, Read, Show)
+
+_SliceOrStarredExpression = Model.Name "hydra.python.syntax.SliceOrStarredExpression"
+
+_SliceOrStarredExpression_slice = Model.Name "slice"
+
+_SliceOrStarredExpression_starred = Model.Name "starred"
+
+data Slice =
+  SliceNamed NamedExpression |
+  SliceSlice_ SliceExpression
+  deriving (Eq, Ord, Read, Show)
+
+_Slice = Model.Name "hydra.python.syntax.Slice"
+
+_Slice_named = Model.Name "named"
+
+_Slice_slice_ = Model.Name "slice_"
+
+data SliceExpression =
+  SliceExpression {
+    sliceExpressionStart :: (Maybe Expression),
+    sliceExpressionStop :: (Maybe Expression),
+    sliceExpressionStep :: (Maybe Expression)}
+  deriving (Eq, Ord, Read, Show)
+
+_SliceExpression = Model.Name "hydra.python.syntax.SliceExpression"
+
+_SliceExpression_start = Model.Name "start"
+
+_SliceExpression_stop = Model.Name "stop"
+
+_SliceExpression_step = Model.Name "step"
+
+data Atom =
+  AtomName Name |
+  AtomTrue |
+  AtomFalse |
+  AtomNone |
+  AtomString String_ |
+  AtomNumber Number |
+  AtomTuple Tuple |
+  AtomGroup Group |
+  AtomGenexp Genexp |
+  AtomList List |
+  AtomListcomp Listcomp |
+  AtomDict Dict |
+  AtomSet Set |
+  AtomDictcomp Dictcomp |
+  AtomSetcomp Setcomp |
+  AtomEllipsis
+  deriving (Eq, Ord, Read, Show)
+
+_Atom = Model.Name "hydra.python.syntax.Atom"
+
+_Atom_name = Model.Name "name"
+
+_Atom_true = Model.Name "true"
+
+_Atom_false = Model.Name "false"
+
+_Atom_none = Model.Name "none"
+
+_Atom_string = Model.Name "string"
+
+_Atom_number = Model.Name "number"
+
+_Atom_tuple = Model.Name "tuple"
+
+_Atom_group = Model.Name "group"
+
+_Atom_genexp = Model.Name "genexp"
+
+_Atom_list = Model.Name "list"
+
+_Atom_listcomp = Model.Name "listcomp"
+
+_Atom_dict = Model.Name "dict"
+
+_Atom_set = Model.Name "set"
+
+_Atom_dictcomp = Model.Name "dictcomp"
+
+_Atom_setcomp = Model.Name "setcomp"
+
+_Atom_ellipsis = Model.Name "ellipsis"
+
+data Group =
+  GroupYield YieldExpression |
+  GroupExpression NamedExpression
+  deriving (Eq, Ord, Read, Show)
+
+_Group = Model.Name "hydra.python.syntax.Group"
+
+_Group_yield = Model.Name "yield"
+
+_Group_expression = Model.Name "expression"
+
+data Lambda =
+  Lambda {
+    lambdaParams :: LambdaParameters,
+    lambdaBody :: Expression}
+  deriving (Eq, Ord, Read, Show)
+
+_Lambda = Model.Name "hydra.python.syntax.Lambda"
+
+_Lambda_params = Model.Name "params"
+
+_Lambda_body = Model.Name "body"
+
+data LambdaParameters =
+  LambdaParameters {
+    lambdaParametersSlashNoDefault :: (Maybe LambdaSlashNoDefault),
+    lambdaParametersParamNoDefault :: [LambdaParamNoDefault],
+    lambdaParametersParamWithDefault :: [LambdaParamWithDefault],
+    lambdaParametersStarEtc :: (Maybe LambdaStarEtc)}
+  deriving (Eq, Ord, Read, Show)
+
+_LambdaParameters = Model.Name "hydra.python.syntax.LambdaParameters"
+
+_LambdaParameters_slashNoDefault = Model.Name "slashNoDefault"
+
+_LambdaParameters_paramNoDefault = Model.Name "paramNoDefault"
+
+_LambdaParameters_paramWithDefault = Model.Name "paramWithDefault"
+
+_LambdaParameters_starEtc = Model.Name "starEtc"
+
+data LambdaSlashNoDefault =
+  LambdaSlashNoDefault {
+    lambdaSlashNoDefaultParameters :: [LambdaParamNoDefault]}
+  deriving (Eq, Ord, Read, Show)
+
+_LambdaSlashNoDefault = Model.Name "hydra.python.syntax.LambdaSlashNoDefault"
+
+_LambdaSlashNoDefault_parameters = Model.Name "parameters"
+
+data LambdaSlashWithDefault =
+  LambdaSlashWithDefault {
+    lambdaSlashWithDefaultParamNoDefault :: [LambdaParamNoDefault],
+    lambdaSlashWithDefaultParamWithDefault :: [LambdaParamWithDefault]}
+  deriving (Eq, Ord, Read, Show)
+
+_LambdaSlashWithDefault = Model.Name "hydra.python.syntax.LambdaSlashWithDefault"
+
+_LambdaSlashWithDefault_paramNoDefault = Model.Name "paramNoDefault"
+
+_LambdaSlashWithDefault_paramWithDefault = Model.Name "paramWithDefault"
+
+data LambdaStarEtc =
+  LambdaStarEtcStar Bool |
+  LambdaStarEtcParamNoDefault LambdaParamNoDefault |
+  LambdaStarEtcParamMaybeDefault [LambdaParamMaybeDefault] |
+  LambdaStarEtcKwds LambdaKwds
+  deriving (Eq, Ord, Read, Show)
+
+_LambdaStarEtc = Model.Name "hydra.python.syntax.LambdaStarEtc"
+
+_LambdaStarEtc_star = Model.Name "star"
+
+_LambdaStarEtc_paramNoDefault = Model.Name "paramNoDefault"
+
+_LambdaStarEtc_paramMaybeDefault = Model.Name "paramMaybeDefault"
+
+_LambdaStarEtc_kwds = Model.Name "kwds"
+
+newtype LambdaKwds =
+  LambdaKwds {
+    unLambdaKwds :: LambdaParamNoDefault}
+  deriving (Eq, Ord, Read, Show)
+
+_LambdaKwds = Model.Name "hydra.python.syntax.LambdaKwds"
+
+newtype LambdaParamNoDefault =
+  LambdaParamNoDefault {
+    unLambdaParamNoDefault :: Name}
+  deriving (Eq, Ord, Read, Show)
+
+_LambdaParamNoDefault = Model.Name "hydra.python.syntax.LambdaParamNoDefault"
+
+data LambdaParamWithDefault =
+  LambdaParamWithDefault {
+    lambdaParamWithDefaultParam :: Name,
+    lambdaParamWithDefaultDefault :: (Maybe Default)}
+  deriving (Eq, Ord, Read, Show)
+
+_LambdaParamWithDefault = Model.Name "hydra.python.syntax.LambdaParamWithDefault"
+
+_LambdaParamWithDefault_param = Model.Name "param"
+
+_LambdaParamWithDefault_default = Model.Name "default"
+
+data LambdaParamMaybeDefault =
+  LambdaParamMaybeDefault {
+    lambdaParamMaybeDefaultParam :: Name,
+    lambdaParamMaybeDefaultDefault :: (Maybe Default)}
+  deriving (Eq, Ord, Read, Show)
+
+_LambdaParamMaybeDefault = Model.Name "hydra.python.syntax.LambdaParamMaybeDefault"
+
+_LambdaParamMaybeDefault_param = Model.Name "param"
+
+_LambdaParamMaybeDefault_default = Model.Name "default"
+
+newtype List =
+  List {
+    unList :: [StarNamedExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_List = Model.Name "hydra.python.syntax.List"
+
+newtype Tuple =
+  Tuple {
+    unTuple :: [StarNamedExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_Tuple = Model.Name "hydra.python.syntax.Tuple"
+
+newtype Set =
+  Set {
+    unSet :: [StarNamedExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_Set = Model.Name "hydra.python.syntax.Set"
+
+newtype Dict =
+  Dict {
+    unDict :: [DoubleStarredKvpair]}
+  deriving (Eq, Ord, Read, Show)
+
+_Dict = Model.Name "hydra.python.syntax.Dict"
+
+data DoubleStarredKvpair =
+  DoubleStarredKvpairStarred BitwiseOr |
+  DoubleStarredKvpairPair Kvpair
+  deriving (Eq, Ord, Read, Show)
+
+_DoubleStarredKvpair = Model.Name "hydra.python.syntax.DoubleStarredKvpair"
+
+_DoubleStarredKvpair_starred = Model.Name "starred"
+
+_DoubleStarredKvpair_pair = Model.Name "pair"
+
+data Kvpair =
+  Kvpair {
+    kvpairKey :: Expression,
+    kvpairValue :: Expression}
+  deriving (Eq, Ord, Read, Show)
+
+_Kvpair = Model.Name "hydra.python.syntax.Kvpair"
+
+_Kvpair_key = Model.Name "key"
+
+_Kvpair_value = Model.Name "value"
+
+newtype ForIfClauses =
+  ForIfClauses {
+    unForIfClauses :: [ForIfClause]}
+  deriving (Eq, Ord, Read, Show)
+
+_ForIfClauses = Model.Name "hydra.python.syntax.ForIfClauses"
+
+data ForIfClause =
+  ForIfClause {
+    forIfClauseAsync :: Bool,
+    forIfClauseTargets :: [StarTarget],
+    forIfClauseIn :: Disjunction,
+    forIfClauseIfs :: [Disjunction]}
+  deriving (Eq, Ord, Read, Show)
+
+_ForIfClause = Model.Name "hydra.python.syntax.ForIfClause"
+
+_ForIfClause_async = Model.Name "async"
+
+_ForIfClause_targets = Model.Name "targets"
+
+_ForIfClause_in = Model.Name "in"
+
+_ForIfClause_ifs = Model.Name "ifs"
+
+data Listcomp =
+  Listcomp {
+    listcompExpression :: NamedExpression,
+    listcompForIfClauses :: ForIfClauses}
+  deriving (Eq, Ord, Read, Show)
+
+_Listcomp = Model.Name "hydra.python.syntax.Listcomp"
+
+_Listcomp_expression = Model.Name "expression"
+
+_Listcomp_forIfClauses = Model.Name "forIfClauses"
+
+data Setcomp =
+  Setcomp {
+    setcompExpression :: NamedExpression,
+    setcompForIfClauses :: ForIfClauses}
+  deriving (Eq, Ord, Read, Show)
+
+_Setcomp = Model.Name "hydra.python.syntax.Setcomp"
+
+_Setcomp_expression = Model.Name "expression"
+
+_Setcomp_forIfClauses = Model.Name "forIfClauses"
+
+data Genexp =
+  Genexp {
+    genexpHead :: GenexpHead,
+    genexpTail :: ForIfClauses}
+  deriving (Eq, Ord, Read, Show)
+
+_Genexp = Model.Name "hydra.python.syntax.Genexp"
+
+_Genexp_head = Model.Name "head"
+
+_Genexp_tail = Model.Name "tail"
+
+data GenexpHead =
+  GenexpHeadAssignment AssignmentExpression |
+  GenexpHeadExpression Expression
+  deriving (Eq, Ord, Read, Show)
+
+_GenexpHead = Model.Name "hydra.python.syntax.GenexpHead"
+
+_GenexpHead_assignment = Model.Name "assignment"
+
+_GenexpHead_expression = Model.Name "expression"
+
+data Dictcomp =
+  Dictcomp {
+    dictcompKvpair :: Kvpair,
+    dictcompForIfClauses :: ForIfClauses}
+  deriving (Eq, Ord, Read, Show)
+
+_Dictcomp = Model.Name "hydra.python.syntax.Dictcomp"
+
+_Dictcomp_kvpair = Model.Name "kvpair"
+
+_Dictcomp_forIfClauses = Model.Name "forIfClauses"
+
+data Args =
+  Args {
+    argsPositional :: [PosArg],
+    argsKwargOrStarred :: [KwargOrStarred],
+    argsKwargOrDoubleStarred :: [KwargOrDoubleStarred]}
+  deriving (Eq, Ord, Read, Show)
+
+_Args = Model.Name "hydra.python.syntax.Args"
+
+_Args_positional = Model.Name "positional"
+
+_Args_kwargOrStarred = Model.Name "kwargOrStarred"
+
+_Args_kwargOrDoubleStarred = Model.Name "kwargOrDoubleStarred"
+
+data PosArg =
+  PosArgStarred StarredExpression |
+  PosArgAssignment AssignmentExpression |
+  PosArgExpression Expression
+  deriving (Eq, Ord, Read, Show)
+
+_PosArg = Model.Name "hydra.python.syntax.PosArg"
+
+_PosArg_starred = Model.Name "starred"
+
+_PosArg_assignment = Model.Name "assignment"
+
+_PosArg_expression = Model.Name "expression"
+
+newtype StarredExpression =
+  StarredExpression {
+    unStarredExpression :: Expression}
+  deriving (Eq, Ord, Read, Show)
+
+_StarredExpression = Model.Name "hydra.python.syntax.StarredExpression"
+
+data KwargOrStarred =
+  KwargOrStarredKwarg Kwarg |
+  KwargOrStarredStarred StarredExpression
+  deriving (Eq, Ord, Read, Show)
+
+_KwargOrStarred = Model.Name "hydra.python.syntax.KwargOrStarred"
+
+_KwargOrStarred_kwarg = Model.Name "kwarg"
+
+_KwargOrStarred_starred = Model.Name "starred"
+
+data Kwarg =
+  Kwarg {
+    kwargName :: Name,
+    kwargValue :: Expression}
+  deriving (Eq, Ord, Read, Show)
+
+_Kwarg = Model.Name "hydra.python.syntax.Kwarg"
+
+_Kwarg_name = Model.Name "name"
+
+_Kwarg_value = Model.Name "value"
+
+data KwargOrDoubleStarred =
+  KwargOrDoubleStarredKwarg Kwarg |
+  KwargOrDoubleStarredDoubleStarred Expression
+  deriving (Eq, Ord, Read, Show)
+
+_KwargOrDoubleStarred = Model.Name "hydra.python.syntax.KwargOrDoubleStarred"
+
+_KwargOrDoubleStarred_kwarg = Model.Name "kwarg"
+
+_KwargOrDoubleStarred_doubleStarred = Model.Name "doubleStarred"
+
+newtype StarTargetsListSeq =
+  StarTargetsListSeq {
+    unStarTargetsListSeq :: [StarTarget]}
+  deriving (Eq, Ord, Read, Show)
+
+_StarTargetsListSeq = Model.Name "hydra.python.syntax.StarTargetsListSeq"
+
+newtype StarTargetsTupleSeq =
+  StarTargetsTupleSeq {
+    unStarTargetsTupleSeq :: [StarTarget]}
+  deriving (Eq, Ord, Read, Show)
+
+_StarTargetsTupleSeq = Model.Name "hydra.python.syntax.StarTargetsTupleSeq"
+
+data StarTarget =
+  StarTargetStarred StarTarget |
+  StarTargetUnstarred TargetWithStarAtom
+  deriving (Eq, Ord, Read, Show)
+
+_StarTarget = Model.Name "hydra.python.syntax.StarTarget"
+
+_StarTarget_starred = Model.Name "starred"
+
+_StarTarget_unstarred = Model.Name "unstarred"
+
+data TargetWithStarAtom =
+  TargetWithStarAtomProject TPrimaryAndName |
+  TargetWithStarAtomSlices TPrimaryAndSlices |
+  TargetWithStarAtomAtom StarAtom
+  deriving (Eq, Ord, Read, Show)
+
+_TargetWithStarAtom = Model.Name "hydra.python.syntax.TargetWithStarAtom"
+
+_TargetWithStarAtom_project = Model.Name "project"
+
+_TargetWithStarAtom_slices = Model.Name "slices"
+
+_TargetWithStarAtom_atom = Model.Name "atom"
+
+data TPrimaryAndName =
+  TPrimaryAndName {
+    tPrimaryAndNamePrimary :: TPrimary,
+    tPrimaryAndNameName :: Name}
+  deriving (Eq, Ord, Read, Show)
+
+_TPrimaryAndName = Model.Name "hydra.python.syntax.TPrimaryAndName"
+
+_TPrimaryAndName_primary = Model.Name "primary"
+
+_TPrimaryAndName_name = Model.Name "name"
+
+data TPrimaryAndSlices =
+  TPrimaryAndSlices {
+    tPrimaryAndSlicesPrimary :: TPrimary,
+    tPrimaryAndSlicesSlices :: Slices}
+  deriving (Eq, Ord, Read, Show)
+
+_TPrimaryAndSlices = Model.Name "hydra.python.syntax.TPrimaryAndSlices"
+
+_TPrimaryAndSlices_primary = Model.Name "primary"
+
+_TPrimaryAndSlices_slices = Model.Name "slices"
+
+data StarAtom =
+  StarAtomName Name |
+  StarAtomTargetWithStarAtom TargetWithStarAtom |
+  StarAtomStarTargetsTupleSeq (Maybe StarTargetsTupleSeq) |
+  StarAtomStarTargetsListSeq (Maybe StarTargetsListSeq)
+  deriving (Eq, Ord, Read, Show)
+
+_StarAtom = Model.Name "hydra.python.syntax.StarAtom"
+
+_StarAtom_name = Model.Name "name"
+
+_StarAtom_targetWithStarAtom = Model.Name "targetWithStarAtom"
+
+_StarAtom_starTargetsTupleSeq = Model.Name "starTargetsTupleSeq"
+
+_StarAtom_starTargetsListSeq = Model.Name "starTargetsListSeq"
+
+data SingleTarget =
+  SingleTargetSubscriptAttributeTarget SingleSubscriptAttributeTarget |
+  SingleTargetName Name |
+  SingleTargetParens SingleTarget
+  deriving (Eq, Ord, Read, Show)
+
+_SingleTarget = Model.Name "hydra.python.syntax.SingleTarget"
+
+_SingleTarget_subscriptAttributeTarget = Model.Name "subscriptAttributeTarget"
+
+_SingleTarget_name = Model.Name "name"
+
+_SingleTarget_parens = Model.Name "parens"
+
+data SingleSubscriptAttributeTarget =
+  SingleSubscriptAttributeTargetPrimaryAndName TPrimaryAndName |
+  SingleSubscriptAttributeTargetPrimaryAndSlices TPrimaryAndSlices
+  deriving (Eq, Ord, Read, Show)
+
+_SingleSubscriptAttributeTarget = Model.Name "hydra.python.syntax.SingleSubscriptAttributeTarget"
+
+_SingleSubscriptAttributeTarget_primaryAndName = Model.Name "primaryAndName"
+
+_SingleSubscriptAttributeTarget_primaryAndSlices = Model.Name "primaryAndSlices"
+
+data TPrimary =
+  TPrimaryPrimaryAndName TPrimaryAndName |
+  TPrimaryPrimaryAndSlices TPrimaryAndSlices |
+  TPrimaryPrimaryAndGenexp TPrimaryAndGenexp |
+  TPrimaryPrimaryAndArguments TPrimaryAndArguments |
+  TPrimaryAtom Atom
+  deriving (Eq, Ord, Read, Show)
+
+_TPrimary = Model.Name "hydra.python.syntax.TPrimary"
+
+_TPrimary_primaryAndName = Model.Name "primaryAndName"
+
+_TPrimary_primaryAndSlices = Model.Name "primaryAndSlices"
+
+_TPrimary_primaryAndGenexp = Model.Name "primaryAndGenexp"
+
+_TPrimary_primaryAndArguments = Model.Name "primaryAndArguments"
+
+_TPrimary_atom = Model.Name "atom"
+
+data TPrimaryAndGenexp =
+  TPrimaryAndGenexp {
+    tPrimaryAndGenexpPrimary :: TPrimary,
+    tPrimaryAndGenexpGenexp :: Genexp}
+  deriving (Eq, Ord, Read, Show)
+
+_TPrimaryAndGenexp = Model.Name "hydra.python.syntax.TPrimaryAndGenexp"
+
+_TPrimaryAndGenexp_primary = Model.Name "primary"
+
+_TPrimaryAndGenexp_genexp = Model.Name "genexp"
+
+data TPrimaryAndArguments =
+  TPrimaryAndArguments {
+    tPrimaryAndArgumentsPrimary :: TPrimary,
+    tPrimaryAndArgumentsArguments :: (Maybe Args)}
+  deriving (Eq, Ord, Read, Show)
+
+_TPrimaryAndArguments = Model.Name "hydra.python.syntax.TPrimaryAndArguments"
+
+_TPrimaryAndArguments_primary = Model.Name "primary"
+
+_TPrimaryAndArguments_arguments = Model.Name "arguments"
+
+newtype DelTargets =
+  DelTargets {
+    unDelTargets :: [DelTarget]}
+  deriving (Eq, Ord, Read, Show)
+
+_DelTargets = Model.Name "hydra.python.syntax.DelTargets"
+
+data DelTarget =
+  DelTargetPrimaryAndName TPrimaryAndName |
+  DelTargetPrimaryAndSlices TPrimaryAndSlices |
+  DelTargetDelTAtom DelTAtom
+  deriving (Eq, Ord, Read, Show)
+
+_DelTarget = Model.Name "hydra.python.syntax.DelTarget"
+
+_DelTarget_primaryAndName = Model.Name "primaryAndName"
+
+_DelTarget_primaryAndSlices = Model.Name "primaryAndSlices"
+
+_DelTarget_delTAtom = Model.Name "delTAtom"
+
+data DelTAtom =
+  DelTAtomName Name |
+  DelTAtomTarget DelTarget |
+  DelTAtomTargets DelTargets
+  deriving (Eq, Ord, Read, Show)
+
+_DelTAtom = Model.Name "hydra.python.syntax.DelTAtom"
+
+_DelTAtom_name = Model.Name "name"
+
+_DelTAtom_target = Model.Name "target"
+
+_DelTAtom_targets = Model.Name "targets"
+
+data TypeExpression =
+  TypeExpressionExpression Expression |
+  TypeExpressionStarredExpression Expression |
+  TypeExpressionDoubleStarredExpression Expression
+  deriving (Eq, Ord, Read, Show)
+
+_TypeExpression = Model.Name "hydra.python.syntax.TypeExpression"
+
+_TypeExpression_expression = Model.Name "expression"
+
+_TypeExpression_starredExpression = Model.Name "starredExpression"
+
+_TypeExpression_doubleStarredExpression = Model.Name "doubleStarredExpression"
+
+newtype FuncTypeComment =
+  FuncTypeComment {
+    unFuncTypeComment :: TypeComment}
+  deriving (Eq, Ord, Read, Show)
+
+_FuncTypeComment = Model.Name "hydra.python.syntax.FuncTypeComment"
diff --git a/src/main/haskell/Hydra/Python/Testing.hs b/src/main/haskell/Hydra/Python/Testing.hs
--- a/src/main/haskell/Hydra/Python/Testing.hs
+++ b/src/main/haskell/Hydra/Python/Testing.hs
@@ -4,42 +4,42 @@
 
 module Hydra.Python.Testing where
 
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Classes as Classes
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Constants as Constants
-import qualified Hydra.Core as Core
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Errors as Errors
-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.Chars as Chars
-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.Logic as Logic
-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals
-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.Core.Ast as Ast
+import qualified Hydra.Core.Classes as Classes
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Constants as Constants
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Errors as Errors
+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.Chars as Chars
+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.Logic as Logic
+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals
+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.Serialization as Serialization
+import qualified Hydra.Core.Tabular as Tabular
+import qualified Hydra.Core.Test.Utils as Utils
+import qualified Hydra.Core.Testing as Testing
+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.Python.Syntax as Syntax
-import qualified Hydra.Query as Query
-import qualified Hydra.Relational as Relational
-import qualified Hydra.Serialization as Serialization
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Test.Utils as Utils
-import qualified Hydra.Testing as Testing
-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
diff --git a/src/main/haskell/Hydra/Python/Utils.hs b/src/main/haskell/Hydra/Python/Utils.hs
--- a/src/main/haskell/Hydra/Python/Utils.hs
+++ b/src/main/haskell/Hydra/Python/Utils.hs
@@ -4,42 +4,42 @@
 
 module Hydra.Python.Utils where
 
-import qualified Hydra.Analysis as Analysis
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Classes as Classes
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Errors as Errors
-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.Maps as Maps
-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals
-import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs
-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.Core.Analysis as Analysis
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Classes as Classes
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Errors as Errors
+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.Maps as Maps
+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Pairs as Pairs
+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.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+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.Python.Environment as Environment
 import qualified Hydra.Python.Names as Names
 import qualified Hydra.Python.Serde as Serde
 import qualified Hydra.Python.Syntax as Syntax
-import qualified Hydra.Query as Query
-import qualified Hydra.Relational as Relational
-import qualified Hydra.Serialization as Serialization
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-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
@@ -83,7 +83,7 @@
 commentStatement :: String -> Syntax.Statement
 commentStatement s = pyExpressionToPyStatement (tripleQuotedString s)
 
--- | Generate __eq__ and __hash__ methods for the Decimal-typed union variant, delegating to hydra.overlay.python.util._decimal (scale-aware per docs/specification/ordering-and-equality.md; Node's generic derivation delegates to Decimal's own scale-blind equality/hash)
+-- | Generate __eq__ and __hash__ methods for the Decimal-typed union variant, delegating to hydra.core.overlay.python.util._decimal (scale-aware per docs/specification/ordering-and-equality.md; Node's generic derivation delegates to Decimal's own scale-blind equality/hash)
 decimalVariantMethods :: [Syntax.Statement]
 decimalVariantMethods =
     [
@@ -262,7 +262,7 @@
 findNamespaces :: S.Set String -> Packaging.ModuleName -> [Packaging.Definition] -> Util.ModuleNames Syntax.DottedName
 findNamespaces overlaySubs focusNs defs =
 
-      let coreNs = Packaging.ModuleName "hydra.core"
+      let coreNs = Packaging.ModuleName "hydra.core.model"
           namespaces = Analysis.moduleNamesForDefinitions (Names.encodeNamespaceWithOverrides overlaySubs) focusNs defs
       in (Logic.ifElse (Equality.equal (Packaging.unModuleName (Pairs.first (Util.moduleNamesFocus namespaces))) (Packaging.unModuleName coreNs)) namespaces (Util.ModuleNames {
         Util.moduleNamesFocus = (Util.moduleNamesFocus namespaces),
