packages feed

hydra-ext-0.18.0: src/main/haskell/Hydra/Ext/Dsl/Graphql/Syntax.hs

-- Note: this is an automatically generated file. Do not edit.

-- | DSL functions for hydra.ext.graphql.syntax

module Hydra.Ext.Dsl.Graphql.Syntax where

import qualified Hydra.Core.Model as Model
import qualified Hydra.Core.Typed as Typed
import qualified Hydra.Ext.Graphql.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.ext.graphql.syntax.Alias
aliasAlias :: Typed.TypedName Syntax.Alias
aliasAlias = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Alias")

-- | DSL injection for the Colon variant of hydra.ext.graphql.syntax.Alias
aliasColon :: Typed.TypedTerm Syntax.Alias
aliasColon =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Alias"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "Colon"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the Name variant of hydra.ext.graphql.syntax.Alias
aliasName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Alias
aliasName x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Alias"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "Name"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.Argument
argument :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Value -> Typed.TypedTerm Syntax.Argument
argument name value =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Argument"),
      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.ext.graphql.syntax.Argument
argumentArgument :: Typed.TypedName Syntax.Argument
argumentArgument = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Argument")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.Argument
argumentName :: Typed.TypedTerm Syntax.Argument -> Typed.TypedTerm Syntax.Name
argumentName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Argument"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Value field of hydra.ext.graphql.syntax.Argument
argumentValue :: Typed.TypedTerm Syntax.Argument -> Typed.TypedTerm Syntax.Value
argumentValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Argument"),
        Model.projectionFieldName = (Model.Name "Value")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.Argument
argumentWithName :: Typed.TypedTerm Syntax.Argument -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Argument
argumentWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Argument"),
      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.ext.graphql.syntax.Argument"),
              Model.projectionFieldName = (Model.Name "Value")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Value field of hydra.ext.graphql.syntax.Argument
argumentWithValue :: Typed.TypedTerm Syntax.Argument -> Typed.TypedTerm Syntax.Value -> Typed.TypedTerm Syntax.Argument
argumentWithValue original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Argument"),
      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.ext.graphql.syntax.Argument"),
              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 the hydra.ext.graphql.syntax.Arguments wrapper
arguments :: Typed.TypedTerm [Syntax.Argument] -> Typed.TypedTerm Syntax.Arguments
arguments x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.Arguments"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.Arguments
argumentsArguments :: Typed.TypedName Syntax.Arguments
argumentsArguments = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Arguments")

-- | DSL constructor for the hydra.ext.graphql.syntax.ArgumentsDefinition wrapper
argumentsDefinition :: Typed.TypedTerm [Syntax.InputValueDefinition] -> Typed.TypedTerm Syntax.ArgumentsDefinition
argumentsDefinition x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.ArgumentsDefinition"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ArgumentsDefinition
argumentsDefinitionArgumentsDefinition :: Typed.TypedName Syntax.ArgumentsDefinition
argumentsDefinitionArgumentsDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ArgumentsDefinition")

-- | DSL name token for hydra.ext.graphql.syntax.BooleanValue
booleanValueBooleanValue :: Typed.TypedName Syntax.BooleanValue
booleanValueBooleanValue = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.BooleanValue")

-- | DSL injection for the False variant of hydra.ext.graphql.syntax.BooleanValue
booleanValueFalse :: Typed.TypedTerm Syntax.BooleanValue
booleanValueFalse =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.BooleanValue"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "False"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the True variant of hydra.ext.graphql.syntax.BooleanValue
booleanValueTrue :: Typed.TypedTerm Syntax.BooleanValue
booleanValueTrue =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.BooleanValue"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "True"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL constructor for the hydra.ext.graphql.syntax.DefaultValue wrapper
defaultValue :: Typed.TypedTerm Syntax.Value -> Typed.TypedTerm Syntax.DefaultValue
defaultValue x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.DefaultValue"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.DefaultValue
defaultValueDefaultValue :: Typed.TypedName Syntax.DefaultValue
defaultValueDefaultValue = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.DefaultValue")

-- | DSL name token for hydra.ext.graphql.syntax.Definition
definitionDefinition :: Typed.TypedName Syntax.Definition
definitionDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Definition")

-- | DSL injection for the executable variant of hydra.ext.graphql.syntax.Definition
definitionExecutable :: Typed.TypedTerm Syntax.ExecutableDefinition -> Typed.TypedTerm Syntax.Definition
definitionExecutable x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Definition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "executable"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the typeSystem variant of hydra.ext.graphql.syntax.Definition
definitionTypeSystem :: Typed.TypedTerm Syntax.TypeSystemDefinitionOrExtension -> Typed.TypedTerm Syntax.Definition
definitionTypeSystem x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Definition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "typeSystem"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for the hydra.ext.graphql.syntax.Description wrapper
description :: Typed.TypedTerm Syntax.StringValue -> Typed.TypedTerm Syntax.Description
description x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.Description"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.Description
descriptionDescription :: Typed.TypedName Syntax.Description
descriptionDescription = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Description")

-- | DSL constructor for hydra.ext.graphql.syntax.Directive
directive :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Arguments) -> Typed.TypedTerm Syntax.Directive
directive name arguments =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Directive"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Arguments"),
          Model.fieldTerm = (Typed.unTypedTerm arguments)}]}))

-- | DSL accessor for the Arguments field of hydra.ext.graphql.syntax.Directive
directiveArguments :: Typed.TypedTerm Syntax.Directive -> Typed.TypedTerm (Maybe Syntax.Arguments)
directiveArguments x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Directive"),
        Model.projectionFieldName = (Model.Name "Arguments")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL constructor for hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinition :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.ArgumentsDefinition) -> Typed.TypedTerm (Maybe ()) -> Typed.TypedTerm Syntax.DirectiveLocations -> Typed.TypedTerm Syntax.DirectiveDefinition
directiveDefinition description name argumentsDefinition repeatable directiveLocations =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm argumentsDefinition)},
        Model.Field {
          Model.fieldName = (Model.Name "Repeatable"),
          Model.fieldTerm = (Typed.unTypedTerm repeatable)},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocations"),
          Model.fieldTerm = (Typed.unTypedTerm directiveLocations)}]}))

-- | DSL accessor for the ArgumentsDefinition field of hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinitionArgumentsDefinition :: Typed.TypedTerm Syntax.DirectiveDefinition -> Typed.TypedTerm (Maybe Syntax.ArgumentsDefinition)
directiveDefinitionArgumentsDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
        Model.projectionFieldName = (Model.Name "ArgumentsDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinitionDescription :: Typed.TypedTerm Syntax.DirectiveDefinition -> Typed.TypedTerm (Maybe Syntax.Description)
directiveDefinitionDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinitionDirectiveDefinition :: Typed.TypedName Syntax.DirectiveDefinition
directiveDefinitionDirectiveDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition")

-- | DSL accessor for the DirectiveLocations field of hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinitionDirectiveLocations :: Typed.TypedTerm Syntax.DirectiveDefinition -> Typed.TypedTerm Syntax.DirectiveLocations
directiveDefinitionDirectiveLocations x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
        Model.projectionFieldName = (Model.Name "DirectiveLocations")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinitionName :: Typed.TypedTerm Syntax.DirectiveDefinition -> Typed.TypedTerm Syntax.Name
directiveDefinitionName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Repeatable field of hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinitionRepeatable :: Typed.TypedTerm Syntax.DirectiveDefinition -> Typed.TypedTerm (Maybe ())
directiveDefinitionRepeatable x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
        Model.projectionFieldName = (Model.Name "Repeatable")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the ArgumentsDefinition field of hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinitionWithArgumentsDefinition :: Typed.TypedTerm Syntax.DirectiveDefinition -> Typed.TypedTerm (Maybe Syntax.ArgumentsDefinition) -> Typed.TypedTerm Syntax.DirectiveDefinition
directiveDefinitionWithArgumentsDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Repeatable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Repeatable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocations"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "DirectiveLocations")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinitionWithDescription :: Typed.TypedTerm Syntax.DirectiveDefinition -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.DirectiveDefinition
directiveDefinitionWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          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.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "ArgumentsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Repeatable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Repeatable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocations"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "DirectiveLocations")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the DirectiveLocations field of hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinitionWithDirectiveLocations :: Typed.TypedTerm Syntax.DirectiveDefinition -> Typed.TypedTerm Syntax.DirectiveLocations -> Typed.TypedTerm Syntax.DirectiveDefinition
directiveDefinitionWithDirectiveLocations original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "ArgumentsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Repeatable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Repeatable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocations"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinitionWithName :: Typed.TypedTerm Syntax.DirectiveDefinition -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.DirectiveDefinition
directiveDefinitionWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "ArgumentsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Repeatable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Repeatable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocations"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "DirectiveLocations")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Repeatable field of hydra.ext.graphql.syntax.DirectiveDefinition
directiveDefinitionWithRepeatable :: Typed.TypedTerm Syntax.DirectiveDefinition -> Typed.TypedTerm (Maybe ()) -> Typed.TypedTerm Syntax.DirectiveDefinition
directiveDefinitionWithRepeatable original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "ArgumentsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Repeatable"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocations"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveDefinition"),
              Model.projectionFieldName = (Model.Name "DirectiveLocations")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL name token for hydra.ext.graphql.syntax.Directive
directiveDirective :: Typed.TypedName Syntax.Directive
directiveDirective = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Directive")

-- | DSL name token for hydra.ext.graphql.syntax.DirectiveLocation
directiveLocationDirectiveLocation :: Typed.TypedName Syntax.DirectiveLocation
directiveLocationDirectiveLocation = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.DirectiveLocation")

-- | DSL injection for the executable variant of hydra.ext.graphql.syntax.DirectiveLocation
directiveLocationExecutable :: Typed.TypedTerm Syntax.ExecutableDirectiveLocation -> Typed.TypedTerm Syntax.DirectiveLocation
directiveLocationExecutable x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "executable"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the typeSystem variant of hydra.ext.graphql.syntax.DirectiveLocation
directiveLocationTypeSystem :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation -> Typed.TypedTerm Syntax.DirectiveLocation
directiveLocationTypeSystem x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "typeSystem"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL name token for hydra.ext.graphql.syntax.DirectiveLocations
directiveLocationsDirectiveLocations :: Typed.TypedName Syntax.DirectiveLocations
directiveLocationsDirectiveLocations = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.DirectiveLocations")

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.DirectiveLocations
directiveLocationsSeq :: Typed.TypedTerm Syntax.DirectiveLocationsSequence -> Typed.TypedTerm Syntax.DirectiveLocations
directiveLocationsSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocations"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq2 variant of hydra.ext.graphql.syntax.DirectiveLocations
directiveLocationsSeq2 :: Typed.TypedTerm Syntax.DirectiveLocationsSequence2 -> Typed.TypedTerm Syntax.DirectiveLocations
directiveLocationsSeq2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocations"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.DirectiveLocationsSequence
directiveLocationsSequence :: Typed.TypedTerm Syntax.DirectiveLocations -> Typed.TypedTerm Syntax.DirectiveLocation -> Typed.TypedTerm Syntax.DirectiveLocationsSequence
directiveLocationsSequence directiveLocations directiveLocation =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocations"),
          Model.fieldTerm = (Typed.unTypedTerm directiveLocations)},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocation"),
          Model.fieldTerm = (Typed.unTypedTerm directiveLocation)}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.DirectiveLocationsSequence2
directiveLocationsSequence2 :: Typed.TypedTerm (Maybe ()) -> Typed.TypedTerm Syntax.DirectiveLocation -> Typed.TypedTerm Syntax.DirectiveLocationsSequence2
directiveLocationsSequence2 or directiveLocation =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Or"),
          Model.fieldTerm = (Typed.unTypedTerm or)},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocation"),
          Model.fieldTerm = (Typed.unTypedTerm directiveLocation)}]}))

-- | DSL accessor for the DirectiveLocation field of hydra.ext.graphql.syntax.DirectiveLocationsSequence2
directiveLocationsSequence2DirectiveLocation :: Typed.TypedTerm Syntax.DirectiveLocationsSequence2 -> Typed.TypedTerm Syntax.DirectiveLocation
directiveLocationsSequence2DirectiveLocation x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence2"),
        Model.projectionFieldName = (Model.Name "DirectiveLocation")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.DirectiveLocationsSequence2
directiveLocationsSequence2DirectiveLocationsSequence2 :: Typed.TypedName Syntax.DirectiveLocationsSequence2
directiveLocationsSequence2DirectiveLocationsSequence2 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence2")

-- | DSL accessor for the Or field of hydra.ext.graphql.syntax.DirectiveLocationsSequence2
directiveLocationsSequence2Or :: Typed.TypedTerm Syntax.DirectiveLocationsSequence2 -> Typed.TypedTerm (Maybe ())
directiveLocationsSequence2Or x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence2"),
        Model.projectionFieldName = (Model.Name "Or")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the DirectiveLocation field of hydra.ext.graphql.syntax.DirectiveLocationsSequence2
directiveLocationsSequence2WithDirectiveLocation :: Typed.TypedTerm Syntax.DirectiveLocationsSequence2 -> Typed.TypedTerm Syntax.DirectiveLocation -> Typed.TypedTerm Syntax.DirectiveLocationsSequence2
directiveLocationsSequence2WithDirectiveLocation original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Or"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence2"),
              Model.projectionFieldName = (Model.Name "Or")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocation"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Or field of hydra.ext.graphql.syntax.DirectiveLocationsSequence2
directiveLocationsSequence2WithOr :: Typed.TypedTerm Syntax.DirectiveLocationsSequence2 -> Typed.TypedTerm (Maybe ()) -> Typed.TypedTerm Syntax.DirectiveLocationsSequence2
directiveLocationsSequence2WithOr original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Or"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocation"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence2"),
              Model.projectionFieldName = (Model.Name "DirectiveLocation")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL accessor for the DirectiveLocation field of hydra.ext.graphql.syntax.DirectiveLocationsSequence
directiveLocationsSequenceDirectiveLocation :: Typed.TypedTerm Syntax.DirectiveLocationsSequence -> Typed.TypedTerm Syntax.DirectiveLocation
directiveLocationsSequenceDirectiveLocation x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence"),
        Model.projectionFieldName = (Model.Name "DirectiveLocation")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the DirectiveLocations field of hydra.ext.graphql.syntax.DirectiveLocationsSequence
directiveLocationsSequenceDirectiveLocations :: Typed.TypedTerm Syntax.DirectiveLocationsSequence -> Typed.TypedTerm Syntax.DirectiveLocations
directiveLocationsSequenceDirectiveLocations x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence"),
        Model.projectionFieldName = (Model.Name "DirectiveLocations")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.DirectiveLocationsSequence
directiveLocationsSequenceDirectiveLocationsSequence :: Typed.TypedName Syntax.DirectiveLocationsSequence
directiveLocationsSequenceDirectiveLocationsSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence")

-- | DSL updater for the DirectiveLocation field of hydra.ext.graphql.syntax.DirectiveLocationsSequence
directiveLocationsSequenceWithDirectiveLocation :: Typed.TypedTerm Syntax.DirectiveLocationsSequence -> Typed.TypedTerm Syntax.DirectiveLocation -> Typed.TypedTerm Syntax.DirectiveLocationsSequence
directiveLocationsSequenceWithDirectiveLocation original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocations"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence"),
              Model.projectionFieldName = (Model.Name "DirectiveLocations")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocation"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the DirectiveLocations field of hydra.ext.graphql.syntax.DirectiveLocationsSequence
directiveLocationsSequenceWithDirectiveLocations :: Typed.TypedTerm Syntax.DirectiveLocationsSequence -> Typed.TypedTerm Syntax.DirectiveLocations -> Typed.TypedTerm Syntax.DirectiveLocationsSequence
directiveLocationsSequenceWithDirectiveLocations original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocations"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "DirectiveLocation"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.DirectiveLocationsSequence"),
              Model.projectionFieldName = (Model.Name "DirectiveLocation")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.Directive
directiveName :: Typed.TypedTerm Syntax.Directive -> Typed.TypedTerm Syntax.Name
directiveName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Directive"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Arguments field of hydra.ext.graphql.syntax.Directive
directiveWithArguments :: Typed.TypedTerm Syntax.Directive -> Typed.TypedTerm (Maybe Syntax.Arguments) -> Typed.TypedTerm Syntax.Directive
directiveWithArguments original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Directive"),
      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.ext.graphql.syntax.Directive"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Arguments"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.Directive
directiveWithName :: Typed.TypedTerm Syntax.Directive -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Directive
directiveWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Directive"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          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.ext.graphql.syntax.Directive"),
              Model.projectionFieldName = (Model.Name "Arguments")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for the hydra.ext.graphql.syntax.Directives wrapper
directives :: Typed.TypedTerm [Syntax.Directive] -> Typed.TypedTerm Syntax.Directives
directives x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.Directives"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.Directives
directivesDirectives :: Typed.TypedName Syntax.Directives
directivesDirectives = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Directives")

-- | DSL constructor for the hydra.ext.graphql.syntax.Document wrapper
document :: Typed.TypedTerm [Syntax.Definition] -> Typed.TypedTerm Syntax.Document
document x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.Document"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.Document
documentDocument :: Typed.TypedName Syntax.Document
documentDocument = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Document")

-- | DSL constructor for hydra.ext.graphql.syntax.EnumTypeDefinition
enumTypeDefinition :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm (Maybe Syntax.EnumValuesDefinition) -> Typed.TypedTerm Syntax.EnumTypeDefinition
enumTypeDefinition description name directives enumValuesDefinition =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValuesDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm enumValuesDefinition)}]}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.EnumTypeDefinition
enumTypeDefinitionDescription :: Typed.TypedTerm Syntax.EnumTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Description)
enumTypeDefinitionDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.EnumTypeDefinition
enumTypeDefinitionDirectives :: Typed.TypedTerm Syntax.EnumTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Directives)
enumTypeDefinitionDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.EnumTypeDefinition
enumTypeDefinitionEnumTypeDefinition :: Typed.TypedName Syntax.EnumTypeDefinition
enumTypeDefinitionEnumTypeDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition")

-- | DSL accessor for the EnumValuesDefinition field of hydra.ext.graphql.syntax.EnumTypeDefinition
enumTypeDefinitionEnumValuesDefinition :: Typed.TypedTerm Syntax.EnumTypeDefinition -> Typed.TypedTerm (Maybe Syntax.EnumValuesDefinition)
enumTypeDefinitionEnumValuesDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
        Model.projectionFieldName = (Model.Name "EnumValuesDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.EnumTypeDefinition
enumTypeDefinitionName :: Typed.TypedTerm Syntax.EnumTypeDefinition -> Typed.TypedTerm Syntax.Name
enumTypeDefinitionName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.EnumTypeDefinition
enumTypeDefinitionWithDescription :: Typed.TypedTerm Syntax.EnumTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.EnumTypeDefinition
enumTypeDefinitionWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          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.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValuesDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "EnumValuesDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.EnumTypeDefinition
enumTypeDefinitionWithDirectives :: Typed.TypedTerm Syntax.EnumTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.EnumTypeDefinition
enumTypeDefinitionWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValuesDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "EnumValuesDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the EnumValuesDefinition field of hydra.ext.graphql.syntax.EnumTypeDefinition
enumTypeDefinitionWithEnumValuesDefinition :: Typed.TypedTerm Syntax.EnumTypeDefinition -> Typed.TypedTerm (Maybe Syntax.EnumValuesDefinition) -> Typed.TypedTerm Syntax.EnumTypeDefinition
enumTypeDefinitionWithEnumValuesDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValuesDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.EnumTypeDefinition
enumTypeDefinitionWithName :: Typed.TypedTerm Syntax.EnumTypeDefinition -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.EnumTypeDefinition
enumTypeDefinitionWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValuesDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeDefinition"),
              Model.projectionFieldName = (Model.Name "EnumValuesDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL name token for hydra.ext.graphql.syntax.EnumTypeExtension
enumTypeExtensionEnumTypeExtension :: Typed.TypedName Syntax.EnumTypeExtension
enumTypeExtensionEnumTypeExtension = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtension")

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.EnumTypeExtension
enumTypeExtensionSeq :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence -> Typed.TypedTerm Syntax.EnumTypeExtension
enumTypeExtensionSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq2 variant of hydra.ext.graphql.syntax.EnumTypeExtension
enumTypeExtensionSeq2 :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence2 -> Typed.TypedTerm Syntax.EnumTypeExtension
enumTypeExtensionSeq2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.EnumTypeExtensionSequence
enumTypeExtensionSequence :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.EnumValuesDefinition -> Typed.TypedTerm Syntax.EnumTypeExtensionSequence
enumTypeExtensionSequence name directives enumValuesDefinition =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValuesDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm enumValuesDefinition)}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.EnumTypeExtensionSequence2
enumTypeExtensionSequence2 :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm Syntax.EnumTypeExtensionSequence2
enumTypeExtensionSequence2 name directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.EnumTypeExtensionSequence2
enumTypeExtensionSequence2Directives :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Directives
enumTypeExtensionSequence2Directives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.EnumTypeExtensionSequence2
enumTypeExtensionSequence2EnumTypeExtensionSequence2 :: Typed.TypedName Syntax.EnumTypeExtensionSequence2
enumTypeExtensionSequence2EnumTypeExtensionSequence2 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence2")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.EnumTypeExtensionSequence2
enumTypeExtensionSequence2Name :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Name
enumTypeExtensionSequence2Name x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.EnumTypeExtensionSequence2
enumTypeExtensionSequence2WithDirectives :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm Syntax.EnumTypeExtensionSequence2
enumTypeExtensionSequence2WithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence2"),
      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.ext.graphql.syntax.EnumTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.EnumTypeExtensionSequence2
enumTypeExtensionSequence2WithName :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.EnumTypeExtensionSequence2
enumTypeExtensionSequence2WithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.EnumTypeExtensionSequence
enumTypeExtensionSequenceDirectives :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives)
enumTypeExtensionSequenceDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.EnumTypeExtensionSequence
enumTypeExtensionSequenceEnumTypeExtensionSequence :: Typed.TypedName Syntax.EnumTypeExtensionSequence
enumTypeExtensionSequenceEnumTypeExtensionSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence")

-- | DSL accessor for the EnumValuesDefinition field of hydra.ext.graphql.syntax.EnumTypeExtensionSequence
enumTypeExtensionSequenceEnumValuesDefinition :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence -> Typed.TypedTerm Syntax.EnumValuesDefinition
enumTypeExtensionSequenceEnumValuesDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "EnumValuesDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.EnumTypeExtensionSequence
enumTypeExtensionSequenceName :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence -> Typed.TypedTerm Syntax.Name
enumTypeExtensionSequenceName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.EnumTypeExtensionSequence
enumTypeExtensionSequenceWithDirectives :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.EnumTypeExtensionSequence
enumTypeExtensionSequenceWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence"),
      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.ext.graphql.syntax.EnumTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValuesDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "EnumValuesDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the EnumValuesDefinition field of hydra.ext.graphql.syntax.EnumTypeExtensionSequence
enumTypeExtensionSequenceWithEnumValuesDefinition :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence -> Typed.TypedTerm Syntax.EnumValuesDefinition -> Typed.TypedTerm Syntax.EnumTypeExtensionSequence
enumTypeExtensionSequenceWithEnumValuesDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence"),
      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.ext.graphql.syntax.EnumTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValuesDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.EnumTypeExtensionSequence
enumTypeExtensionSequenceWithName :: Typed.TypedTerm Syntax.EnumTypeExtensionSequence -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.EnumTypeExtensionSequence
enumTypeExtensionSequenceWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValuesDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "EnumValuesDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for the hydra.ext.graphql.syntax.EnumValue wrapper
enumValue :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.EnumValue
enumValue x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValue"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL constructor for hydra.ext.graphql.syntax.EnumValueDefinition
enumValueDefinition :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.EnumValue -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.EnumValueDefinition
enumValueDefinition description enumValue directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValue"),
          Model.fieldTerm = (Typed.unTypedTerm enumValue)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.EnumValueDefinition
enumValueDefinitionDescription :: Typed.TypedTerm Syntax.EnumValueDefinition -> Typed.TypedTerm (Maybe Syntax.Description)
enumValueDefinitionDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.EnumValueDefinition
enumValueDefinitionDirectives :: Typed.TypedTerm Syntax.EnumValueDefinition -> Typed.TypedTerm (Maybe Syntax.Directives)
enumValueDefinitionDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the EnumValue field of hydra.ext.graphql.syntax.EnumValueDefinition
enumValueDefinitionEnumValue :: Typed.TypedTerm Syntax.EnumValueDefinition -> Typed.TypedTerm Syntax.EnumValue
enumValueDefinitionEnumValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
        Model.projectionFieldName = (Model.Name "EnumValue")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.EnumValueDefinition
enumValueDefinitionEnumValueDefinition :: Typed.TypedName Syntax.EnumValueDefinition
enumValueDefinitionEnumValueDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition")

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.EnumValueDefinition
enumValueDefinitionWithDescription :: Typed.TypedTerm Syntax.EnumValueDefinition -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.EnumValueDefinition
enumValueDefinitionWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
              Model.projectionFieldName = (Model.Name "EnumValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.EnumValueDefinition
enumValueDefinitionWithDirectives :: Typed.TypedTerm Syntax.EnumValueDefinition -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.EnumValueDefinition
enumValueDefinitionWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
              Model.projectionFieldName = (Model.Name "EnumValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the EnumValue field of hydra.ext.graphql.syntax.EnumValueDefinition
enumValueDefinitionWithEnumValue :: Typed.TypedTerm Syntax.EnumValueDefinition -> Typed.TypedTerm Syntax.EnumValue -> Typed.TypedTerm Syntax.EnumValueDefinition
enumValueDefinitionWithEnumValue original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "EnumValue"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValueDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL name token for hydra.ext.graphql.syntax.EnumValue
enumValueEnumValue :: Typed.TypedName Syntax.EnumValue
enumValueEnumValue = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.EnumValue")

-- | DSL constructor for the hydra.ext.graphql.syntax.EnumValuesDefinition wrapper
enumValuesDefinition :: Typed.TypedTerm [Syntax.EnumValueDefinition] -> Typed.TypedTerm Syntax.EnumValuesDefinition
enumValuesDefinition x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.EnumValuesDefinition"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.EnumValuesDefinition
enumValuesDefinitionEnumValuesDefinition :: Typed.TypedName Syntax.EnumValuesDefinition
enumValuesDefinitionEnumValuesDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.EnumValuesDefinition")

-- | DSL name token for hydra.ext.graphql.syntax.ExecutableDefinition
executableDefinitionExecutableDefinition :: Typed.TypedName Syntax.ExecutableDefinition
executableDefinitionExecutableDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ExecutableDefinition")

-- | DSL injection for the fragment variant of hydra.ext.graphql.syntax.ExecutableDefinition
executableDefinitionFragment :: Typed.TypedTerm Syntax.FragmentDefinition -> Typed.TypedTerm Syntax.ExecutableDefinition
executableDefinitionFragment x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ExecutableDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "fragment"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the operation variant of hydra.ext.graphql.syntax.ExecutableDefinition
executableDefinitionOperation :: Typed.TypedTerm Syntax.OperationDefinition -> Typed.TypedTerm Syntax.ExecutableDefinition
executableDefinitionOperation x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ExecutableDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "operation"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL name token for hydra.ext.graphql.syntax.ExecutableDirectiveLocation
executableDirectiveLocationExecutableDirectiveLocation :: Typed.TypedName Syntax.ExecutableDirectiveLocation
executableDirectiveLocationExecutableDirectiveLocation =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ExecutableDirectiveLocation")

-- | DSL injection for the FIELD variant of hydra.ext.graphql.syntax.ExecutableDirectiveLocation
executableDirectiveLocationFIELD :: Typed.TypedTerm Syntax.ExecutableDirectiveLocation
executableDirectiveLocationFIELD =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ExecutableDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "FIELD"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the FRAGMENT_DEFINITION variant of hydra.ext.graphql.syntax.ExecutableDirectiveLocation
executableDirectiveLocationFRAGMENT_DEFINITION :: Typed.TypedTerm Syntax.ExecutableDirectiveLocation
executableDirectiveLocationFRAGMENT_DEFINITION =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ExecutableDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "FRAGMENT_DEFINITION"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the FRAGMENT_SPREAD variant of hydra.ext.graphql.syntax.ExecutableDirectiveLocation
executableDirectiveLocationFRAGMENT_SPREAD :: Typed.TypedTerm Syntax.ExecutableDirectiveLocation
executableDirectiveLocationFRAGMENT_SPREAD =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ExecutableDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "FRAGMENT_SPREAD"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the INLINE_FRAGMENT variant of hydra.ext.graphql.syntax.ExecutableDirectiveLocation
executableDirectiveLocationINLINE_FRAGMENT :: Typed.TypedTerm Syntax.ExecutableDirectiveLocation
executableDirectiveLocationINLINE_FRAGMENT =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ExecutableDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "INLINE_FRAGMENT"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the MUTATION variant of hydra.ext.graphql.syntax.ExecutableDirectiveLocation
executableDirectiveLocationMUTATION :: Typed.TypedTerm Syntax.ExecutableDirectiveLocation
executableDirectiveLocationMUTATION =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ExecutableDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "MUTATION"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the QUERY variant of hydra.ext.graphql.syntax.ExecutableDirectiveLocation
executableDirectiveLocationQUERY :: Typed.TypedTerm Syntax.ExecutableDirectiveLocation
executableDirectiveLocationQUERY =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ExecutableDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "QUERY"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the SUBSCRIPTION variant of hydra.ext.graphql.syntax.ExecutableDirectiveLocation
executableDirectiveLocationSUBSCRIPTION :: Typed.TypedTerm Syntax.ExecutableDirectiveLocation
executableDirectiveLocationSUBSCRIPTION =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ExecutableDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "SUBSCRIPTION"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the VARIABLE_DEFINITION variant of hydra.ext.graphql.syntax.ExecutableDirectiveLocation
executableDirectiveLocationVARIABLE_DEFINITION :: Typed.TypedTerm Syntax.ExecutableDirectiveLocation
executableDirectiveLocationVARIABLE_DEFINITION =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ExecutableDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "VARIABLE_DEFINITION"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL constructor for the hydra.ext.graphql.syntax.ExecutableDocument wrapper
executableDocument :: Typed.TypedTerm [Syntax.ExecutableDefinition] -> Typed.TypedTerm Syntax.ExecutableDocument
executableDocument x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.ExecutableDocument"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ExecutableDocument
executableDocumentExecutableDocument :: Typed.TypedName Syntax.ExecutableDocument
executableDocumentExecutableDocument = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ExecutableDocument")

-- | DSL constructor for hydra.ext.graphql.syntax.Field
field :: Typed.TypedTerm (Maybe Syntax.Alias) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Arguments) -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm (Maybe Syntax.SelectionSet) -> Typed.TypedTerm Syntax.Field
field alias name arguments directives selectionSet =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Alias"),
          Model.fieldTerm = (Typed.unTypedTerm alias)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Arguments"),
          Model.fieldTerm = (Typed.unTypedTerm arguments)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Typed.unTypedTerm selectionSet)}]}))

-- | DSL accessor for the Alias field of hydra.ext.graphql.syntax.Field
fieldAlias :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe Syntax.Alias)
fieldAlias x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
        Model.projectionFieldName = (Model.Name "Alias")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Arguments field of hydra.ext.graphql.syntax.Field
fieldArguments :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe Syntax.Arguments)
fieldArguments x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
        Model.projectionFieldName = (Model.Name "Arguments")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL constructor for hydra.ext.graphql.syntax.FieldDefinition
fieldDefinition :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.ArgumentsDefinition) -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.FieldDefinition
fieldDefinition description name argumentsDefinition type_ directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm argumentsDefinition)},
        Model.Field {
          Model.fieldName = (Model.Name "Type"),
          Model.fieldTerm = (Typed.unTypedTerm type_)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the ArgumentsDefinition field of hydra.ext.graphql.syntax.FieldDefinition
fieldDefinitionArgumentsDefinition :: Typed.TypedTerm Syntax.FieldDefinition -> Typed.TypedTerm (Maybe Syntax.ArgumentsDefinition)
fieldDefinitionArgumentsDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
        Model.projectionFieldName = (Model.Name "ArgumentsDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.FieldDefinition
fieldDefinitionDescription :: Typed.TypedTerm Syntax.FieldDefinition -> Typed.TypedTerm (Maybe Syntax.Description)
fieldDefinitionDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.FieldDefinition
fieldDefinitionDirectives :: Typed.TypedTerm Syntax.FieldDefinition -> Typed.TypedTerm (Maybe Syntax.Directives)
fieldDefinitionDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.FieldDefinition
fieldDefinitionFieldDefinition :: Typed.TypedName Syntax.FieldDefinition
fieldDefinitionFieldDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.FieldDefinition")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.FieldDefinition
fieldDefinitionName :: Typed.TypedTerm Syntax.FieldDefinition -> Typed.TypedTerm Syntax.Name
fieldDefinitionName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Type field of hydra.ext.graphql.syntax.FieldDefinition
fieldDefinitionType :: Typed.TypedTerm Syntax.FieldDefinition -> Typed.TypedTerm Syntax.Type
fieldDefinitionType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
        Model.projectionFieldName = (Model.Name "Type")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the ArgumentsDefinition field of hydra.ext.graphql.syntax.FieldDefinition
fieldDefinitionWithArgumentsDefinition :: Typed.TypedTerm Syntax.FieldDefinition -> Typed.TypedTerm (Maybe Syntax.ArgumentsDefinition) -> Typed.TypedTerm Syntax.FieldDefinition
fieldDefinitionWithArgumentsDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          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.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.FieldDefinition
fieldDefinitionWithDescription :: Typed.TypedTerm Syntax.FieldDefinition -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.FieldDefinition
fieldDefinitionWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          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.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "ArgumentsDefinition")})),
            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.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.FieldDefinition
fieldDefinitionWithDirectives :: Typed.TypedTerm Syntax.FieldDefinition -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.FieldDefinition
fieldDefinitionWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "ArgumentsDefinition")})),
            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.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.FieldDefinition
fieldDefinitionWithName :: Typed.TypedTerm Syntax.FieldDefinition -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.FieldDefinition
fieldDefinitionWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "ArgumentsDefinition")})),
            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.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Type field of hydra.ext.graphql.syntax.FieldDefinition
fieldDefinitionWithType :: Typed.TypedTerm Syntax.FieldDefinition -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.FieldDefinition
fieldDefinitionWithType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ArgumentsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "ArgumentsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Type"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.Field
fieldDirectives :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe Syntax.Directives)
fieldDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.Field
fieldField :: Typed.TypedName Syntax.Field
fieldField = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Field")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.Field
fieldName :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm Syntax.Name
fieldName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the SelectionSet field of hydra.ext.graphql.syntax.Field
fieldSelectionSet :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe Syntax.SelectionSet)
fieldSelectionSet x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
        Model.projectionFieldName = (Model.Name "SelectionSet")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Alias field of hydra.ext.graphql.syntax.Field
fieldWithAlias :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe Syntax.Alias) -> Typed.TypedTerm Syntax.Field
fieldWithAlias original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Alias"),
          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.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Name")})),
            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.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Arguments")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Arguments field of hydra.ext.graphql.syntax.Field
fieldWithArguments :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe Syntax.Arguments) -> Typed.TypedTerm Syntax.Field
fieldWithArguments original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Alias"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Alias")})),
            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.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Arguments"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.Field
fieldWithDirectives :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.Field
fieldWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Alias"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Alias")})),
            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.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Name")})),
            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.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Arguments")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.Field
fieldWithName :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Field
fieldWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Alias"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Alias")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          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.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Arguments")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the SelectionSet field of hydra.ext.graphql.syntax.Field
fieldWithSelectionSet :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm (Maybe Syntax.SelectionSet) -> Typed.TypedTerm Syntax.Field
fieldWithSelectionSet original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Alias"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Alias")})),
            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.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Name")})),
            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.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Arguments")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Field"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL constructor for the hydra.ext.graphql.syntax.FieldsDefinition wrapper
fieldsDefinition :: Typed.TypedTerm [Syntax.FieldDefinition] -> Typed.TypedTerm Syntax.FieldsDefinition
fieldsDefinition x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.FieldsDefinition"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.FieldsDefinition
fieldsDefinitionFieldsDefinition :: Typed.TypedName Syntax.FieldsDefinition
fieldsDefinitionFieldsDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.FieldsDefinition")

-- | DSL constructor for the hydra.ext.graphql.syntax.FloatValue wrapper
floatValue :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.FloatValue
floatValue x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.FloatValue"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.FloatValue
floatValueFloatValue :: Typed.TypedName Syntax.FloatValue
floatValueFloatValue = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.FloatValue")

-- | DSL constructor for hydra.ext.graphql.syntax.FragmentDefinition
fragmentDefinition :: Typed.TypedTerm Syntax.FragmentName -> Typed.TypedTerm Syntax.TypeCondition -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.SelectionSet -> Typed.TypedTerm Syntax.FragmentDefinition
fragmentDefinition fragmentName typeCondition directives selectionSet =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "FragmentName"),
          Model.fieldTerm = (Typed.unTypedTerm fragmentName)},
        Model.Field {
          Model.fieldName = (Model.Name "TypeCondition"),
          Model.fieldTerm = (Typed.unTypedTerm typeCondition)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Typed.unTypedTerm selectionSet)}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.FragmentDefinition
fragmentDefinitionDirectives :: Typed.TypedTerm Syntax.FragmentDefinition -> Typed.TypedTerm (Maybe Syntax.Directives)
fragmentDefinitionDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.FragmentDefinition
fragmentDefinitionFragmentDefinition :: Typed.TypedName Syntax.FragmentDefinition
fragmentDefinitionFragmentDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition")

-- | DSL accessor for the FragmentName field of hydra.ext.graphql.syntax.FragmentDefinition
fragmentDefinitionFragmentName :: Typed.TypedTerm Syntax.FragmentDefinition -> Typed.TypedTerm Syntax.FragmentName
fragmentDefinitionFragmentName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
        Model.projectionFieldName = (Model.Name "FragmentName")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the SelectionSet field of hydra.ext.graphql.syntax.FragmentDefinition
fragmentDefinitionSelectionSet :: Typed.TypedTerm Syntax.FragmentDefinition -> Typed.TypedTerm Syntax.SelectionSet
fragmentDefinitionSelectionSet x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
        Model.projectionFieldName = (Model.Name "SelectionSet")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the TypeCondition field of hydra.ext.graphql.syntax.FragmentDefinition
fragmentDefinitionTypeCondition :: Typed.TypedTerm Syntax.FragmentDefinition -> Typed.TypedTerm Syntax.TypeCondition
fragmentDefinitionTypeCondition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
        Model.projectionFieldName = (Model.Name "TypeCondition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.FragmentDefinition
fragmentDefinitionWithDirectives :: Typed.TypedTerm Syntax.FragmentDefinition -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.FragmentDefinition
fragmentDefinitionWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "FragmentName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "FragmentName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "TypeCondition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "TypeCondition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the FragmentName field of hydra.ext.graphql.syntax.FragmentDefinition
fragmentDefinitionWithFragmentName :: Typed.TypedTerm Syntax.FragmentDefinition -> Typed.TypedTerm Syntax.FragmentName -> Typed.TypedTerm Syntax.FragmentDefinition
fragmentDefinitionWithFragmentName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "FragmentName"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "TypeCondition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "TypeCondition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the SelectionSet field of hydra.ext.graphql.syntax.FragmentDefinition
fragmentDefinitionWithSelectionSet :: Typed.TypedTerm Syntax.FragmentDefinition -> Typed.TypedTerm Syntax.SelectionSet -> Typed.TypedTerm Syntax.FragmentDefinition
fragmentDefinitionWithSelectionSet original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "FragmentName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "FragmentName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "TypeCondition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "TypeCondition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the TypeCondition field of hydra.ext.graphql.syntax.FragmentDefinition
fragmentDefinitionWithTypeCondition :: Typed.TypedTerm Syntax.FragmentDefinition -> Typed.TypedTerm Syntax.TypeCondition -> Typed.TypedTerm Syntax.FragmentDefinition
fragmentDefinitionWithTypeCondition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "FragmentName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "FragmentName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "TypeCondition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentDefinition"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for the hydra.ext.graphql.syntax.FragmentName wrapper
fragmentName :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.FragmentName
fragmentName x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentName"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.FragmentName
fragmentNameFragmentName :: Typed.TypedName Syntax.FragmentName
fragmentNameFragmentName = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.FragmentName")

-- | DSL constructor for hydra.ext.graphql.syntax.FragmentSpread
fragmentSpread :: Typed.TypedTerm Syntax.FragmentName -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.FragmentSpread
fragmentSpread fragmentName directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentSpread"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "FragmentName"),
          Model.fieldTerm = (Typed.unTypedTerm fragmentName)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.FragmentSpread
fragmentSpreadDirectives :: Typed.TypedTerm Syntax.FragmentSpread -> Typed.TypedTerm (Maybe Syntax.Directives)
fragmentSpreadDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentSpread"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the FragmentName field of hydra.ext.graphql.syntax.FragmentSpread
fragmentSpreadFragmentName :: Typed.TypedTerm Syntax.FragmentSpread -> Typed.TypedTerm Syntax.FragmentName
fragmentSpreadFragmentName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentSpread"),
        Model.projectionFieldName = (Model.Name "FragmentName")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.FragmentSpread
fragmentSpreadFragmentSpread :: Typed.TypedName Syntax.FragmentSpread
fragmentSpreadFragmentSpread = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.FragmentSpread")

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.FragmentSpread
fragmentSpreadWithDirectives :: Typed.TypedTerm Syntax.FragmentSpread -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.FragmentSpread
fragmentSpreadWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentSpread"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "FragmentName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentSpread"),
              Model.projectionFieldName = (Model.Name "FragmentName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the FragmentName field of hydra.ext.graphql.syntax.FragmentSpread
fragmentSpreadWithFragmentName :: Typed.TypedTerm Syntax.FragmentSpread -> Typed.TypedTerm Syntax.FragmentName -> Typed.TypedTerm Syntax.FragmentSpread
fragmentSpreadWithFragmentName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentSpread"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "FragmentName"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.FragmentSpread"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL name token for hydra.ext.graphql.syntax.ImplementsInterfaces
implementsInterfacesImplementsInterfaces :: Typed.TypedName Syntax.ImplementsInterfaces
implementsInterfacesImplementsInterfaces = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfaces")

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.ImplementsInterfaces
implementsInterfacesSeq :: Typed.TypedTerm Syntax.ImplementsInterfacesSequence -> Typed.TypedTerm Syntax.ImplementsInterfaces
implementsInterfacesSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfaces"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq2 variant of hydra.ext.graphql.syntax.ImplementsInterfaces
implementsInterfacesSeq2 :: Typed.TypedTerm Syntax.ImplementsInterfacesSequence2 -> Typed.TypedTerm Syntax.ImplementsInterfaces
implementsInterfacesSeq2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfaces"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.ImplementsInterfacesSequence
implementsInterfacesSequence :: Typed.TypedTerm Syntax.ImplementsInterfaces -> Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.ImplementsInterfacesSequence
implementsInterfacesSequence implementsInterfaces namedType =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm implementsInterfaces)},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Typed.unTypedTerm namedType)}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.ImplementsInterfacesSequence2
implementsInterfacesSequence2 :: Typed.TypedTerm (Maybe ()) -> Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.ImplementsInterfacesSequence2
implementsInterfacesSequence2 amp namedType =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Amp"),
          Model.fieldTerm = (Typed.unTypedTerm amp)},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Typed.unTypedTerm namedType)}]}))

-- | DSL accessor for the Amp field of hydra.ext.graphql.syntax.ImplementsInterfacesSequence2
implementsInterfacesSequence2Amp :: Typed.TypedTerm Syntax.ImplementsInterfacesSequence2 -> Typed.TypedTerm (Maybe ())
implementsInterfacesSequence2Amp x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence2"),
        Model.projectionFieldName = (Model.Name "Amp")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ImplementsInterfacesSequence2
implementsInterfacesSequence2ImplementsInterfacesSequence2 :: Typed.TypedName Syntax.ImplementsInterfacesSequence2
implementsInterfacesSequence2ImplementsInterfacesSequence2 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence2")

-- | DSL accessor for the NamedType field of hydra.ext.graphql.syntax.ImplementsInterfacesSequence2
implementsInterfacesSequence2NamedType :: Typed.TypedTerm Syntax.ImplementsInterfacesSequence2 -> Typed.TypedTerm Syntax.NamedType
implementsInterfacesSequence2NamedType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence2"),
        Model.projectionFieldName = (Model.Name "NamedType")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Amp field of hydra.ext.graphql.syntax.ImplementsInterfacesSequence2
implementsInterfacesSequence2WithAmp :: Typed.TypedTerm Syntax.ImplementsInterfacesSequence2 -> Typed.TypedTerm (Maybe ()) -> Typed.TypedTerm Syntax.ImplementsInterfacesSequence2
implementsInterfacesSequence2WithAmp original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Amp"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence2"),
              Model.projectionFieldName = (Model.Name "NamedType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the NamedType field of hydra.ext.graphql.syntax.ImplementsInterfacesSequence2
implementsInterfacesSequence2WithNamedType :: Typed.TypedTerm Syntax.ImplementsInterfacesSequence2 -> Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.ImplementsInterfacesSequence2
implementsInterfacesSequence2WithNamedType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Amp"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence2"),
              Model.projectionFieldName = (Model.Name "Amp")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL accessor for the ImplementsInterfaces field of hydra.ext.graphql.syntax.ImplementsInterfacesSequence
implementsInterfacesSequenceImplementsInterfaces :: Typed.TypedTerm Syntax.ImplementsInterfacesSequence -> Typed.TypedTerm Syntax.ImplementsInterfaces
implementsInterfacesSequenceImplementsInterfaces x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence"),
        Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ImplementsInterfacesSequence
implementsInterfacesSequenceImplementsInterfacesSequence :: Typed.TypedName Syntax.ImplementsInterfacesSequence
implementsInterfacesSequenceImplementsInterfacesSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence")

-- | DSL accessor for the NamedType field of hydra.ext.graphql.syntax.ImplementsInterfacesSequence
implementsInterfacesSequenceNamedType :: Typed.TypedTerm Syntax.ImplementsInterfacesSequence -> Typed.TypedTerm Syntax.NamedType
implementsInterfacesSequenceNamedType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence"),
        Model.projectionFieldName = (Model.Name "NamedType")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the ImplementsInterfaces field of hydra.ext.graphql.syntax.ImplementsInterfacesSequence
implementsInterfacesSequenceWithImplementsInterfaces :: Typed.TypedTerm Syntax.ImplementsInterfacesSequence -> Typed.TypedTerm Syntax.ImplementsInterfaces -> Typed.TypedTerm Syntax.ImplementsInterfacesSequence
implementsInterfacesSequenceWithImplementsInterfaces original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence"),
              Model.projectionFieldName = (Model.Name "NamedType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the NamedType field of hydra.ext.graphql.syntax.ImplementsInterfacesSequence
implementsInterfacesSequenceWithNamedType :: Typed.TypedTerm Syntax.ImplementsInterfacesSequence -> Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.ImplementsInterfacesSequence
implementsInterfacesSequenceWithNamedType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ImplementsInterfacesSequence"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.InlineFragment
inlineFragment :: Typed.TypedTerm (Maybe Syntax.TypeCondition) -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.SelectionSet -> Typed.TypedTerm Syntax.InlineFragment
inlineFragment typeCondition directives selectionSet =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "TypeCondition"),
          Model.fieldTerm = (Typed.unTypedTerm typeCondition)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Typed.unTypedTerm selectionSet)}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.InlineFragment
inlineFragmentDirectives :: Typed.TypedTerm Syntax.InlineFragment -> Typed.TypedTerm (Maybe Syntax.Directives)
inlineFragmentDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InlineFragment
inlineFragmentInlineFragment :: Typed.TypedName Syntax.InlineFragment
inlineFragmentInlineFragment = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InlineFragment")

-- | DSL accessor for the SelectionSet field of hydra.ext.graphql.syntax.InlineFragment
inlineFragmentSelectionSet :: Typed.TypedTerm Syntax.InlineFragment -> Typed.TypedTerm Syntax.SelectionSet
inlineFragmentSelectionSet x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
        Model.projectionFieldName = (Model.Name "SelectionSet")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the TypeCondition field of hydra.ext.graphql.syntax.InlineFragment
inlineFragmentTypeCondition :: Typed.TypedTerm Syntax.InlineFragment -> Typed.TypedTerm (Maybe Syntax.TypeCondition)
inlineFragmentTypeCondition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
        Model.projectionFieldName = (Model.Name "TypeCondition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.InlineFragment
inlineFragmentWithDirectives :: Typed.TypedTerm Syntax.InlineFragment -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InlineFragment
inlineFragmentWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "TypeCondition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
              Model.projectionFieldName = (Model.Name "TypeCondition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the SelectionSet field of hydra.ext.graphql.syntax.InlineFragment
inlineFragmentWithSelectionSet :: Typed.TypedTerm Syntax.InlineFragment -> Typed.TypedTerm Syntax.SelectionSet -> Typed.TypedTerm Syntax.InlineFragment
inlineFragmentWithSelectionSet original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "TypeCondition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
              Model.projectionFieldName = (Model.Name "TypeCondition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the TypeCondition field of hydra.ext.graphql.syntax.InlineFragment
inlineFragmentWithTypeCondition :: Typed.TypedTerm Syntax.InlineFragment -> Typed.TypedTerm (Maybe Syntax.TypeCondition) -> Typed.TypedTerm Syntax.InlineFragment
inlineFragmentWithTypeCondition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "TypeCondition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InlineFragment"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for the hydra.ext.graphql.syntax.InputFieldsDefinition wrapper
inputFieldsDefinition :: Typed.TypedTerm [Syntax.InputValueDefinition] -> Typed.TypedTerm Syntax.InputFieldsDefinition
inputFieldsDefinition x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.InputFieldsDefinition"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InputFieldsDefinition
inputFieldsDefinitionInputFieldsDefinition :: Typed.TypedName Syntax.InputFieldsDefinition
inputFieldsDefinitionInputFieldsDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InputFieldsDefinition")

-- | DSL name token for hydra.ext.graphql.syntax.InputObjectTypeDefinition
inputObjectTypeDefinitionInputObjectTypeDefinition :: Typed.TypedName Syntax.InputObjectTypeDefinition
inputObjectTypeDefinitionInputObjectTypeDefinition =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinition")

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.InputObjectTypeDefinition
inputObjectTypeDefinitionSeq :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence -> Typed.TypedTerm Syntax.InputObjectTypeDefinition
inputObjectTypeDefinitionSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq2 variant of hydra.ext.graphql.syntax.InputObjectTypeDefinition
inputObjectTypeDefinitionSeq2 :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence2 -> Typed.TypedTerm Syntax.InputObjectTypeDefinition
inputObjectTypeDefinitionSeq2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequence :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InputFieldsDefinition -> Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequence description name directives inputFieldsDefinition =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "InputFieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm inputFieldsDefinition)}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2 :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2 description name directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2Description :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence2 -> Typed.TypedTerm (Maybe Syntax.Description)
inputObjectTypeDefinitionSequence2Description x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2Directives :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence2 -> Typed.TypedTerm (Maybe Syntax.Directives)
inputObjectTypeDefinitionSequence2Directives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2InputObjectTypeDefinitionSequence2 :: Typed.TypedName Syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2InputObjectTypeDefinitionSequence2 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2Name :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence2 -> Typed.TypedTerm Syntax.Name
inputObjectTypeDefinitionSequence2Name x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2WithDescription :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence2 -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2WithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          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.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2WithDirectives :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence2 -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2WithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2WithName :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence2 -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence2
inputObjectTypeDefinitionSequence2WithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceDescription :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Description)
inputObjectTypeDefinitionSequenceDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceDirectives :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Directives)
inputObjectTypeDefinitionSequenceDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the InputFieldsDefinition field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceInputFieldsDefinition :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence -> Typed.TypedTerm Syntax.InputFieldsDefinition
inputObjectTypeDefinitionSequenceInputFieldsDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "InputFieldsDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceInputObjectTypeDefinitionSequence :: Typed.TypedName Syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceInputObjectTypeDefinitionSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceName :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence -> Typed.TypedTerm Syntax.Name
inputObjectTypeDefinitionSequenceName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceWithDescription :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          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.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "InputFieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "InputFieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceWithDirectives :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "InputFieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "InputFieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the InputFieldsDefinition field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceWithInputFieldsDefinition :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence -> Typed.TypedTerm Syntax.InputFieldsDefinition -> Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceWithInputFieldsDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "InputFieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceWithName :: Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.InputObjectTypeDefinitionSequence
inputObjectTypeDefinitionSequenceWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "InputFieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "InputFieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL name token for hydra.ext.graphql.syntax.InputObjectTypeExtension
inputObjectTypeExtensionInputObjectTypeExtension :: Typed.TypedName Syntax.InputObjectTypeExtension
inputObjectTypeExtensionInputObjectTypeExtension =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtension")

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.InputObjectTypeExtension
inputObjectTypeExtensionSeq :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence -> Typed.TypedTerm Syntax.InputObjectTypeExtension
inputObjectTypeExtensionSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq2 variant of hydra.ext.graphql.syntax.InputObjectTypeExtension
inputObjectTypeExtensionSeq2 :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence2 -> Typed.TypedTerm Syntax.InputObjectTypeExtension
inputObjectTypeExtensionSeq2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequence :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InputFieldsDefinition -> Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequence name directives inputFieldsDefinition =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "InputFieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm inputFieldsDefinition)}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2
inputObjectTypeExtensionSequence2 :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence2
inputObjectTypeExtensionSequence2 name directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2
inputObjectTypeExtensionSequence2Directives :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Directives
inputObjectTypeExtensionSequence2Directives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2
inputObjectTypeExtensionSequence2InputObjectTypeExtensionSequence2 :: Typed.TypedName Syntax.InputObjectTypeExtensionSequence2
inputObjectTypeExtensionSequence2InputObjectTypeExtensionSequence2 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2
inputObjectTypeExtensionSequence2Name :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Name
inputObjectTypeExtensionSequence2Name x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2
inputObjectTypeExtensionSequence2WithDirectives :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence2
inputObjectTypeExtensionSequence2WithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2"),
      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.ext.graphql.syntax.InputObjectTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2
inputObjectTypeExtensionSequence2WithName :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence2
inputObjectTypeExtensionSequence2WithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequenceDirectives :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives)
inputObjectTypeExtensionSequenceDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the InputFieldsDefinition field of hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequenceInputFieldsDefinition :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence -> Typed.TypedTerm Syntax.InputFieldsDefinition
inputObjectTypeExtensionSequenceInputFieldsDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "InputFieldsDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequenceInputObjectTypeExtensionSequence :: Typed.TypedName Syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequenceInputObjectTypeExtensionSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequenceName :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence -> Typed.TypedTerm Syntax.Name
inputObjectTypeExtensionSequenceName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequenceWithDirectives :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequenceWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
      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.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "InputFieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "InputFieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the InputFieldsDefinition field of hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequenceWithInputFieldsDefinition :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence -> Typed.TypedTerm Syntax.InputFieldsDefinition -> Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequenceWithInputFieldsDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
      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.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "InputFieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequenceWithName :: Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.InputObjectTypeExtensionSequence
inputObjectTypeExtensionSequenceWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "InputFieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "InputFieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinition :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm (Maybe Syntax.DefaultValue) -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InputValueDefinition
inputValueDefinition description name type_ defaultValue directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Type"),
          Model.fieldTerm = (Typed.unTypedTerm type_)},
        Model.Field {
          Model.fieldName = (Model.Name "DefaultValue"),
          Model.fieldTerm = (Typed.unTypedTerm defaultValue)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the DefaultValue field of hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinitionDefaultValue :: Typed.TypedTerm Syntax.InputValueDefinition -> Typed.TypedTerm (Maybe Syntax.DefaultValue)
inputValueDefinitionDefaultValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
        Model.projectionFieldName = (Model.Name "DefaultValue")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinitionDescription :: Typed.TypedTerm Syntax.InputValueDefinition -> Typed.TypedTerm (Maybe Syntax.Description)
inputValueDefinitionDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinitionDirectives :: Typed.TypedTerm Syntax.InputValueDefinition -> Typed.TypedTerm (Maybe Syntax.Directives)
inputValueDefinitionDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinitionInputValueDefinition :: Typed.TypedName Syntax.InputValueDefinition
inputValueDefinitionInputValueDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinitionName :: Typed.TypedTerm Syntax.InputValueDefinition -> Typed.TypedTerm Syntax.Name
inputValueDefinitionName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Type field of hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinitionType :: Typed.TypedTerm Syntax.InputValueDefinition -> Typed.TypedTerm Syntax.Type
inputValueDefinitionType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
        Model.projectionFieldName = (Model.Name "Type")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the DefaultValue field of hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinitionWithDefaultValue :: Typed.TypedTerm Syntax.InputValueDefinition -> Typed.TypedTerm (Maybe Syntax.DefaultValue) -> Typed.TypedTerm Syntax.InputValueDefinition
inputValueDefinitionWithDefaultValue original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            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.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DefaultValue"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinitionWithDescription :: Typed.TypedTerm Syntax.InputValueDefinition -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.InputValueDefinition
inputValueDefinitionWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          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.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            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.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DefaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "DefaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinitionWithDirectives :: Typed.TypedTerm Syntax.InputValueDefinition -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InputValueDefinition
inputValueDefinitionWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            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.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DefaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "DefaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinitionWithName :: Typed.TypedTerm Syntax.InputValueDefinition -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.InputValueDefinition
inputValueDefinitionWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          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.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DefaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "DefaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Type field of hydra.ext.graphql.syntax.InputValueDefinition
inputValueDefinitionWithType :: Typed.TypedTerm Syntax.InputValueDefinition -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.InputValueDefinition
inputValueDefinitionWithType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Type"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "DefaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "DefaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InputValueDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for the hydra.ext.graphql.syntax.IntValue wrapper
intValue :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.IntValue
intValue x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.IntValue"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.IntValue
intValueIntValue :: Typed.TypedName Syntax.IntValue
intValueIntValue = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.IntValue")

-- | DSL name token for hydra.ext.graphql.syntax.InterfaceTypeDefinition
interfaceTypeDefinitionInterfaceTypeDefinition :: Typed.TypedName Syntax.InterfaceTypeDefinition
interfaceTypeDefinitionInterfaceTypeDefinition =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinition")

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.InterfaceTypeDefinition
interfaceTypeDefinitionSeq :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence -> Typed.TypedTerm Syntax.InterfaceTypeDefinition
interfaceTypeDefinitionSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq2 variant of hydra.ext.graphql.syntax.InterfaceTypeDefinition
interfaceTypeDefinitionSeq2 :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2 -> Typed.TypedTerm Syntax.InterfaceTypeDefinition
interfaceTypeDefinitionSeq2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequence :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.FieldsDefinition -> Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequence description name implementsInterfaces directives fieldsDefinition =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm implementsInterfaces)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm fieldsDefinition)}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2 :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ImplementsInterfaces -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2 description name implementsInterfaces directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm implementsInterfaces)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2Description :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2 -> Typed.TypedTerm (Maybe Syntax.Description)
interfaceTypeDefinitionSequence2Description x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2Directives :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2 -> Typed.TypedTerm (Maybe Syntax.Directives)
interfaceTypeDefinitionSequence2Directives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the ImplementsInterfaces field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2ImplementsInterfaces :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2 -> Typed.TypedTerm Syntax.ImplementsInterfaces
interfaceTypeDefinitionSequence2ImplementsInterfaces x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
        Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2InterfaceTypeDefinitionSequence2 :: Typed.TypedName Syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2InterfaceTypeDefinitionSequence2 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2Name :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2 -> Typed.TypedTerm Syntax.Name
interfaceTypeDefinitionSequence2Name x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2WithDescription :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2 -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2WithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          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.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2WithDirectives :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2 -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2WithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the ImplementsInterfaces field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2WithImplementsInterfaces :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2 -> Typed.TypedTerm Syntax.ImplementsInterfaces -> Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2WithImplementsInterfaces original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2WithName :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2 -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence2
interfaceTypeDefinitionSequence2WithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceDescription :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Description)
interfaceTypeDefinitionSequenceDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceDirectives :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Directives)
interfaceTypeDefinitionSequenceDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the FieldsDefinition field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceFieldsDefinition :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence -> Typed.TypedTerm Syntax.FieldsDefinition
interfaceTypeDefinitionSequenceFieldsDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the ImplementsInterfaces field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceImplementsInterfaces :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces)
interfaceTypeDefinitionSequenceImplementsInterfaces x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceInterfaceTypeDefinitionSequence :: Typed.TypedName Syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceInterfaceTypeDefinitionSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceName :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence -> Typed.TypedTerm Syntax.Name
interfaceTypeDefinitionSequenceName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceWithDescription :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          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.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceWithDirectives :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the FieldsDefinition field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceWithFieldsDefinition :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence -> Typed.TypedTerm Syntax.FieldsDefinition -> Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceWithFieldsDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the ImplementsInterfaces field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceWithImplementsInterfaces :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceWithImplementsInterfaces original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceWithName :: Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.InterfaceTypeDefinitionSequence
interfaceTypeDefinitionSequenceWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL name token for hydra.ext.graphql.syntax.InterfaceTypeExtension
interfaceTypeExtensionInterfaceTypeExtension :: Typed.TypedName Syntax.InterfaceTypeExtension
interfaceTypeExtensionInterfaceTypeExtension =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtension")

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.InterfaceTypeExtension
interfaceTypeExtensionSeq :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence -> Typed.TypedTerm Syntax.InterfaceTypeExtension
interfaceTypeExtensionSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq2 variant of hydra.ext.graphql.syntax.InterfaceTypeExtension
interfaceTypeExtensionSeq2 :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence2 -> Typed.TypedTerm Syntax.InterfaceTypeExtension
interfaceTypeExtensionSeq2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq3 variant of hydra.ext.graphql.syntax.InterfaceTypeExtension
interfaceTypeExtensionSeq3 :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence3 -> Typed.TypedTerm Syntax.InterfaceTypeExtension
interfaceTypeExtensionSeq3 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq3"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequence :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.FieldsDefinition -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequence name implementsInterfaces directives fieldsDefinition =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm implementsInterfaces)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm fieldsDefinition)}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2 :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2 name implementsInterfaces directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm implementsInterfaces)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2Directives :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Directives
interfaceTypeExtensionSequence2Directives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the ImplementsInterfaces field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2ImplementsInterfaces :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence2 -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces)
interfaceTypeExtensionSequence2ImplementsInterfaces x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2InterfaceTypeExtensionSequence2 :: Typed.TypedName Syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2InterfaceTypeExtensionSequence2 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2Name :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Name
interfaceTypeExtensionSequence2Name x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2WithDirectives :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2WithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
      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.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the ImplementsInterfaces field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2WithImplementsInterfaces :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence2 -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2WithImplementsInterfaces original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
      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.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2WithName :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence2
interfaceTypeExtensionSequence2WithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3
interfaceTypeExtensionSequence3 :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ImplementsInterfaces -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence3
interfaceTypeExtensionSequence3 name implementsInterfaces =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm implementsInterfaces)}]}))

-- | DSL accessor for the ImplementsInterfaces field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3
interfaceTypeExtensionSequence3ImplementsInterfaces :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence3 -> Typed.TypedTerm Syntax.ImplementsInterfaces
interfaceTypeExtensionSequence3ImplementsInterfaces x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3"),
        Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3
interfaceTypeExtensionSequence3InterfaceTypeExtensionSequence3 :: Typed.TypedName Syntax.InterfaceTypeExtensionSequence3
interfaceTypeExtensionSequence3InterfaceTypeExtensionSequence3 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3
interfaceTypeExtensionSequence3Name :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence3 -> Typed.TypedTerm Syntax.Name
interfaceTypeExtensionSequence3Name x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the ImplementsInterfaces field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3
interfaceTypeExtensionSequence3WithImplementsInterfaces :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence3 -> Typed.TypedTerm Syntax.ImplementsInterfaces -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence3
interfaceTypeExtensionSequence3WithImplementsInterfaces original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3"),
      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.ext.graphql.syntax.InterfaceTypeExtensionSequence3"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3
interfaceTypeExtensionSequence3WithName :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence3 -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence3
interfaceTypeExtensionSequence3WithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence3"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceDirectives :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives)
interfaceTypeExtensionSequenceDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the FieldsDefinition field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceFieldsDefinition :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence -> Typed.TypedTerm Syntax.FieldsDefinition
interfaceTypeExtensionSequenceFieldsDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the ImplementsInterfaces field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceImplementsInterfaces :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces)
interfaceTypeExtensionSequenceImplementsInterfaces x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceInterfaceTypeExtensionSequence :: Typed.TypedName Syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceInterfaceTypeExtensionSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence")

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceName :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence -> Typed.TypedTerm Syntax.Name
interfaceTypeExtensionSequenceName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceWithDirectives :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
      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.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the FieldsDefinition field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceWithFieldsDefinition :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence -> Typed.TypedTerm Syntax.FieldsDefinition -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceWithFieldsDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
      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.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the ImplementsInterfaces field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceWithImplementsInterfaces :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceWithImplementsInterfaces original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
      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.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceWithName :: Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.InterfaceTypeExtensionSequence
interfaceTypeExtensionSequenceWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.InterfaceTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for the hydra.ext.graphql.syntax.ListType wrapper
listType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.ListType
listType x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.ListType"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ListType
listTypeListType :: Typed.TypedName Syntax.ListType
listTypeListType = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ListType")

-- | DSL name token for hydra.ext.graphql.syntax.ListValue
listValueListValue :: Typed.TypedName Syntax.ListValue
listValueListValue = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ListValue")

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.ListValue
listValueSeq :: Typed.TypedTerm Syntax.ListValueSequence -> Typed.TypedTerm Syntax.ListValue
listValueSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ListValue"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the sequence2 variant of hydra.ext.graphql.syntax.ListValue
listValueSequence2 :: Typed.TypedTerm [Syntax.Value] -> Typed.TypedTerm Syntax.ListValue
listValueSequence2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ListValue"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "sequence2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for the hydra.ext.graphql.syntax.Name wrapper
name :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Name
name x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.Name"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.Name
nameName :: Typed.TypedName Syntax.Name
nameName = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Name")

-- | DSL constructor for the hydra.ext.graphql.syntax.NamedType wrapper
namedType :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.NamedType
namedType x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.NamedType"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.NamedType
namedTypeNamedType :: Typed.TypedName Syntax.NamedType
namedTypeNamedType = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.NamedType")

-- | DSL injection for the list variant of hydra.ext.graphql.syntax.NonNullType
nonNullTypeList :: Typed.TypedTerm Syntax.ListType -> Typed.TypedTerm Syntax.NonNullType
nonNullTypeList x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.NonNullType"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "list"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the named variant of hydra.ext.graphql.syntax.NonNullType
nonNullTypeNamed :: Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.NonNullType
nonNullTypeNamed x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.NonNullType"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "named"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL name token for hydra.ext.graphql.syntax.NonNullType
nonNullTypeNonNullType :: Typed.TypedName Syntax.NonNullType
nonNullTypeNonNullType = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.NonNullType")

-- | DSL constructor for the hydra.ext.graphql.syntax.NullValue wrapper
nullValue :: Typed.TypedTerm () -> Typed.TypedTerm Syntax.NullValue
nullValue x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.NullValue"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.NullValue
nullValueNullValue :: Typed.TypedName Syntax.NullValue
nullValueNullValue = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.NullValue")

-- | DSL constructor for hydra.ext.graphql.syntax.ObjectField
objectField :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Value -> Typed.TypedTerm Syntax.ObjectField
objectField name value =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectField"),
      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 accessor for the Name field of hydra.ext.graphql.syntax.ObjectField
objectFieldName :: Typed.TypedTerm Syntax.ObjectField -> Typed.TypedTerm Syntax.Name
objectFieldName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectField"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ObjectField
objectFieldObjectField :: Typed.TypedName Syntax.ObjectField
objectFieldObjectField = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ObjectField")

-- | DSL accessor for the Value field of hydra.ext.graphql.syntax.ObjectField
objectFieldValue :: Typed.TypedTerm Syntax.ObjectField -> Typed.TypedTerm Syntax.Value
objectFieldValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectField"),
        Model.projectionFieldName = (Model.Name "Value")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.ObjectField
objectFieldWithName :: Typed.TypedTerm Syntax.ObjectField -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ObjectField
objectFieldWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectField"),
      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.ext.graphql.syntax.ObjectField"),
              Model.projectionFieldName = (Model.Name "Value")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Value field of hydra.ext.graphql.syntax.ObjectField
objectFieldWithValue :: Typed.TypedTerm Syntax.ObjectField -> Typed.TypedTerm Syntax.Value -> Typed.TypedTerm Syntax.ObjectField
objectFieldWithValue original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectField"),
      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.ext.graphql.syntax.ObjectField"),
              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.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinition :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm (Maybe Syntax.FieldsDefinition) -> Typed.TypedTerm Syntax.ObjectTypeDefinition
objectTypeDefinition description name implementsInterfaces directives fieldsDefinition =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm implementsInterfaces)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm fieldsDefinition)}]}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinitionDescription :: Typed.TypedTerm Syntax.ObjectTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Description)
objectTypeDefinitionDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinitionDirectives :: Typed.TypedTerm Syntax.ObjectTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Directives)
objectTypeDefinitionDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the FieldsDefinition field of hydra.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinitionFieldsDefinition :: Typed.TypedTerm Syntax.ObjectTypeDefinition -> Typed.TypedTerm (Maybe Syntax.FieldsDefinition)
objectTypeDefinitionFieldsDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
        Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the ImplementsInterfaces field of hydra.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinitionImplementsInterfaces :: Typed.TypedTerm Syntax.ObjectTypeDefinition -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces)
objectTypeDefinitionImplementsInterfaces x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
        Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinitionName :: Typed.TypedTerm Syntax.ObjectTypeDefinition -> Typed.TypedTerm Syntax.Name
objectTypeDefinitionName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinitionObjectTypeDefinition :: Typed.TypedName Syntax.ObjectTypeDefinition
objectTypeDefinitionObjectTypeDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition")

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinitionWithDescription :: Typed.TypedTerm Syntax.ObjectTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.ObjectTypeDefinition
objectTypeDefinitionWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          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.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinitionWithDirectives :: Typed.TypedTerm Syntax.ObjectTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.ObjectTypeDefinition
objectTypeDefinitionWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the FieldsDefinition field of hydra.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinitionWithFieldsDefinition :: Typed.TypedTerm Syntax.ObjectTypeDefinition -> Typed.TypedTerm (Maybe Syntax.FieldsDefinition) -> Typed.TypedTerm Syntax.ObjectTypeDefinition
objectTypeDefinitionWithFieldsDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the ImplementsInterfaces field of hydra.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinitionWithImplementsInterfaces :: Typed.TypedTerm Syntax.ObjectTypeDefinition -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm Syntax.ObjectTypeDefinition
objectTypeDefinitionWithImplementsInterfaces original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.ObjectTypeDefinition
objectTypeDefinitionWithName :: Typed.TypedTerm Syntax.ObjectTypeDefinition -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ObjectTypeDefinition
objectTypeDefinitionWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeDefinition"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL name token for hydra.ext.graphql.syntax.ObjectTypeExtension
objectTypeExtensionObjectTypeExtension :: Typed.TypedName Syntax.ObjectTypeExtension
objectTypeExtensionObjectTypeExtension = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtension")

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.ObjectTypeExtension
objectTypeExtensionSeq :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence -> Typed.TypedTerm Syntax.ObjectTypeExtension
objectTypeExtensionSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq2 variant of hydra.ext.graphql.syntax.ObjectTypeExtension
objectTypeExtensionSeq2 :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence2 -> Typed.TypedTerm Syntax.ObjectTypeExtension
objectTypeExtensionSeq2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq3 variant of hydra.ext.graphql.syntax.ObjectTypeExtension
objectTypeExtensionSeq3 :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence3 -> Typed.TypedTerm Syntax.ObjectTypeExtension
objectTypeExtensionSeq3 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq3"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequence :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.FieldsDefinition -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequence name implementsInterfaces directives fieldsDefinition =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm implementsInterfaces)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm fieldsDefinition)}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2 :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2 name implementsInterfaces directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm implementsInterfaces)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2Directives :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence2 -> Typed.TypedTerm (Maybe Syntax.Directives)
objectTypeExtensionSequence2Directives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the ImplementsInterfaces field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2ImplementsInterfaces :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence2 -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces)
objectTypeExtensionSequence2ImplementsInterfaces x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2Name :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Name
objectTypeExtensionSequence2Name x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2ObjectTypeExtensionSequence2 :: Typed.TypedName Syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2ObjectTypeExtensionSequence2 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2")

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2WithDirectives :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence2 -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2WithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
      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.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the ImplementsInterfaces field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2WithImplementsInterfaces :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence2 -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2WithImplementsInterfaces original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
      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.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2WithName :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence2
objectTypeExtensionSequence2WithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3
objectTypeExtensionSequence3 :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ImplementsInterfaces -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence3
objectTypeExtensionSequence3 name implementsInterfaces =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm implementsInterfaces)}]}))

-- | DSL accessor for the ImplementsInterfaces field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3
objectTypeExtensionSequence3ImplementsInterfaces :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence3 -> Typed.TypedTerm Syntax.ImplementsInterfaces
objectTypeExtensionSequence3ImplementsInterfaces x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3"),
        Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3
objectTypeExtensionSequence3Name :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence3 -> Typed.TypedTerm Syntax.Name
objectTypeExtensionSequence3Name x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3
objectTypeExtensionSequence3ObjectTypeExtensionSequence3 :: Typed.TypedName Syntax.ObjectTypeExtensionSequence3
objectTypeExtensionSequence3ObjectTypeExtensionSequence3 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3")

-- | DSL updater for the ImplementsInterfaces field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3
objectTypeExtensionSequence3WithImplementsInterfaces :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence3 -> Typed.TypedTerm Syntax.ImplementsInterfaces -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence3
objectTypeExtensionSequence3WithImplementsInterfaces original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3"),
      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.ext.graphql.syntax.ObjectTypeExtensionSequence3"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3
objectTypeExtensionSequence3WithName :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence3 -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence3
objectTypeExtensionSequence3WithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence3"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceDirectives :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives)
objectTypeExtensionSequenceDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the FieldsDefinition field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceFieldsDefinition :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence -> Typed.TypedTerm Syntax.FieldsDefinition
objectTypeExtensionSequenceFieldsDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the ImplementsInterfaces field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceImplementsInterfaces :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces)
objectTypeExtensionSequenceImplementsInterfaces x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceName :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence -> Typed.TypedTerm Syntax.Name
objectTypeExtensionSequenceName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceObjectTypeExtensionSequence :: Typed.TypedName Syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceObjectTypeExtensionSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence")

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceWithDirectives :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
      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.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the FieldsDefinition field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceWithFieldsDefinition :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence -> Typed.TypedTerm Syntax.FieldsDefinition -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceWithFieldsDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
      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.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the ImplementsInterfaces field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceWithImplementsInterfaces :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.ImplementsInterfaces) -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceWithImplementsInterfaces original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
      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.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceWithName :: Typed.TypedTerm Syntax.ObjectTypeExtensionSequence -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ObjectTypeExtensionSequence
objectTypeExtensionSequenceWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "ImplementsInterfaces"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "ImplementsInterfaces")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "FieldsDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "FieldsDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL name token for hydra.ext.graphql.syntax.ObjectValue
objectValueObjectValue :: Typed.TypedName Syntax.ObjectValue
objectValueObjectValue = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ObjectValue")

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.ObjectValue
objectValueSeq :: Typed.TypedTerm Syntax.ObjectValueSequence -> Typed.TypedTerm Syntax.ObjectValue
objectValueSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectValue"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the sequence2 variant of hydra.ext.graphql.syntax.ObjectValue
objectValueSequence2 :: Typed.TypedTerm [Syntax.ObjectField] -> Typed.TypedTerm Syntax.ObjectValue
objectValueSequence2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ObjectValue"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "sequence2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL name token for hydra.ext.graphql.syntax.OperationDefinition
operationDefinitionOperationDefinition :: Typed.TypedName Syntax.OperationDefinition
operationDefinitionOperationDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.OperationDefinition")

-- | DSL injection for the SelectionSet variant of hydra.ext.graphql.syntax.OperationDefinition
operationDefinitionSelectionSet :: Typed.TypedTerm Syntax.SelectionSet -> Typed.TypedTerm Syntax.OperationDefinition
operationDefinitionSelectionSet x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "SelectionSet"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.OperationDefinition
operationDefinitionSeq :: Typed.TypedTerm Syntax.OperationDefinitionSequence -> Typed.TypedTerm Syntax.OperationDefinition
operationDefinitionSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequence :: Typed.TypedTerm Syntax.OperationType -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm (Maybe Syntax.VariablesDefinition) -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.SelectionSet -> Typed.TypedTerm Syntax.OperationDefinitionSequence
operationDefinitionSequence operationType name variablesDefinition directives selectionSet =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "OperationType"),
          Model.fieldTerm = (Typed.unTypedTerm operationType)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "VariablesDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm variablesDefinition)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Typed.unTypedTerm selectionSet)}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequenceDirectives :: Typed.TypedTerm Syntax.OperationDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Directives)
operationDefinitionSequenceDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequenceName :: Typed.TypedTerm Syntax.OperationDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Name)
operationDefinitionSequenceName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequenceOperationDefinitionSequence :: Typed.TypedName Syntax.OperationDefinitionSequence
operationDefinitionSequenceOperationDefinitionSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence")

-- | DSL accessor for the OperationType field of hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequenceOperationType :: Typed.TypedTerm Syntax.OperationDefinitionSequence -> Typed.TypedTerm Syntax.OperationType
operationDefinitionSequenceOperationType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "OperationType")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the SelectionSet field of hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequenceSelectionSet :: Typed.TypedTerm Syntax.OperationDefinitionSequence -> Typed.TypedTerm Syntax.SelectionSet
operationDefinitionSequenceSelectionSet x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "SelectionSet")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the VariablesDefinition field of hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequenceVariablesDefinition :: Typed.TypedTerm Syntax.OperationDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.VariablesDefinition)
operationDefinitionSequenceVariablesDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
        Model.projectionFieldName = (Model.Name "VariablesDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequenceWithDirectives :: Typed.TypedTerm Syntax.OperationDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.OperationDefinitionSequence
operationDefinitionSequenceWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "OperationType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "OperationType")})),
            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.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "VariablesDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "VariablesDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequenceWithName :: Typed.TypedTerm Syntax.OperationDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.Name) -> Typed.TypedTerm Syntax.OperationDefinitionSequence
operationDefinitionSequenceWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "OperationType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "OperationType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "VariablesDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "VariablesDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the OperationType field of hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequenceWithOperationType :: Typed.TypedTerm Syntax.OperationDefinitionSequence -> Typed.TypedTerm Syntax.OperationType -> Typed.TypedTerm Syntax.OperationDefinitionSequence
operationDefinitionSequenceWithOperationType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "OperationType"),
          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.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "VariablesDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "VariablesDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the SelectionSet field of hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequenceWithSelectionSet :: Typed.TypedTerm Syntax.OperationDefinitionSequence -> Typed.TypedTerm Syntax.SelectionSet -> Typed.TypedTerm Syntax.OperationDefinitionSequence
operationDefinitionSequenceWithSelectionSet original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "OperationType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "OperationType")})),
            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.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "VariablesDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "VariablesDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the VariablesDefinition field of hydra.ext.graphql.syntax.OperationDefinitionSequence
operationDefinitionSequenceWithVariablesDefinition :: Typed.TypedTerm Syntax.OperationDefinitionSequence -> Typed.TypedTerm (Maybe Syntax.VariablesDefinition) -> Typed.TypedTerm Syntax.OperationDefinitionSequence
operationDefinitionSequenceWithVariablesDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "OperationType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "OperationType")})),
            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.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "VariablesDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "SelectionSet"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationDefinitionSequence"),
              Model.projectionFieldName = (Model.Name "SelectionSet")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL injection for the Mutation variant of hydra.ext.graphql.syntax.OperationType
operationTypeMutation :: Typed.TypedTerm Syntax.OperationType
operationTypeMutation =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationType"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "Mutation"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL name token for hydra.ext.graphql.syntax.OperationType
operationTypeOperationType :: Typed.TypedName Syntax.OperationType
operationTypeOperationType = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.OperationType")

-- | DSL injection for the Query variant of hydra.ext.graphql.syntax.OperationType
operationTypeQuery :: Typed.TypedTerm Syntax.OperationType
operationTypeQuery =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationType"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "Query"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the Subscription variant of hydra.ext.graphql.syntax.OperationType
operationTypeSubscription :: Typed.TypedTerm Syntax.OperationType
operationTypeSubscription =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.OperationType"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "Subscription"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL constructor for hydra.ext.graphql.syntax.RootOperationTypeDefinition
rootOperationTypeDefinition :: Typed.TypedTerm Syntax.OperationType -> Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.RootOperationTypeDefinition
rootOperationTypeDefinition operationType namedType =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.RootOperationTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "OperationType"),
          Model.fieldTerm = (Typed.unTypedTerm operationType)},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Typed.unTypedTerm namedType)}]}))

-- | DSL accessor for the NamedType field of hydra.ext.graphql.syntax.RootOperationTypeDefinition
rootOperationTypeDefinitionNamedType :: Typed.TypedTerm Syntax.RootOperationTypeDefinition -> Typed.TypedTerm Syntax.NamedType
rootOperationTypeDefinitionNamedType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.RootOperationTypeDefinition"),
        Model.projectionFieldName = (Model.Name "NamedType")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the OperationType field of hydra.ext.graphql.syntax.RootOperationTypeDefinition
rootOperationTypeDefinitionOperationType :: Typed.TypedTerm Syntax.RootOperationTypeDefinition -> Typed.TypedTerm Syntax.OperationType
rootOperationTypeDefinitionOperationType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.RootOperationTypeDefinition"),
        Model.projectionFieldName = (Model.Name "OperationType")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.RootOperationTypeDefinition
rootOperationTypeDefinitionRootOperationTypeDefinition :: Typed.TypedName Syntax.RootOperationTypeDefinition
rootOperationTypeDefinitionRootOperationTypeDefinition =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.RootOperationTypeDefinition")

-- | DSL updater for the NamedType field of hydra.ext.graphql.syntax.RootOperationTypeDefinition
rootOperationTypeDefinitionWithNamedType :: Typed.TypedTerm Syntax.RootOperationTypeDefinition -> Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.RootOperationTypeDefinition
rootOperationTypeDefinitionWithNamedType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.RootOperationTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "OperationType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.RootOperationTypeDefinition"),
              Model.projectionFieldName = (Model.Name "OperationType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the OperationType field of hydra.ext.graphql.syntax.RootOperationTypeDefinition
rootOperationTypeDefinitionWithOperationType :: Typed.TypedTerm Syntax.RootOperationTypeDefinition -> Typed.TypedTerm Syntax.OperationType -> Typed.TypedTerm Syntax.RootOperationTypeDefinition
rootOperationTypeDefinitionWithOperationType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.RootOperationTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "OperationType"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.RootOperationTypeDefinition"),
              Model.projectionFieldName = (Model.Name "NamedType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.ScalarTypeDefinition
scalarTypeDefinition :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.ScalarTypeDefinition
scalarTypeDefinition description name directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.ScalarTypeDefinition
scalarTypeDefinitionDescription :: Typed.TypedTerm Syntax.ScalarTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Description)
scalarTypeDefinitionDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.ScalarTypeDefinition
scalarTypeDefinitionDirectives :: Typed.TypedTerm Syntax.ScalarTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Directives)
scalarTypeDefinitionDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.ScalarTypeDefinition
scalarTypeDefinitionName :: Typed.TypedTerm Syntax.ScalarTypeDefinition -> Typed.TypedTerm Syntax.Name
scalarTypeDefinitionName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ScalarTypeDefinition
scalarTypeDefinitionScalarTypeDefinition :: Typed.TypedName Syntax.ScalarTypeDefinition
scalarTypeDefinitionScalarTypeDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition")

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.ScalarTypeDefinition
scalarTypeDefinitionWithDescription :: Typed.TypedTerm Syntax.ScalarTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.ScalarTypeDefinition
scalarTypeDefinitionWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          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.ext.graphql.syntax.ScalarTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.ScalarTypeDefinition
scalarTypeDefinitionWithDirectives :: Typed.TypedTerm Syntax.ScalarTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.ScalarTypeDefinition
scalarTypeDefinitionWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.ScalarTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.ScalarTypeDefinition
scalarTypeDefinitionWithName :: Typed.TypedTerm Syntax.ScalarTypeDefinition -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ScalarTypeDefinition
scalarTypeDefinitionWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.ScalarTypeExtension
scalarTypeExtension :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm Syntax.ScalarTypeExtension
scalarTypeExtension name directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeExtension"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.ScalarTypeExtension
scalarTypeExtensionDirectives :: Typed.TypedTerm Syntax.ScalarTypeExtension -> Typed.TypedTerm Syntax.Directives
scalarTypeExtensionDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeExtension"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.ScalarTypeExtension
scalarTypeExtensionName :: Typed.TypedTerm Syntax.ScalarTypeExtension -> Typed.TypedTerm Syntax.Name
scalarTypeExtensionName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeExtension"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.ScalarTypeExtension
scalarTypeExtensionScalarTypeExtension :: Typed.TypedName Syntax.ScalarTypeExtension
scalarTypeExtensionScalarTypeExtension = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.ScalarTypeExtension")

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.ScalarTypeExtension
scalarTypeExtensionWithDirectives :: Typed.TypedTerm Syntax.ScalarTypeExtension -> Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm Syntax.ScalarTypeExtension
scalarTypeExtensionWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeExtension"),
      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.ext.graphql.syntax.ScalarTypeExtension"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.ScalarTypeExtension
scalarTypeExtensionWithName :: Typed.TypedTerm Syntax.ScalarTypeExtension -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.ScalarTypeExtension
scalarTypeExtensionWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeExtension"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.ScalarTypeExtension"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.SchemaDefinition
schemaDefinition :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.RootOperationTypeDefinition -> Typed.TypedTerm Syntax.SchemaDefinition
schemaDefinition description directives rootOperationTypeDefinition =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "RootOperationTypeDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm rootOperationTypeDefinition)}]}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.SchemaDefinition
schemaDefinitionDescription :: Typed.TypedTerm Syntax.SchemaDefinition -> Typed.TypedTerm (Maybe Syntax.Description)
schemaDefinitionDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.SchemaDefinition
schemaDefinitionDirectives :: Typed.TypedTerm Syntax.SchemaDefinition -> Typed.TypedTerm (Maybe Syntax.Directives)
schemaDefinitionDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the RootOperationTypeDefinition field of hydra.ext.graphql.syntax.SchemaDefinition
schemaDefinitionRootOperationTypeDefinition :: Typed.TypedTerm Syntax.SchemaDefinition -> Typed.TypedTerm Syntax.RootOperationTypeDefinition
schemaDefinitionRootOperationTypeDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
        Model.projectionFieldName = (Model.Name "RootOperationTypeDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.SchemaDefinition
schemaDefinitionSchemaDefinition :: Typed.TypedName Syntax.SchemaDefinition
schemaDefinitionSchemaDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition")

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.SchemaDefinition
schemaDefinitionWithDescription :: Typed.TypedTerm Syntax.SchemaDefinition -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.SchemaDefinition
schemaDefinitionWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "RootOperationTypeDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
              Model.projectionFieldName = (Model.Name "RootOperationTypeDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.SchemaDefinition
schemaDefinitionWithDirectives :: Typed.TypedTerm Syntax.SchemaDefinition -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.SchemaDefinition
schemaDefinitionWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "RootOperationTypeDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
              Model.projectionFieldName = (Model.Name "RootOperationTypeDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the RootOperationTypeDefinition field of hydra.ext.graphql.syntax.SchemaDefinition
schemaDefinitionWithRootOperationTypeDefinition :: Typed.TypedTerm Syntax.SchemaDefinition -> Typed.TypedTerm Syntax.RootOperationTypeDefinition -> Typed.TypedTerm Syntax.SchemaDefinition
schemaDefinitionWithRootOperationTypeDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "RootOperationTypeDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL name token for hydra.ext.graphql.syntax.SchemaExtension
schemaExtensionSchemaExtension :: Typed.TypedName Syntax.SchemaExtension
schemaExtensionSchemaExtension = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.SchemaExtension")

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.SchemaExtension
schemaExtensionSeq :: Typed.TypedTerm Syntax.SchemaExtensionSequence -> Typed.TypedTerm Syntax.SchemaExtension
schemaExtensionSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.SchemaExtensionSequence
schemaExtensionSequence :: Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.RootOperationTypeDefinition -> Typed.TypedTerm Syntax.SchemaExtensionSequence
schemaExtensionSequence directives rootOperationTypeDefinition =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "RootOperationTypeDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm rootOperationTypeDefinition)}]}))

-- | DSL injection for the sequence2 variant of hydra.ext.graphql.syntax.SchemaExtension
schemaExtensionSequence2 :: Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm Syntax.SchemaExtension
schemaExtensionSequence2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "sequence2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.SchemaExtensionSequence
schemaExtensionSequenceDirectives :: Typed.TypedTerm Syntax.SchemaExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives)
schemaExtensionSequenceDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaExtensionSequence"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the RootOperationTypeDefinition field of hydra.ext.graphql.syntax.SchemaExtensionSequence
schemaExtensionSequenceRootOperationTypeDefinition :: Typed.TypedTerm Syntax.SchemaExtensionSequence -> Typed.TypedTerm Syntax.RootOperationTypeDefinition
schemaExtensionSequenceRootOperationTypeDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaExtensionSequence"),
        Model.projectionFieldName = (Model.Name "RootOperationTypeDefinition")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.SchemaExtensionSequence
schemaExtensionSequenceSchemaExtensionSequence :: Typed.TypedName Syntax.SchemaExtensionSequence
schemaExtensionSequenceSchemaExtensionSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.SchemaExtensionSequence")

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.SchemaExtensionSequence
schemaExtensionSequenceWithDirectives :: Typed.TypedTerm Syntax.SchemaExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.SchemaExtensionSequence
schemaExtensionSequenceWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "RootOperationTypeDefinition"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaExtensionSequence"),
              Model.projectionFieldName = (Model.Name "RootOperationTypeDefinition")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the RootOperationTypeDefinition field of hydra.ext.graphql.syntax.SchemaExtensionSequence
schemaExtensionSequenceWithRootOperationTypeDefinition :: Typed.TypedTerm Syntax.SchemaExtensionSequence -> Typed.TypedTerm Syntax.RootOperationTypeDefinition -> Typed.TypedTerm Syntax.SchemaExtensionSequence
schemaExtensionSequenceWithRootOperationTypeDefinition original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.SchemaExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "RootOperationTypeDefinition"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL injection for the Field variant of hydra.ext.graphql.syntax.Selection
selectionField :: Typed.TypedTerm Syntax.Field -> Typed.TypedTerm Syntax.Selection
selectionField x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Selection"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "Field"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the FragmentSpread variant of hydra.ext.graphql.syntax.Selection
selectionFragmentSpread :: Typed.TypedTerm Syntax.FragmentSpread -> Typed.TypedTerm Syntax.Selection
selectionFragmentSpread x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Selection"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "FragmentSpread"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the InlineFragment variant of hydra.ext.graphql.syntax.Selection
selectionInlineFragment :: Typed.TypedTerm Syntax.InlineFragment -> Typed.TypedTerm Syntax.Selection
selectionInlineFragment x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Selection"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "InlineFragment"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL name token for hydra.ext.graphql.syntax.Selection
selectionSelection :: Typed.TypedName Syntax.Selection
selectionSelection = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Selection")

-- | DSL constructor for the hydra.ext.graphql.syntax.SelectionSet wrapper
selectionSet :: Typed.TypedTerm [Syntax.Selection] -> Typed.TypedTerm Syntax.SelectionSet
selectionSet x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.SelectionSet"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.SelectionSet
selectionSetSelectionSet :: Typed.TypedName Syntax.SelectionSet
selectionSetSelectionSet = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.SelectionSet")

-- | DSL constructor for the hydra.ext.graphql.syntax.StringValue wrapper
stringValue :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.StringValue
stringValue x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.StringValue"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.StringValue
stringValueStringValue :: Typed.TypedName Syntax.StringValue
stringValueStringValue = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.StringValue")

-- | DSL injection for the NamedType variant of hydra.ext.graphql.syntax.TypeCondition
typeConditionNamedType :: Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.TypeCondition
typeConditionNamedType x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeCondition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "NamedType"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the On variant of hydra.ext.graphql.syntax.TypeCondition
typeConditionOn :: Typed.TypedTerm Syntax.TypeCondition
typeConditionOn =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeCondition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "On"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL name token for hydra.ext.graphql.syntax.TypeCondition
typeConditionTypeCondition :: Typed.TypedName Syntax.TypeCondition
typeConditionTypeCondition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.TypeCondition")

-- | DSL injection for the enum variant of hydra.ext.graphql.syntax.TypeDefinition
typeDefinitionEnum :: Typed.TypedTerm Syntax.EnumTypeDefinition -> Typed.TypedTerm Syntax.TypeDefinition
typeDefinitionEnum x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "enum"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the inputObject variant of hydra.ext.graphql.syntax.TypeDefinition
typeDefinitionInputObject :: Typed.TypedTerm Syntax.InputObjectTypeDefinition -> Typed.TypedTerm Syntax.TypeDefinition
typeDefinitionInputObject x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "inputObject"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the interface variant of hydra.ext.graphql.syntax.TypeDefinition
typeDefinitionInterface :: Typed.TypedTerm Syntax.InterfaceTypeDefinition -> Typed.TypedTerm Syntax.TypeDefinition
typeDefinitionInterface x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "interface"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the object variant of hydra.ext.graphql.syntax.TypeDefinition
typeDefinitionObject :: Typed.TypedTerm Syntax.ObjectTypeDefinition -> Typed.TypedTerm Syntax.TypeDefinition
typeDefinitionObject x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "object"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the scalar variant of hydra.ext.graphql.syntax.TypeDefinition
typeDefinitionScalar :: Typed.TypedTerm Syntax.ScalarTypeDefinition -> Typed.TypedTerm Syntax.TypeDefinition
typeDefinitionScalar x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "scalar"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL name token for hydra.ext.graphql.syntax.TypeDefinition
typeDefinitionTypeDefinition :: Typed.TypedName Syntax.TypeDefinition
typeDefinitionTypeDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.TypeDefinition")

-- | DSL injection for the union variant of hydra.ext.graphql.syntax.TypeDefinition
typeDefinitionUnion :: Typed.TypedTerm Syntax.UnionTypeDefinition -> Typed.TypedTerm Syntax.TypeDefinition
typeDefinitionUnion x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "union"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the enum variant of hydra.ext.graphql.syntax.TypeExtension
typeExtensionEnum :: Typed.TypedTerm Syntax.EnumTypeExtension -> Typed.TypedTerm Syntax.TypeExtension
typeExtensionEnum x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "enum"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the inputObject variant of hydra.ext.graphql.syntax.TypeExtension
typeExtensionInputObject :: Typed.TypedTerm Syntax.InputObjectTypeExtension -> Typed.TypedTerm Syntax.TypeExtension
typeExtensionInputObject x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "inputObject"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the interface variant of hydra.ext.graphql.syntax.TypeExtension
typeExtensionInterface :: Typed.TypedTerm Syntax.InterfaceTypeExtension -> Typed.TypedTerm Syntax.TypeExtension
typeExtensionInterface x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "interface"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the object variant of hydra.ext.graphql.syntax.TypeExtension
typeExtensionObject :: Typed.TypedTerm Syntax.ObjectTypeExtension -> Typed.TypedTerm Syntax.TypeExtension
typeExtensionObject x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "object"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the scalar variant of hydra.ext.graphql.syntax.TypeExtension
typeExtensionScalar :: Typed.TypedTerm Syntax.ScalarTypeExtension -> Typed.TypedTerm Syntax.TypeExtension
typeExtensionScalar x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "scalar"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL name token for hydra.ext.graphql.syntax.TypeExtension
typeExtensionTypeExtension :: Typed.TypedName Syntax.TypeExtension
typeExtensionTypeExtension = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.TypeExtension")

-- | DSL injection for the union variant of hydra.ext.graphql.syntax.TypeExtension
typeExtensionUnion :: Typed.TypedTerm Syntax.UnionTypeExtension -> Typed.TypedTerm Syntax.TypeExtension
typeExtensionUnion x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "union"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the list variant of hydra.ext.graphql.syntax.Type
typeList :: Typed.TypedTerm Syntax.ListType -> Typed.TypedTerm Syntax.Type
typeList x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Type"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "list"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the named variant of hydra.ext.graphql.syntax.Type
typeNamed :: Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.Type
typeNamed x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Type"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "named"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the nonNull variant of hydra.ext.graphql.syntax.Type
typeNonNull :: Typed.TypedTerm Syntax.NonNullType -> Typed.TypedTerm Syntax.Type
typeNonNull x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Type"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "nonNull"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the directive variant of hydra.ext.graphql.syntax.TypeSystemDefinition
typeSystemDefinitionDirective :: Typed.TypedTerm Syntax.DirectiveDefinition -> Typed.TypedTerm Syntax.TypeSystemDefinition
typeSystemDefinitionDirective x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "directive"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the definition variant of hydra.ext.graphql.syntax.TypeSystemDefinitionOrExtension
typeSystemDefinitionOrExtensionDefinition :: Typed.TypedTerm Syntax.TypeSystemDefinition -> Typed.TypedTerm Syntax.TypeSystemDefinitionOrExtension
typeSystemDefinitionOrExtensionDefinition x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDefinitionOrExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "definition"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the extension variant of hydra.ext.graphql.syntax.TypeSystemDefinitionOrExtension
typeSystemDefinitionOrExtensionExtension :: Typed.TypedTerm Syntax.TypeSystemExtension -> Typed.TypedTerm Syntax.TypeSystemDefinitionOrExtension
typeSystemDefinitionOrExtensionExtension x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDefinitionOrExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "extension"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL name token for hydra.ext.graphql.syntax.TypeSystemDefinitionOrExtension
typeSystemDefinitionOrExtensionTypeSystemDefinitionOrExtension :: Typed.TypedName Syntax.TypeSystemDefinitionOrExtension
typeSystemDefinitionOrExtensionTypeSystemDefinitionOrExtension =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.TypeSystemDefinitionOrExtension")

-- | DSL injection for the schema variant of hydra.ext.graphql.syntax.TypeSystemDefinition
typeSystemDefinitionSchema :: Typed.TypedTerm Syntax.SchemaDefinition -> Typed.TypedTerm Syntax.TypeSystemDefinition
typeSystemDefinitionSchema x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "schema"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the type variant of hydra.ext.graphql.syntax.TypeSystemDefinition
typeSystemDefinitionType :: Typed.TypedTerm Syntax.TypeDefinition -> Typed.TypedTerm Syntax.TypeSystemDefinition
typeSystemDefinitionType x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDefinition"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "type"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL name token for hydra.ext.graphql.syntax.TypeSystemDefinition
typeSystemDefinitionTypeSystemDefinition :: Typed.TypedName Syntax.TypeSystemDefinition
typeSystemDefinitionTypeSystemDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.TypeSystemDefinition")

-- | DSL injection for the ARGUMENT_DEFINITION variant of hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationARGUMENT_DEFINITION :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationARGUMENT_DEFINITION =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "ARGUMENT_DEFINITION"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the ENUM variant of hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationENUM :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationENUM =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "ENUM"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the ENUM_VALUE variant of hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationENUM_VALUE :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationENUM_VALUE =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "ENUM_VALUE"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the FIELD_DEFINITION variant of hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationFIELD_DEFINITION :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationFIELD_DEFINITION =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "FIELD_DEFINITION"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the INPUT_FIELD_DEFINITION variant of hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationINPUT_FIELD_DEFINITION :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationINPUT_FIELD_DEFINITION =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "INPUT_FIELD_DEFINITION"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the INPUT_OBJECT variant of hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationINPUT_OBJECT :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationINPUT_OBJECT =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "INPUT_OBJECT"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the INTERFACE variant of hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationINTERFACE :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationINTERFACE =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "INTERFACE"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the OBJECT variant of hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationOBJECT :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationOBJECT =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "OBJECT"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the SCALAR variant of hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationSCALAR :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationSCALAR =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "SCALAR"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the SCHEMA variant of hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationSCHEMA :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationSCHEMA =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "SCHEMA"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL name token for hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationTypeSystemDirectiveLocation :: Typed.TypedName Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationTypeSystemDirectiveLocation =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation")

-- | DSL injection for the UNION variant of hydra.ext.graphql.syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationUNION :: Typed.TypedTerm Syntax.TypeSystemDirectiveLocation
typeSystemDirectiveLocationUNION =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDirectiveLocation"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "UNION"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL constructor for the hydra.ext.graphql.syntax.TypeSystemDocment wrapper
typeSystemDocment :: Typed.TypedTerm [Syntax.TypeSystemDefinition] -> Typed.TypedTerm Syntax.TypeSystemDocment
typeSystemDocment x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemDocment"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.TypeSystemDocment
typeSystemDocmentTypeSystemDocment :: Typed.TypedName Syntax.TypeSystemDocment
typeSystemDocmentTypeSystemDocment = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.TypeSystemDocment")

-- | DSL constructor for the hydra.ext.graphql.syntax.TypeSystemExtensionDocument wrapper
typeSystemExtensionDocument :: Typed.TypedTerm [Syntax.TypeSystemDefinitionOrExtension] -> Typed.TypedTerm Syntax.TypeSystemExtensionDocument
typeSystemExtensionDocument x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemExtensionDocument"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.TypeSystemExtensionDocument
typeSystemExtensionDocumentTypeSystemExtensionDocument :: Typed.TypedName Syntax.TypeSystemExtensionDocument
typeSystemExtensionDocumentTypeSystemExtensionDocument =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.TypeSystemExtensionDocument")

-- | DSL injection for the schema variant of hydra.ext.graphql.syntax.TypeSystemExtension
typeSystemExtensionSchema :: Typed.TypedTerm Syntax.SchemaExtension -> Typed.TypedTerm Syntax.TypeSystemExtension
typeSystemExtensionSchema x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "schema"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the type variant of hydra.ext.graphql.syntax.TypeSystemExtension
typeSystemExtensionType :: Typed.TypedTerm Syntax.TypeExtension -> Typed.TypedTerm Syntax.TypeSystemExtension
typeSystemExtensionType x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.TypeSystemExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "type"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL name token for hydra.ext.graphql.syntax.TypeSystemExtension
typeSystemExtensionTypeSystemExtension :: Typed.TypedName Syntax.TypeSystemExtension
typeSystemExtensionTypeSystemExtension = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.TypeSystemExtension")

-- | DSL name token for hydra.ext.graphql.syntax.Type
typeType :: Typed.TypedName Syntax.Type
typeType = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Type")

-- | DSL accessor for the body of hydra.ext.graphql.syntax.Arguments
unArguments :: Typed.TypedTerm Syntax.Arguments -> Typed.TypedTerm [Syntax.Argument]
unArguments x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.Arguments")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.ArgumentsDefinition
unArgumentsDefinition :: Typed.TypedTerm Syntax.ArgumentsDefinition -> Typed.TypedTerm [Syntax.InputValueDefinition]
unArgumentsDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.ArgumentsDefinition")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.DefaultValue
unDefaultValue :: Typed.TypedTerm Syntax.DefaultValue -> Typed.TypedTerm Syntax.Value
unDefaultValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.DefaultValue")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.Description
unDescription :: Typed.TypedTerm Syntax.Description -> Typed.TypedTerm Syntax.StringValue
unDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.Description")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.Directives
unDirectives :: Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm [Syntax.Directive]
unDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.Directives")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.Document
unDocument :: Typed.TypedTerm Syntax.Document -> Typed.TypedTerm [Syntax.Definition]
unDocument x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.Document")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.EnumValue
unEnumValue :: Typed.TypedTerm Syntax.EnumValue -> Typed.TypedTerm Syntax.Name
unEnumValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.EnumValue")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.EnumValuesDefinition
unEnumValuesDefinition :: Typed.TypedTerm Syntax.EnumValuesDefinition -> Typed.TypedTerm [Syntax.EnumValueDefinition]
unEnumValuesDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.EnumValuesDefinition")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.ExecutableDocument
unExecutableDocument :: Typed.TypedTerm Syntax.ExecutableDocument -> Typed.TypedTerm [Syntax.ExecutableDefinition]
unExecutableDocument x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.ExecutableDocument")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.FieldsDefinition
unFieldsDefinition :: Typed.TypedTerm Syntax.FieldsDefinition -> Typed.TypedTerm [Syntax.FieldDefinition]
unFieldsDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.FieldsDefinition")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.FloatValue
unFloatValue :: Typed.TypedTerm Syntax.FloatValue -> Typed.TypedTerm String
unFloatValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.FloatValue")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.FragmentName
unFragmentName :: Typed.TypedTerm Syntax.FragmentName -> Typed.TypedTerm Syntax.Name
unFragmentName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.FragmentName")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.InputFieldsDefinition
unInputFieldsDefinition :: Typed.TypedTerm Syntax.InputFieldsDefinition -> Typed.TypedTerm [Syntax.InputValueDefinition]
unInputFieldsDefinition x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.InputFieldsDefinition")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.IntValue
unIntValue :: Typed.TypedTerm Syntax.IntValue -> Typed.TypedTerm String
unIntValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.IntValue")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.ListType
unListType :: Typed.TypedTerm Syntax.ListType -> Typed.TypedTerm Syntax.Type
unListType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.ListType")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.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.ext.graphql.syntax.Name")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.NamedType
unNamedType :: Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.Name
unNamedType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.NamedType")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.NullValue
unNullValue :: Typed.TypedTerm Syntax.NullValue -> Typed.TypedTerm ()
unNullValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.NullValue")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.SelectionSet
unSelectionSet :: Typed.TypedTerm Syntax.SelectionSet -> Typed.TypedTerm [Syntax.Selection]
unSelectionSet x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.SelectionSet")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.StringValue
unStringValue :: Typed.TypedTerm Syntax.StringValue -> Typed.TypedTerm String
unStringValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.StringValue")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.TypeSystemDocment
unTypeSystemDocment :: Typed.TypedTerm Syntax.TypeSystemDocment -> Typed.TypedTerm [Syntax.TypeSystemDefinition]
unTypeSystemDocment x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.TypeSystemDocment")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.TypeSystemExtensionDocument
unTypeSystemExtensionDocument :: Typed.TypedTerm Syntax.TypeSystemExtensionDocument -> Typed.TypedTerm [Syntax.TypeSystemDefinitionOrExtension]
unTypeSystemExtensionDocument x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.TypeSystemExtensionDocument")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the body of hydra.ext.graphql.syntax.Variable
unVariable :: Typed.TypedTerm Syntax.Variable -> Typed.TypedTerm Syntax.Name
unVariable x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.ext.graphql.syntax.Variable")),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.UnionMemberTypes
unionMemberTypesSeq :: Typed.TypedTerm Syntax.UnionMemberTypesSequence -> Typed.TypedTerm Syntax.UnionMemberTypes
unionMemberTypesSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypes"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq2 variant of hydra.ext.graphql.syntax.UnionMemberTypes
unionMemberTypesSeq2 :: Typed.TypedTerm Syntax.UnionMemberTypesSequence2 -> Typed.TypedTerm Syntax.UnionMemberTypes
unionMemberTypesSeq2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypes"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.UnionMemberTypesSequence
unionMemberTypesSequence :: Typed.TypedTerm Syntax.UnionMemberTypes -> Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.UnionMemberTypesSequence
unionMemberTypesSequence unionMemberTypes namedType =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Typed.unTypedTerm unionMemberTypes)},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Typed.unTypedTerm namedType)}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.UnionMemberTypesSequence2
unionMemberTypesSequence2 :: Typed.TypedTerm (Maybe ()) -> Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.UnionMemberTypesSequence2
unionMemberTypesSequence2 or namedType =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Or"),
          Model.fieldTerm = (Typed.unTypedTerm or)},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Typed.unTypedTerm namedType)}]}))

-- | DSL accessor for the NamedType field of hydra.ext.graphql.syntax.UnionMemberTypesSequence2
unionMemberTypesSequence2NamedType :: Typed.TypedTerm Syntax.UnionMemberTypesSequence2 -> Typed.TypedTerm Syntax.NamedType
unionMemberTypesSequence2NamedType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence2"),
        Model.projectionFieldName = (Model.Name "NamedType")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Or field of hydra.ext.graphql.syntax.UnionMemberTypesSequence2
unionMemberTypesSequence2Or :: Typed.TypedTerm Syntax.UnionMemberTypesSequence2 -> Typed.TypedTerm (Maybe ())
unionMemberTypesSequence2Or x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence2"),
        Model.projectionFieldName = (Model.Name "Or")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.UnionMemberTypesSequence2
unionMemberTypesSequence2UnionMemberTypesSequence2 :: Typed.TypedName Syntax.UnionMemberTypesSequence2
unionMemberTypesSequence2UnionMemberTypesSequence2 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence2")

-- | DSL updater for the NamedType field of hydra.ext.graphql.syntax.UnionMemberTypesSequence2
unionMemberTypesSequence2WithNamedType :: Typed.TypedTerm Syntax.UnionMemberTypesSequence2 -> Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.UnionMemberTypesSequence2
unionMemberTypesSequence2WithNamedType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Or"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence2"),
              Model.projectionFieldName = (Model.Name "Or")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Or field of hydra.ext.graphql.syntax.UnionMemberTypesSequence2
unionMemberTypesSequence2WithOr :: Typed.TypedTerm Syntax.UnionMemberTypesSequence2 -> Typed.TypedTerm (Maybe ()) -> Typed.TypedTerm Syntax.UnionMemberTypesSequence2
unionMemberTypesSequence2WithOr original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Or"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence2"),
              Model.projectionFieldName = (Model.Name "NamedType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL accessor for the NamedType field of hydra.ext.graphql.syntax.UnionMemberTypesSequence
unionMemberTypesSequenceNamedType :: Typed.TypedTerm Syntax.UnionMemberTypesSequence -> Typed.TypedTerm Syntax.NamedType
unionMemberTypesSequenceNamedType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence"),
        Model.projectionFieldName = (Model.Name "NamedType")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the UnionMemberTypes field of hydra.ext.graphql.syntax.UnionMemberTypesSequence
unionMemberTypesSequenceUnionMemberTypes :: Typed.TypedTerm Syntax.UnionMemberTypesSequence -> Typed.TypedTerm Syntax.UnionMemberTypes
unionMemberTypesSequenceUnionMemberTypes x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence"),
        Model.projectionFieldName = (Model.Name "UnionMemberTypes")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.UnionMemberTypesSequence
unionMemberTypesSequenceUnionMemberTypesSequence :: Typed.TypedName Syntax.UnionMemberTypesSequence
unionMemberTypesSequenceUnionMemberTypesSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence")

-- | DSL updater for the NamedType field of hydra.ext.graphql.syntax.UnionMemberTypesSequence
unionMemberTypesSequenceWithNamedType :: Typed.TypedTerm Syntax.UnionMemberTypesSequence -> Typed.TypedTerm Syntax.NamedType -> Typed.TypedTerm Syntax.UnionMemberTypesSequence
unionMemberTypesSequenceWithNamedType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence"),
              Model.projectionFieldName = (Model.Name "UnionMemberTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the UnionMemberTypes field of hydra.ext.graphql.syntax.UnionMemberTypesSequence
unionMemberTypesSequenceWithUnionMemberTypes :: Typed.TypedTerm Syntax.UnionMemberTypesSequence -> Typed.TypedTerm Syntax.UnionMemberTypes -> Typed.TypedTerm Syntax.UnionMemberTypesSequence
unionMemberTypesSequenceWithUnionMemberTypes original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "NamedType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypesSequence"),
              Model.projectionFieldName = (Model.Name "NamedType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL name token for hydra.ext.graphql.syntax.UnionMemberTypes
unionMemberTypesUnionMemberTypes :: Typed.TypedName Syntax.UnionMemberTypes
unionMemberTypesUnionMemberTypes = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.UnionMemberTypes")

-- | DSL constructor for hydra.ext.graphql.syntax.UnionTypeDefinition
unionTypeDefinition :: Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm (Maybe Syntax.UnionMemberTypes) -> Typed.TypedTerm Syntax.UnionTypeDefinition
unionTypeDefinition description name directives unionMemberTypes =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Typed.unTypedTerm unionMemberTypes)}]}))

-- | DSL accessor for the Description field of hydra.ext.graphql.syntax.UnionTypeDefinition
unionTypeDefinitionDescription :: Typed.TypedTerm Syntax.UnionTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Description)
unionTypeDefinitionDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.UnionTypeDefinition
unionTypeDefinitionDirectives :: Typed.TypedTerm Syntax.UnionTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Directives)
unionTypeDefinitionDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.UnionTypeDefinition
unionTypeDefinitionName :: Typed.TypedTerm Syntax.UnionTypeDefinition -> Typed.TypedTerm Syntax.Name
unionTypeDefinitionName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the UnionMemberTypes field of hydra.ext.graphql.syntax.UnionTypeDefinition
unionTypeDefinitionUnionMemberTypes :: Typed.TypedTerm Syntax.UnionTypeDefinition -> Typed.TypedTerm (Maybe Syntax.UnionMemberTypes)
unionTypeDefinitionUnionMemberTypes x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
        Model.projectionFieldName = (Model.Name "UnionMemberTypes")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.UnionTypeDefinition
unionTypeDefinitionUnionTypeDefinition :: Typed.TypedName Syntax.UnionTypeDefinition
unionTypeDefinitionUnionTypeDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition")

-- | DSL updater for the Description field of hydra.ext.graphql.syntax.UnionTypeDefinition
unionTypeDefinitionWithDescription :: Typed.TypedTerm Syntax.UnionTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Description) -> Typed.TypedTerm Syntax.UnionTypeDefinition
unionTypeDefinitionWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          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.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "UnionMemberTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.UnionTypeDefinition
unionTypeDefinitionWithDirectives :: Typed.TypedTerm Syntax.UnionTypeDefinition -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.UnionTypeDefinition
unionTypeDefinitionWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "UnionMemberTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.UnionTypeDefinition
unionTypeDefinitionWithName :: Typed.TypedTerm Syntax.UnionTypeDefinition -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.UnionTypeDefinition
unionTypeDefinitionWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "UnionMemberTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the UnionMemberTypes field of hydra.ext.graphql.syntax.UnionTypeDefinition
unionTypeDefinitionWithUnionMemberTypes :: Typed.TypedTerm Syntax.UnionTypeDefinition -> Typed.TypedTerm (Maybe Syntax.UnionMemberTypes) -> Typed.TypedTerm Syntax.UnionTypeDefinition
unionTypeDefinitionWithUnionMemberTypes original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Description")})),
            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.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL injection for the seq variant of hydra.ext.graphql.syntax.UnionTypeExtension
unionTypeExtensionSeq :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence -> Typed.TypedTerm Syntax.UnionTypeExtension
unionTypeExtensionSeq x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the seq2 variant of hydra.ext.graphql.syntax.UnionTypeExtension
unionTypeExtensionSeq2 :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence2 -> Typed.TypedTerm Syntax.UnionTypeExtension
unionTypeExtensionSeq2 x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtension"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "seq2"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for hydra.ext.graphql.syntax.UnionTypeExtensionSequence
unionTypeExtensionSequence :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.UnionMemberTypes -> Typed.TypedTerm Syntax.UnionTypeExtensionSequence
unionTypeExtensionSequence name directives unionMemberTypes =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)},
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Typed.unTypedTerm unionMemberTypes)}]}))

-- | DSL constructor for hydra.ext.graphql.syntax.UnionTypeExtensionSequence2
unionTypeExtensionSequence2 :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm Syntax.UnionTypeExtensionSequence2
unionTypeExtensionSequence2 name directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.UnionTypeExtensionSequence2
unionTypeExtensionSequence2Directives :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Directives
unionTypeExtensionSequence2Directives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.UnionTypeExtensionSequence2
unionTypeExtensionSequence2Name :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Name
unionTypeExtensionSequence2Name x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence2"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.UnionTypeExtensionSequence2
unionTypeExtensionSequence2UnionTypeExtensionSequence2 :: Typed.TypedName Syntax.UnionTypeExtensionSequence2
unionTypeExtensionSequence2UnionTypeExtensionSequence2 =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence2")

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.UnionTypeExtensionSequence2
unionTypeExtensionSequence2WithDirectives :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Directives -> Typed.TypedTerm Syntax.UnionTypeExtensionSequence2
unionTypeExtensionSequence2WithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence2"),
      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.ext.graphql.syntax.UnionTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.UnionTypeExtensionSequence2
unionTypeExtensionSequence2WithName :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence2 -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.UnionTypeExtensionSequence2
unionTypeExtensionSequence2WithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence2"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence2"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.UnionTypeExtensionSequence
unionTypeExtensionSequenceDirectives :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives)
unionTypeExtensionSequenceDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Name field of hydra.ext.graphql.syntax.UnionTypeExtensionSequence
unionTypeExtensionSequenceName :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence -> Typed.TypedTerm Syntax.Name
unionTypeExtensionSequenceName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "Name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the UnionMemberTypes field of hydra.ext.graphql.syntax.UnionTypeExtensionSequence
unionTypeExtensionSequenceUnionMemberTypes :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence -> Typed.TypedTerm Syntax.UnionMemberTypes
unionTypeExtensionSequenceUnionMemberTypes x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence"),
        Model.projectionFieldName = (Model.Name "UnionMemberTypes")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.UnionTypeExtensionSequence
unionTypeExtensionSequenceUnionTypeExtensionSequence :: Typed.TypedName Syntax.UnionTypeExtensionSequence
unionTypeExtensionSequenceUnionTypeExtensionSequence =
    Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence")

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.UnionTypeExtensionSequence
unionTypeExtensionSequenceWithDirectives :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.UnionTypeExtensionSequence
unionTypeExtensionSequenceWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence"),
      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.ext.graphql.syntax.UnionTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "UnionMemberTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Name field of hydra.ext.graphql.syntax.UnionTypeExtensionSequence
unionTypeExtensionSequenceWithName :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence -> Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.UnionTypeExtensionSequence
unionTypeExtensionSequenceWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "UnionMemberTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the UnionMemberTypes field of hydra.ext.graphql.syntax.UnionTypeExtensionSequence
unionTypeExtensionSequenceWithUnionMemberTypes :: Typed.TypedTerm Syntax.UnionTypeExtensionSequence -> Typed.TypedTerm Syntax.UnionMemberTypes -> Typed.TypedTerm Syntax.UnionTypeExtensionSequence
unionTypeExtensionSequenceWithUnionMemberTypes original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence"),
      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.ext.graphql.syntax.UnionTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtensionSequence"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "UnionMemberTypes"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL name token for hydra.ext.graphql.syntax.UnionTypeExtension
unionTypeExtensionUnionTypeExtension :: Typed.TypedName Syntax.UnionTypeExtension
unionTypeExtensionUnionTypeExtension = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.UnionTypeExtension")

-- | DSL injection for the boolean variant of hydra.ext.graphql.syntax.Value
valueBoolean :: Typed.TypedTerm Syntax.BooleanValue -> Typed.TypedTerm Syntax.Value
valueBoolean x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Value"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "boolean"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the enum variant of hydra.ext.graphql.syntax.Value
valueEnum :: Typed.TypedTerm Syntax.EnumValue -> Typed.TypedTerm Syntax.Value
valueEnum x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Value"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "enum"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the float variant of hydra.ext.graphql.syntax.Value
valueFloat :: Typed.TypedTerm Syntax.FloatValue -> Typed.TypedTerm Syntax.Value
valueFloat x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Value"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "float"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the int variant of hydra.ext.graphql.syntax.Value
valueInt :: Typed.TypedTerm Syntax.IntValue -> Typed.TypedTerm Syntax.Value
valueInt x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Value"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "int"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the list variant of hydra.ext.graphql.syntax.Value
valueList :: Typed.TypedTerm Syntax.ListValue -> Typed.TypedTerm Syntax.Value
valueList x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Value"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "list"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the null variant of hydra.ext.graphql.syntax.Value
valueNull :: Typed.TypedTerm Syntax.NullValue -> Typed.TypedTerm Syntax.Value
valueNull x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Value"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "null"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the object variant of hydra.ext.graphql.syntax.Value
valueObject :: Typed.TypedTerm Syntax.ObjectValue -> Typed.TypedTerm Syntax.Value
valueObject x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Value"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "object"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL injection for the string variant of hydra.ext.graphql.syntax.Value
valueString :: Typed.TypedTerm Syntax.StringValue -> Typed.TypedTerm Syntax.Value
valueString x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Value"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "string"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL name token for hydra.ext.graphql.syntax.Value
valueValue :: Typed.TypedName Syntax.Value
valueValue = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Value")

-- | DSL injection for the Variable variant of hydra.ext.graphql.syntax.Value
valueVariable :: Typed.TypedTerm Syntax.Variable -> Typed.TypedTerm Syntax.Value
valueVariable x =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.graphql.syntax.Value"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "Variable"),
        Model.fieldTerm = (Typed.unTypedTerm x)}}))

-- | DSL constructor for the hydra.ext.graphql.syntax.Variable wrapper
variable :: Typed.TypedTerm Syntax.Name -> Typed.TypedTerm Syntax.Variable
variable x =
    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
      Model.wrappedTermTypeName = (Model.Name "hydra.ext.graphql.syntax.Variable"),
      Model.wrappedTermBody = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.Variable
variableVariable :: Typed.TypedName Syntax.Variable
variableVariable = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.Variable")

-- | DSL constructor for hydra.ext.graphql.syntax.VariablesDefinition
variablesDefinition :: Typed.TypedTerm Syntax.Variable -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm (Maybe Syntax.DefaultValue) -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.VariablesDefinition
variablesDefinition variable type_ defaultValue directives =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Variable"),
          Model.fieldTerm = (Typed.unTypedTerm variable)},
        Model.Field {
          Model.fieldName = (Model.Name "Type"),
          Model.fieldTerm = (Typed.unTypedTerm type_)},
        Model.Field {
          Model.fieldName = (Model.Name "DefaultValue"),
          Model.fieldTerm = (Typed.unTypedTerm defaultValue)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))

-- | DSL accessor for the DefaultValue field of hydra.ext.graphql.syntax.VariablesDefinition
variablesDefinitionDefaultValue :: Typed.TypedTerm Syntax.VariablesDefinition -> Typed.TypedTerm (Maybe Syntax.DefaultValue)
variablesDefinitionDefaultValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
        Model.projectionFieldName = (Model.Name "DefaultValue")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Directives field of hydra.ext.graphql.syntax.VariablesDefinition
variablesDefinitionDirectives :: Typed.TypedTerm Syntax.VariablesDefinition -> Typed.TypedTerm (Maybe Syntax.Directives)
variablesDefinitionDirectives x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
        Model.projectionFieldName = (Model.Name "Directives")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Type field of hydra.ext.graphql.syntax.VariablesDefinition
variablesDefinitionType :: Typed.TypedTerm Syntax.VariablesDefinition -> Typed.TypedTerm Syntax.Type
variablesDefinitionType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
        Model.projectionFieldName = (Model.Name "Type")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the Variable field of hydra.ext.graphql.syntax.VariablesDefinition
variablesDefinitionVariable :: Typed.TypedTerm Syntax.VariablesDefinition -> Typed.TypedTerm Syntax.Variable
variablesDefinitionVariable x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
        Model.projectionFieldName = (Model.Name "Variable")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.graphql.syntax.VariablesDefinition
variablesDefinitionVariablesDefinition :: Typed.TypedName Syntax.VariablesDefinition
variablesDefinitionVariablesDefinition = Typed.TypedName (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition")

-- | DSL updater for the DefaultValue field of hydra.ext.graphql.syntax.VariablesDefinition
variablesDefinitionWithDefaultValue :: Typed.TypedTerm Syntax.VariablesDefinition -> Typed.TypedTerm (Maybe Syntax.DefaultValue) -> Typed.TypedTerm Syntax.VariablesDefinition
variablesDefinitionWithDefaultValue original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Variable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "Variable")})),
            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.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "Type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DefaultValue"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Directives field of hydra.ext.graphql.syntax.VariablesDefinition
variablesDefinitionWithDirectives :: Typed.TypedTerm Syntax.VariablesDefinition -> Typed.TypedTerm (Maybe Syntax.Directives) -> Typed.TypedTerm Syntax.VariablesDefinition
variablesDefinitionWithDirectives original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Variable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "Variable")})),
            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.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "Type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DefaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "DefaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the Type field of hydra.ext.graphql.syntax.VariablesDefinition
variablesDefinitionWithType :: Typed.TypedTerm Syntax.VariablesDefinition -> Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.VariablesDefinition
variablesDefinitionWithType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Variable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "Variable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Type"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "DefaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "DefaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the Variable field of hydra.ext.graphql.syntax.VariablesDefinition
variablesDefinitionWithVariable :: Typed.TypedTerm Syntax.VariablesDefinition -> Typed.TypedTerm Syntax.Variable -> Typed.TypedTerm Syntax.VariablesDefinition
variablesDefinitionWithVariable original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "Variable"),
          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.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "Type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "DefaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "DefaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "Directives"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.graphql.syntax.VariablesDefinition"),
              Model.projectionFieldName = (Model.Name "Directives")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))