packages feed

hydra-0.15.0: src/main/haskell/Hydra/Dsl/OpenGql/Grammar.hs

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

-- | DSL functions for openGql.grammar

module Hydra.Dsl.OpenGql.Grammar where

import qualified Hydra.Core as Core
import qualified Hydra.Phantoms as Phantoms
import qualified OpenGql.Grammar as Grammar
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci

abbreviatedEdgePatternLeftArrow :: Phantoms.TTerm Grammar.AbbreviatedEdgePattern
abbreviatedEdgePatternLeftArrow =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AbbreviatedEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "leftArrow"),
        Core.fieldTerm = Core.TermUnit}}))

abbreviatedEdgePatternLeftArrowTilde :: Phantoms.TTerm Grammar.AbbreviatedEdgePattern
abbreviatedEdgePatternLeftArrowTilde =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AbbreviatedEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "leftArrowTilde"),
        Core.fieldTerm = Core.TermUnit}}))

abbreviatedEdgePatternLeftMinusRight :: Phantoms.TTerm Grammar.AbbreviatedEdgePattern
abbreviatedEdgePatternLeftMinusRight =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AbbreviatedEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "leftMinusRight"),
        Core.fieldTerm = Core.TermUnit}}))

abbreviatedEdgePatternMinusSign :: Phantoms.TTerm Grammar.AbbreviatedEdgePattern
abbreviatedEdgePatternMinusSign =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AbbreviatedEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "minusSign"),
        Core.fieldTerm = Core.TermUnit}}))

abbreviatedEdgePatternRightArrow :: Phantoms.TTerm Grammar.AbbreviatedEdgePattern
abbreviatedEdgePatternRightArrow =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AbbreviatedEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "rightArrow"),
        Core.fieldTerm = Core.TermUnit}}))

abbreviatedEdgePatternTilde :: Phantoms.TTerm Grammar.AbbreviatedEdgePattern
abbreviatedEdgePatternTilde =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AbbreviatedEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "tilde"),
        Core.fieldTerm = Core.TermUnit}}))

abbreviatedEdgePatternTildeRightArrow :: Phantoms.TTerm Grammar.AbbreviatedEdgePattern
abbreviatedEdgePatternTildeRightArrow =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AbbreviatedEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "tildeRightArrow"),
        Core.fieldTerm = Core.TermUnit}}))

absoluteCatalogSchemaReferenceDirectoryAndSchema :: Phantoms.TTerm Grammar.AbsoluteDirectoryAndSchema -> Phantoms.TTerm Grammar.AbsoluteCatalogSchemaReference
absoluteCatalogSchemaReferenceDirectoryAndSchema x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AbsoluteCatalogSchemaReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "directoryAndSchema"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

absoluteCatalogSchemaReferenceRoot :: Phantoms.TTerm Grammar.AbsoluteCatalogSchemaReference
absoluteCatalogSchemaReferenceRoot =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AbsoluteCatalogSchemaReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "root"),
        Core.fieldTerm = Core.TermUnit}}))

absoluteDirectoryAndSchema :: Phantoms.TTerm Grammar.AbsoluteDirectoryPath -> Phantoms.TTerm Grammar.SchemaName -> Phantoms.TTerm Grammar.AbsoluteDirectoryAndSchema
absoluteDirectoryAndSchema directoryPath schemaName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AbsoluteDirectoryAndSchema"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "directoryPath"),
          Core.fieldTerm = (Phantoms.unTTerm directoryPath)},
        Core.Field {
          Core.fieldName = (Core.Name "schemaName"),
          Core.fieldTerm = (Phantoms.unTTerm schemaName)}]}))

absoluteDirectoryAndSchemaDirectoryPath :: Phantoms.TTerm Grammar.AbsoluteDirectoryAndSchema -> Phantoms.TTerm Grammar.AbsoluteDirectoryPath
absoluteDirectoryAndSchemaDirectoryPath x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AbsoluteDirectoryAndSchema"),
        Core.projectionField = (Core.Name "directoryPath")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

absoluteDirectoryAndSchemaSchemaName :: Phantoms.TTerm Grammar.AbsoluteDirectoryAndSchema -> Phantoms.TTerm Grammar.SchemaName
absoluteDirectoryAndSchemaSchemaName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AbsoluteDirectoryAndSchema"),
        Core.projectionField = (Core.Name "schemaName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

absoluteDirectoryAndSchemaWithDirectoryPath :: Phantoms.TTerm Grammar.AbsoluteDirectoryAndSchema -> Phantoms.TTerm Grammar.AbsoluteDirectoryPath -> Phantoms.TTerm Grammar.AbsoluteDirectoryAndSchema
absoluteDirectoryAndSchemaWithDirectoryPath original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AbsoluteDirectoryAndSchema"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "directoryPath"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "schemaName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AbsoluteDirectoryAndSchema"),
              Core.projectionField = (Core.Name "schemaName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

absoluteDirectoryAndSchemaWithSchemaName :: Phantoms.TTerm Grammar.AbsoluteDirectoryAndSchema -> Phantoms.TTerm Grammar.SchemaName -> Phantoms.TTerm Grammar.AbsoluteDirectoryAndSchema
absoluteDirectoryAndSchemaWithSchemaName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AbsoluteDirectoryAndSchema"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "directoryPath"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AbsoluteDirectoryAndSchema"),
              Core.projectionField = (Core.Name "directoryPath")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "schemaName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

addSubNumericValueExpression :: Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.AddSubtractOperator -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.AddSubNumericValueExpression
addSubNumericValueExpression left operator right =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm left)},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Phantoms.unTTerm operator)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm right)}]}))

addSubNumericValueExpressionLeft :: Phantoms.TTerm Grammar.AddSubNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression
addSubNumericValueExpressionLeft x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
        Core.projectionField = (Core.Name "left")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

addSubNumericValueExpressionOperator :: Phantoms.TTerm Grammar.AddSubNumericValueExpression -> Phantoms.TTerm Grammar.AddSubtractOperator
addSubNumericValueExpressionOperator x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
        Core.projectionField = (Core.Name "operator")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

addSubNumericValueExpressionRight :: Phantoms.TTerm Grammar.AddSubNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression
addSubNumericValueExpressionRight x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
        Core.projectionField = (Core.Name "right")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

addSubNumericValueExpressionWithLeft :: Phantoms.TTerm Grammar.AddSubNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.AddSubNumericValueExpression
addSubNumericValueExpressionWithLeft original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
              Core.projectionField = (Core.Name "operator")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

addSubNumericValueExpressionWithOperator :: Phantoms.TTerm Grammar.AddSubNumericValueExpression -> Phantoms.TTerm Grammar.AddSubtractOperator -> Phantoms.TTerm Grammar.AddSubNumericValueExpression
addSubNumericValueExpressionWithOperator original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

addSubNumericValueExpressionWithRight :: Phantoms.TTerm Grammar.AddSubNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.AddSubNumericValueExpression
addSubNumericValueExpressionWithRight original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubNumericValueExpression"),
              Core.projectionField = (Core.Name "operator")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

addSubtractExpr :: Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.AddSubtractOperator -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.AddSubtractExpr
addSubtractExpr left operator right =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm left)},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Phantoms.unTTerm operator)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm right)}]}))

addSubtractExprLeft :: Phantoms.TTerm Grammar.AddSubtractExpr -> Phantoms.TTerm Grammar.ValueExpression
addSubtractExprLeft x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
        Core.projectionField = (Core.Name "left")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

addSubtractExprOperator :: Phantoms.TTerm Grammar.AddSubtractExpr -> Phantoms.TTerm Grammar.AddSubtractOperator
addSubtractExprOperator x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
        Core.projectionField = (Core.Name "operator")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

addSubtractExprRight :: Phantoms.TTerm Grammar.AddSubtractExpr -> Phantoms.TTerm Grammar.ValueExpression
addSubtractExprRight x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
        Core.projectionField = (Core.Name "right")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

addSubtractExprWithLeft :: Phantoms.TTerm Grammar.AddSubtractExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.AddSubtractExpr
addSubtractExprWithLeft original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
              Core.projectionField = (Core.Name "operator")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

addSubtractExprWithOperator :: Phantoms.TTerm Grammar.AddSubtractExpr -> Phantoms.TTerm Grammar.AddSubtractOperator -> Phantoms.TTerm Grammar.AddSubtractExpr
addSubtractExprWithOperator original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

addSubtractExprWithRight :: Phantoms.TTerm Grammar.AddSubtractExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.AddSubtractExpr
addSubtractExprWithRight original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AddSubtractExpr"),
              Core.projectionField = (Core.Name "operator")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

addSubtractOperatorAdd :: Phantoms.TTerm Grammar.AddSubtractOperator
addSubtractOperatorAdd =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AddSubtractOperator"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "add"),
        Core.fieldTerm = Core.TermUnit}}))

addSubtractOperatorSubtract :: Phantoms.TTerm Grammar.AddSubtractOperator
addSubtractOperatorSubtract =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AddSubtractOperator"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "subtract"),
        Core.fieldTerm = Core.TermUnit}}))

aggregateFunctionBinarySetFunction :: Phantoms.TTerm Grammar.BinarySetFunction -> Phantoms.TTerm Grammar.AggregateFunction
aggregateFunctionBinarySetFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AggregateFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "binarySetFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

aggregateFunctionCountAll :: Phantoms.TTerm Grammar.AggregateFunction
aggregateFunctionCountAll =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AggregateFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "countAll"),
        Core.fieldTerm = Core.TermUnit}}))

aggregateFunctionGeneralSetFunction :: Phantoms.TTerm Grammar.GeneralSetFunction -> Phantoms.TTerm Grammar.AggregateFunction
aggregateFunctionGeneralSetFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AggregateFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "generalSetFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

allDifferentPredicate :: Phantoms.TTerm [Grammar.ElementVariableReference] -> Phantoms.TTerm Grammar.AllDifferentPredicate
allDifferentPredicate references =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AllDifferentPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "references"),
          Core.fieldTerm = (Phantoms.unTTerm references)}]}))

allDifferentPredicateReferences :: Phantoms.TTerm Grammar.AllDifferentPredicate -> Phantoms.TTerm [Grammar.ElementVariableReference]
allDifferentPredicateReferences x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AllDifferentPredicate"),
        Core.projectionField = (Core.Name "references")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

allDifferentPredicateWithReferences :: Phantoms.TTerm Grammar.AllDifferentPredicate -> Phantoms.TTerm [Grammar.ElementVariableReference] -> Phantoms.TTerm Grammar.AllDifferentPredicate
allDifferentPredicateWithReferences original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AllDifferentPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "references"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

allParametersOrCharacteristics :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ParametersOrCharacteristics -> Phantoms.TTerm Grammar.AllParametersOrCharacteristics
allParametersOrCharacteristics all type_ =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AllParametersOrCharacteristics"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "all"),
          Core.fieldTerm = (Phantoms.unTTerm all)},
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm type_)}]}))

allParametersOrCharacteristicsAll :: Phantoms.TTerm Grammar.AllParametersOrCharacteristics -> Phantoms.TTerm Bool
allParametersOrCharacteristicsAll x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AllParametersOrCharacteristics"),
        Core.projectionField = (Core.Name "all")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

allParametersOrCharacteristicsType :: Phantoms.TTerm Grammar.AllParametersOrCharacteristics -> Phantoms.TTerm Grammar.ParametersOrCharacteristics
allParametersOrCharacteristicsType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AllParametersOrCharacteristics"),
        Core.projectionField = (Core.Name "type")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

allParametersOrCharacteristicsWithAll :: Phantoms.TTerm Grammar.AllParametersOrCharacteristics -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.AllParametersOrCharacteristics
allParametersOrCharacteristicsWithAll original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AllParametersOrCharacteristics"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "all"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AllParametersOrCharacteristics"),
              Core.projectionField = (Core.Name "type")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

allParametersOrCharacteristicsWithType :: Phantoms.TTerm Grammar.AllParametersOrCharacteristics -> Phantoms.TTerm Grammar.ParametersOrCharacteristics -> Phantoms.TTerm Grammar.AllParametersOrCharacteristics
allParametersOrCharacteristicsWithType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AllParametersOrCharacteristics"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "all"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AllParametersOrCharacteristics"),
              Core.projectionField = (Core.Name "all")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

allPathSearch :: Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.AllPathSearch
allPathSearch mode orPaths =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AllPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm mode)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm orPaths)}]}))

allPathSearchMode :: Phantoms.TTerm Grammar.AllPathSearch -> Phantoms.TTerm (Maybe Grammar.PathMode)
allPathSearchMode x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AllPathSearch"),
        Core.projectionField = (Core.Name "mode")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

allPathSearchOrPaths :: Phantoms.TTerm Grammar.AllPathSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths)
allPathSearchOrPaths x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AllPathSearch"),
        Core.projectionField = (Core.Name "orPaths")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

allPathSearchWithMode :: Phantoms.TTerm Grammar.AllPathSearch -> Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm Grammar.AllPathSearch
allPathSearchWithMode original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AllPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AllPathSearch"),
              Core.projectionField = (Core.Name "orPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

allPathSearchWithOrPaths :: Phantoms.TTerm Grammar.AllPathSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.AllPathSearch
allPathSearchWithOrPaths original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AllPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AllPathSearch"),
              Core.projectionField = (Core.Name "mode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

allShortestPathSearch :: Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.AllShortestPathSearch
allShortestPathSearch mode orPaths =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AllShortestPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm mode)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm orPaths)}]}))

allShortestPathSearchMode :: Phantoms.TTerm Grammar.AllShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathMode)
allShortestPathSearchMode x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AllShortestPathSearch"),
        Core.projectionField = (Core.Name "mode")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

allShortestPathSearchOrPaths :: Phantoms.TTerm Grammar.AllShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths)
allShortestPathSearchOrPaths x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AllShortestPathSearch"),
        Core.projectionField = (Core.Name "orPaths")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

allShortestPathSearchWithMode :: Phantoms.TTerm Grammar.AllShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm Grammar.AllShortestPathSearch
allShortestPathSearchWithMode original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AllShortestPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AllShortestPathSearch"),
              Core.projectionField = (Core.Name "orPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

allShortestPathSearchWithOrPaths :: Phantoms.TTerm Grammar.AllShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.AllShortestPathSearch
allShortestPathSearchWithOrPaths original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AllShortestPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AllShortestPathSearch"),
              Core.projectionField = (Core.Name "mode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

ambientLinearDataModifyingStatementBody :: Phantoms.TTerm Grammar.SimpleLinearDataAccessingStatement -> Phantoms.TTerm (Maybe Grammar.PrimitiveResultStatement) -> Phantoms.TTerm Grammar.AmbientLinearDataModifyingStatementBody
ambientLinearDataModifyingStatementBody simpleAccess primitiveResult =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AmbientLinearDataModifyingStatementBody"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "simpleAccess"),
          Core.fieldTerm = (Phantoms.unTTerm simpleAccess)},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Phantoms.unTTerm primitiveResult)}]}))

ambientLinearDataModifyingStatementBodyPrimitiveResult :: Phantoms.TTerm Grammar.AmbientLinearDataModifyingStatementBody -> Phantoms.TTerm (Maybe Grammar.PrimitiveResultStatement)
ambientLinearDataModifyingStatementBodyPrimitiveResult x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AmbientLinearDataModifyingStatementBody"),
        Core.projectionField = (Core.Name "primitiveResult")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

ambientLinearDataModifyingStatementBodySimpleAccess :: Phantoms.TTerm Grammar.AmbientLinearDataModifyingStatementBody -> Phantoms.TTerm Grammar.SimpleLinearDataAccessingStatement
ambientLinearDataModifyingStatementBodySimpleAccess x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AmbientLinearDataModifyingStatementBody"),
        Core.projectionField = (Core.Name "simpleAccess")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

ambientLinearDataModifyingStatementBodyWithPrimitiveResult :: Phantoms.TTerm Grammar.AmbientLinearDataModifyingStatementBody -> Phantoms.TTerm (Maybe Grammar.PrimitiveResultStatement) -> Phantoms.TTerm Grammar.AmbientLinearDataModifyingStatementBody
ambientLinearDataModifyingStatementBodyWithPrimitiveResult original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AmbientLinearDataModifyingStatementBody"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "simpleAccess"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AmbientLinearDataModifyingStatementBody"),
              Core.projectionField = (Core.Name "simpleAccess")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

ambientLinearDataModifyingStatementBodyWithSimpleAccess :: Phantoms.TTerm Grammar.AmbientLinearDataModifyingStatementBody -> Phantoms.TTerm Grammar.SimpleLinearDataAccessingStatement -> Phantoms.TTerm Grammar.AmbientLinearDataModifyingStatementBody
ambientLinearDataModifyingStatementBodyWithSimpleAccess original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AmbientLinearDataModifyingStatementBody"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "simpleAccess"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AmbientLinearDataModifyingStatementBody"),
              Core.projectionField = (Core.Name "primitiveResult")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

ambientLinearDataModifyingStatementNested :: Phantoms.TTerm Grammar.NestedDataModifyingProcedureSpecification -> Phantoms.TTerm Grammar.AmbientLinearDataModifyingStatement
ambientLinearDataModifyingStatementNested x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AmbientLinearDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nested"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

ambientLinearDataModifyingStatementSimple :: Phantoms.TTerm Grammar.AmbientLinearDataModifyingStatementBody -> Phantoms.TTerm Grammar.AmbientLinearDataModifyingStatement
ambientLinearDataModifyingStatementSimple x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AmbientLinearDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "simple"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

ambientLinearQueryStatementNested :: Phantoms.TTerm Grammar.NestedQuerySpecification -> Phantoms.TTerm Grammar.AmbientLinearQueryStatement
ambientLinearQueryStatementNested x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AmbientLinearQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nested"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

ambientLinearQueryStatementSimple :: Phantoms.TTerm Grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult -> Phantoms.TTerm Grammar.AmbientLinearQueryStatement
ambientLinearQueryStatementSimple x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.AmbientLinearQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "simple"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

ambientLinearQueryStatementSimpleAndPrimitiveResult :: Phantoms.TTerm (Maybe Grammar.SimpleLinearQueryStatement) -> Phantoms.TTerm Grammar.PrimitiveResultStatement -> Phantoms.TTerm Grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult
ambientLinearQueryStatementSimpleAndPrimitiveResult simple primitiveResult =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "simple"),
          Core.fieldTerm = (Phantoms.unTTerm simple)},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Phantoms.unTTerm primitiveResult)}]}))

ambientLinearQueryStatementSimpleAndPrimitiveResultPrimitiveResult :: Phantoms.TTerm Grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult -> Phantoms.TTerm Grammar.PrimitiveResultStatement
ambientLinearQueryStatementSimpleAndPrimitiveResultPrimitiveResult x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult"),
        Core.projectionField = (Core.Name "primitiveResult")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

ambientLinearQueryStatementSimpleAndPrimitiveResultSimple :: Phantoms.TTerm Grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult -> Phantoms.TTerm (Maybe Grammar.SimpleLinearQueryStatement)
ambientLinearQueryStatementSimpleAndPrimitiveResultSimple x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult"),
        Core.projectionField = (Core.Name "simple")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

ambientLinearQueryStatementSimpleAndPrimitiveResultWithPrimitiveResult :: Phantoms.TTerm Grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult -> Phantoms.TTerm Grammar.PrimitiveResultStatement -> Phantoms.TTerm Grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult
ambientLinearQueryStatementSimpleAndPrimitiveResultWithPrimitiveResult original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "simple"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult"),
              Core.projectionField = (Core.Name "simple")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

ambientLinearQueryStatementSimpleAndPrimitiveResultWithSimple :: Phantoms.TTerm Grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult -> Phantoms.TTerm (Maybe Grammar.SimpleLinearQueryStatement) -> Phantoms.TTerm Grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult
ambientLinearQueryStatementSimpleAndPrimitiveResultWithSimple original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "simple"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult"),
              Core.projectionField = (Core.Name "primitiveResult")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

anyPathSearch :: Phantoms.TTerm (Maybe Grammar.NumberOfPaths) -> Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.AnyPathSearch
anyPathSearch numberOfPaths mode orPaths =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfPaths"),
          Core.fieldTerm = (Phantoms.unTTerm numberOfPaths)},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm mode)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm orPaths)}]}))

anyPathSearchMode :: Phantoms.TTerm Grammar.AnyPathSearch -> Phantoms.TTerm (Maybe Grammar.PathMode)
anyPathSearchMode x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
        Core.projectionField = (Core.Name "mode")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

anyPathSearchNumberOfPaths :: Phantoms.TTerm Grammar.AnyPathSearch -> Phantoms.TTerm (Maybe Grammar.NumberOfPaths)
anyPathSearchNumberOfPaths x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
        Core.projectionField = (Core.Name "numberOfPaths")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

anyPathSearchOrPaths :: Phantoms.TTerm Grammar.AnyPathSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths)
anyPathSearchOrPaths x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
        Core.projectionField = (Core.Name "orPaths")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

anyPathSearchWithMode :: Phantoms.TTerm Grammar.AnyPathSearch -> Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm Grammar.AnyPathSearch
anyPathSearchWithMode original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
              Core.projectionField = (Core.Name "numberOfPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
              Core.projectionField = (Core.Name "orPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

anyPathSearchWithNumberOfPaths :: Phantoms.TTerm Grammar.AnyPathSearch -> Phantoms.TTerm (Maybe Grammar.NumberOfPaths) -> Phantoms.TTerm Grammar.AnyPathSearch
anyPathSearchWithNumberOfPaths original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfPaths"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
              Core.projectionField = (Core.Name "mode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
              Core.projectionField = (Core.Name "orPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

anyPathSearchWithOrPaths :: Phantoms.TTerm Grammar.AnyPathSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.AnyPathSearch
anyPathSearchWithOrPaths original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
              Core.projectionField = (Core.Name "numberOfPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AnyPathSearch"),
              Core.projectionField = (Core.Name "mode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

anyRecordType :: Phantoms.TTerm Bool -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.AnyRecordType
anyRecordType any notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AnyRecordType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Phantoms.unTTerm any)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

anyRecordTypeAny :: Phantoms.TTerm Grammar.AnyRecordType -> Phantoms.TTerm Bool
anyRecordTypeAny x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AnyRecordType"),
        Core.projectionField = (Core.Name "any")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

anyRecordTypeNotNull :: Phantoms.TTerm Grammar.AnyRecordType -> Phantoms.TTerm Bool
anyRecordTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AnyRecordType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

anyRecordTypeWithAny :: Phantoms.TTerm Grammar.AnyRecordType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.AnyRecordType
anyRecordTypeWithAny original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AnyRecordType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AnyRecordType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

anyRecordTypeWithNotNull :: Phantoms.TTerm Grammar.AnyRecordType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.AnyRecordType
anyRecordTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AnyRecordType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AnyRecordType"),
              Core.projectionField = (Core.Name "any")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

anyShortestPathSearch :: Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.AnyShortestPathSearch
anyShortestPathSearch mode orPaths =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AnyShortestPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm mode)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm orPaths)}]}))

anyShortestPathSearchMode :: Phantoms.TTerm Grammar.AnyShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathMode)
anyShortestPathSearchMode x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AnyShortestPathSearch"),
        Core.projectionField = (Core.Name "mode")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

anyShortestPathSearchOrPaths :: Phantoms.TTerm Grammar.AnyShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths)
anyShortestPathSearchOrPaths x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.AnyShortestPathSearch"),
        Core.projectionField = (Core.Name "orPaths")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

anyShortestPathSearchWithMode :: Phantoms.TTerm Grammar.AnyShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm Grammar.AnyShortestPathSearch
anyShortestPathSearchWithMode original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AnyShortestPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AnyShortestPathSearch"),
              Core.projectionField = (Core.Name "orPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

anyShortestPathSearchWithOrPaths :: Phantoms.TTerm Grammar.AnyShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.AnyShortestPathSearch
anyShortestPathSearchWithOrPaths original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.AnyShortestPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.AnyShortestPathSearch"),
              Core.projectionField = (Core.Name "mode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

approximateNumericLiteralCommonWithSuffix :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.ApproximateNumericLiteral
approximateNumericLiteralCommonWithSuffix x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "commonWithSuffix"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

approximateNumericLiteralIntegerWithSuffix :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.ApproximateNumericLiteral
approximateNumericLiteralIntegerWithSuffix x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "integerWithSuffix"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

approximateNumericLiteralScientificWithSuffix :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.ApproximateNumericLiteral
approximateNumericLiteralScientificWithSuffix x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "scientificWithSuffix"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

approximateNumericLiteralScientificWithoutSuffix :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.ApproximateNumericLiteral
approximateNumericLiteralScientificWithoutSuffix x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "scientificWithoutSuffix"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

approximateNumericTypeDoubleWithPrecision :: Phantoms.TTerm Grammar.DoubleTypeWithPrecision -> Phantoms.TTerm Grammar.ApproximateNumericType
approximateNumericTypeDoubleWithPrecision x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "doubleWithPrecision"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

approximateNumericTypeFloat128 :: Phantoms.TTerm Grammar.Float128Type -> Phantoms.TTerm Grammar.ApproximateNumericType
approximateNumericTypeFloat128 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "float128"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

approximateNumericTypeFloat16 :: Phantoms.TTerm Grammar.Float16Type -> Phantoms.TTerm Grammar.ApproximateNumericType
approximateNumericTypeFloat16 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "float16"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

approximateNumericTypeFloat256 :: Phantoms.TTerm Grammar.Float256Type -> Phantoms.TTerm Grammar.ApproximateNumericType
approximateNumericTypeFloat256 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "float256"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

approximateNumericTypeFloat32 :: Phantoms.TTerm Grammar.Float32Type -> Phantoms.TTerm Grammar.ApproximateNumericType
approximateNumericTypeFloat32 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "float32"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

approximateNumericTypeFloat64 :: Phantoms.TTerm Grammar.Float64Type -> Phantoms.TTerm Grammar.ApproximateNumericType
approximateNumericTypeFloat64 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "float64"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

approximateNumericTypeFloatWithPrecision :: Phantoms.TTerm Grammar.FloatTypeWithPrecision -> Phantoms.TTerm Grammar.ApproximateNumericType
approximateNumericTypeFloatWithPrecision x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "floatWithPrecision"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

approximateNumericTypeReal :: Phantoms.TTerm Grammar.RealType -> Phantoms.TTerm Grammar.ApproximateNumericType
approximateNumericTypeReal x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ApproximateNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "real"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bigIntType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BigIntType
bigIntType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BigIntType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

bigIntTypeNotNull :: Phantoms.TTerm Grammar.BigIntType -> Phantoms.TTerm Bool
bigIntTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BigIntType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bigIntTypeWithNotNull :: Phantoms.TTerm Grammar.BigIntType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BigIntType
bigIntTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BigIntType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

bigIntegerType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BigIntegerType
bigIntegerType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BigIntegerType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

bigIntegerTypeNotNull :: Phantoms.TTerm Grammar.BigIntegerType -> Phantoms.TTerm Bool
bigIntegerTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BigIntegerType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bigIntegerTypeWithNotNull :: Phantoms.TTerm Grammar.BigIntegerType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BigIntegerType
bigIntegerTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BigIntegerType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

binaryExactNumericTypeSigned :: Phantoms.TTerm Grammar.SignedBinaryExactNumericType -> Phantoms.TTerm Grammar.BinaryExactNumericType
binaryExactNumericTypeSigned x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "signed"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

binaryExactNumericTypeUnsigned :: Phantoms.TTerm Grammar.UnsignedBinaryExactNumericType -> Phantoms.TTerm Grammar.BinaryExactNumericType
binaryExactNumericTypeUnsigned x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "unsigned"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

binarySetFunction :: Phantoms.TTerm Grammar.BinarySetFunctionType -> Phantoms.TTerm Grammar.DependentValueExpression -> Phantoms.TTerm Grammar.IndependentValueExpression -> Phantoms.TTerm Grammar.BinarySetFunction
binarySetFunction functionType dependentValue independentValue =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "functionType"),
          Core.fieldTerm = (Phantoms.unTTerm functionType)},
        Core.Field {
          Core.fieldName = (Core.Name "dependentValue"),
          Core.fieldTerm = (Phantoms.unTTerm dependentValue)},
        Core.Field {
          Core.fieldName = (Core.Name "independentValue"),
          Core.fieldTerm = (Phantoms.unTTerm independentValue)}]}))

binarySetFunctionDependentValue :: Phantoms.TTerm Grammar.BinarySetFunction -> Phantoms.TTerm Grammar.DependentValueExpression
binarySetFunctionDependentValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
        Core.projectionField = (Core.Name "dependentValue")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

binarySetFunctionFunctionType :: Phantoms.TTerm Grammar.BinarySetFunction -> Phantoms.TTerm Grammar.BinarySetFunctionType
binarySetFunctionFunctionType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
        Core.projectionField = (Core.Name "functionType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

binarySetFunctionIndependentValue :: Phantoms.TTerm Grammar.BinarySetFunction -> Phantoms.TTerm Grammar.IndependentValueExpression
binarySetFunctionIndependentValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
        Core.projectionField = (Core.Name "independentValue")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

binarySetFunctionTypePercentileCont :: Phantoms.TTerm Grammar.BinarySetFunctionType
binarySetFunctionTypePercentileCont =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BinarySetFunctionType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "percentileCont"),
        Core.fieldTerm = Core.TermUnit}}))

binarySetFunctionTypePercentileDisc :: Phantoms.TTerm Grammar.BinarySetFunctionType
binarySetFunctionTypePercentileDisc =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BinarySetFunctionType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "percentileDisc"),
        Core.fieldTerm = Core.TermUnit}}))

binarySetFunctionWithDependentValue :: Phantoms.TTerm Grammar.BinarySetFunction -> Phantoms.TTerm Grammar.DependentValueExpression -> Phantoms.TTerm Grammar.BinarySetFunction
binarySetFunctionWithDependentValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "functionType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
              Core.projectionField = (Core.Name "functionType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "dependentValue"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "independentValue"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
              Core.projectionField = (Core.Name "independentValue")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

binarySetFunctionWithFunctionType :: Phantoms.TTerm Grammar.BinarySetFunction -> Phantoms.TTerm Grammar.BinarySetFunctionType -> Phantoms.TTerm Grammar.BinarySetFunction
binarySetFunctionWithFunctionType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "functionType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "dependentValue"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
              Core.projectionField = (Core.Name "dependentValue")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "independentValue"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
              Core.projectionField = (Core.Name "independentValue")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

binarySetFunctionWithIndependentValue :: Phantoms.TTerm Grammar.BinarySetFunction -> Phantoms.TTerm Grammar.IndependentValueExpression -> Phantoms.TTerm Grammar.BinarySetFunction
binarySetFunctionWithIndependentValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "functionType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
              Core.projectionField = (Core.Name "functionType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "dependentValue"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BinarySetFunction"),
              Core.projectionField = (Core.Name "dependentValue")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "independentValue"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

binaryType :: Phantoms.TTerm (Maybe Grammar.FixedLength) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BinaryType
binaryType fixedLength notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BinaryType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "fixedLength"),
          Core.fieldTerm = (Phantoms.unTTerm fixedLength)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

binaryTypeFixedLength :: Phantoms.TTerm Grammar.BinaryType -> Phantoms.TTerm (Maybe Grammar.FixedLength)
binaryTypeFixedLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BinaryType"),
        Core.projectionField = (Core.Name "fixedLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

binaryTypeNotNull :: Phantoms.TTerm Grammar.BinaryType -> Phantoms.TTerm Bool
binaryTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BinaryType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

binaryTypeWithFixedLength :: Phantoms.TTerm Grammar.BinaryType -> Phantoms.TTerm (Maybe Grammar.FixedLength) -> Phantoms.TTerm Grammar.BinaryType
binaryTypeWithFixedLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BinaryType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "fixedLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BinaryType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

binaryTypeWithNotNull :: Phantoms.TTerm Grammar.BinaryType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BinaryType
binaryTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BinaryType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "fixedLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BinaryType"),
              Core.projectionField = (Core.Name "fixedLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

bindingEqualsValue :: Phantoms.TTerm Grammar.BindingVariable -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.BindingEqualsValue
bindingEqualsValue binding value =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingEqualsValue"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Phantoms.unTTerm binding)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm value)}]}))

bindingEqualsValueBinding :: Phantoms.TTerm Grammar.BindingEqualsValue -> Phantoms.TTerm Grammar.BindingVariable
bindingEqualsValueBinding x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BindingEqualsValue"),
        Core.projectionField = (Core.Name "binding")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bindingEqualsValueValue :: Phantoms.TTerm Grammar.BindingEqualsValue -> Phantoms.TTerm Grammar.ValueExpression
bindingEqualsValueValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BindingEqualsValue"),
        Core.projectionField = (Core.Name "value")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bindingEqualsValueWithBinding :: Phantoms.TTerm Grammar.BindingEqualsValue -> Phantoms.TTerm Grammar.BindingVariable -> Phantoms.TTerm Grammar.BindingEqualsValue
bindingEqualsValueWithBinding original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingEqualsValue"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingEqualsValue"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

bindingEqualsValueWithValue :: Phantoms.TTerm Grammar.BindingEqualsValue -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.BindingEqualsValue
bindingEqualsValueWithValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingEqualsValue"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingEqualsValue"),
              Core.projectionField = (Core.Name "binding")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

bindingTableExpressionName :: Phantoms.TTerm Grammar.ObjectNameOrBindingVariable -> Phantoms.TTerm Grammar.BindingTableExpression
bindingTableExpressionName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingTableExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "name"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bindingTableExpressionNested :: Phantoms.TTerm Grammar.NestedBindingTableQuerySpecification -> Phantoms.TTerm Grammar.BindingTableExpression
bindingTableExpressionNested x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingTableExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nested"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bindingTableExpressionObject :: Phantoms.TTerm Grammar.ObjectExpressionPrimary -> Phantoms.TTerm Grammar.BindingTableExpression
bindingTableExpressionObject x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingTableExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "object"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bindingTableExpressionTable :: Phantoms.TTerm Grammar.BindingTableReference -> Phantoms.TTerm Grammar.BindingTableExpression
bindingTableExpressionTable x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingTableExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "table"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bindingTableNameDelimitedBindingTableName :: Phantoms.TTerm Grammar.DelimitedBindingTableName -> Phantoms.TTerm Grammar.BindingTableName
bindingTableNameDelimitedBindingTableName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingTableName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "delimitedBindingTableName"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bindingTableNameRegularIdentifier :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.BindingTableName
bindingTableNameRegularIdentifier x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingTableName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "regularIdentifier"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bindingTableReferenceDelimitedBindingTableName :: Phantoms.TTerm Grammar.DelimitedBindingTableName -> Phantoms.TTerm Grammar.BindingTableReference
bindingTableReferenceDelimitedBindingTableName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingTableReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "delimitedBindingTableName"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bindingTableReferenceParameterSpecification :: Phantoms.TTerm Grammar.ReferenceParameterSpecification -> Phantoms.TTerm Grammar.BindingTableReference
bindingTableReferenceParameterSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingTableReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parameterSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bindingTableReferenceParentAndTableName :: Phantoms.TTerm Grammar.ParentAndTableName -> Phantoms.TTerm Grammar.BindingTableReference
bindingTableReferenceParentAndTableName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingTableReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parentAndTableName"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bindingTableReferenceValueType :: Phantoms.TTerm Grammar.BindingTableType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BindingTableReferenceValueType
bindingTableReferenceValueType bindingTableType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingTableReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "bindingTableType"),
          Core.fieldTerm = (Phantoms.unTTerm bindingTableType)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

bindingTableReferenceValueTypeBindingTableType :: Phantoms.TTerm Grammar.BindingTableReferenceValueType -> Phantoms.TTerm Grammar.BindingTableType
bindingTableReferenceValueTypeBindingTableType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableReferenceValueType"),
        Core.projectionField = (Core.Name "bindingTableType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bindingTableReferenceValueTypeNotNull :: Phantoms.TTerm Grammar.BindingTableReferenceValueType -> Phantoms.TTerm Bool
bindingTableReferenceValueTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableReferenceValueType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bindingTableReferenceValueTypeWithBindingTableType :: Phantoms.TTerm Grammar.BindingTableReferenceValueType -> Phantoms.TTerm Grammar.BindingTableType -> Phantoms.TTerm Grammar.BindingTableReferenceValueType
bindingTableReferenceValueTypeWithBindingTableType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingTableReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "bindingTableType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableReferenceValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

bindingTableReferenceValueTypeWithNotNull :: Phantoms.TTerm Grammar.BindingTableReferenceValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BindingTableReferenceValueType
bindingTableReferenceValueTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingTableReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "bindingTableType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableReferenceValueType"),
              Core.projectionField = (Core.Name "bindingTableType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

bindingTableType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.FieldTypesSpecification -> Phantoms.TTerm Grammar.BindingTableType
bindingTableType binding fieldTypes =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingTableType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Phantoms.unTTerm binding)},
        Core.Field {
          Core.fieldName = (Core.Name "fieldTypes"),
          Core.fieldTerm = (Phantoms.unTTerm fieldTypes)}]}))

bindingTableTypeBinding :: Phantoms.TTerm Grammar.BindingTableType -> Phantoms.TTerm Bool
bindingTableTypeBinding x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableType"),
        Core.projectionField = (Core.Name "binding")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bindingTableTypeFieldTypes :: Phantoms.TTerm Grammar.BindingTableType -> Phantoms.TTerm Grammar.FieldTypesSpecification
bindingTableTypeFieldTypes x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableType"),
        Core.projectionField = (Core.Name "fieldTypes")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bindingTableTypeWithBinding :: Phantoms.TTerm Grammar.BindingTableType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BindingTableType
bindingTableTypeWithBinding original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingTableType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "fieldTypes"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableType"),
              Core.projectionField = (Core.Name "fieldTypes")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

bindingTableTypeWithFieldTypes :: Phantoms.TTerm Grammar.BindingTableType -> Phantoms.TTerm Grammar.FieldTypesSpecification -> Phantoms.TTerm Grammar.BindingTableType
bindingTableTypeWithFieldTypes original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingTableType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableType"),
              Core.projectionField = (Core.Name "binding")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "fieldTypes"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

bindingTableVariableDefinition :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BindingVariable -> Phantoms.TTerm Grammar.OptTypedBindingTableInitializer -> Phantoms.TTerm Grammar.BindingTableVariableDefinition
bindingTableVariableDefinition binding variable initializer =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Phantoms.unTTerm binding)},
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm variable)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm initializer)}]}))

bindingTableVariableDefinitionBinding :: Phantoms.TTerm Grammar.BindingTableVariableDefinition -> Phantoms.TTerm Bool
bindingTableVariableDefinitionBinding x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
        Core.projectionField = (Core.Name "binding")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bindingTableVariableDefinitionInitializer :: Phantoms.TTerm Grammar.BindingTableVariableDefinition -> Phantoms.TTerm Grammar.OptTypedBindingTableInitializer
bindingTableVariableDefinitionInitializer x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
        Core.projectionField = (Core.Name "initializer")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bindingTableVariableDefinitionVariable :: Phantoms.TTerm Grammar.BindingTableVariableDefinition -> Phantoms.TTerm Grammar.BindingVariable
bindingTableVariableDefinitionVariable x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
        Core.projectionField = (Core.Name "variable")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bindingTableVariableDefinitionWithBinding :: Phantoms.TTerm Grammar.BindingTableVariableDefinition -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BindingTableVariableDefinition
bindingTableVariableDefinitionWithBinding original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
              Core.projectionField = (Core.Name "initializer")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

bindingTableVariableDefinitionWithInitializer :: Phantoms.TTerm Grammar.BindingTableVariableDefinition -> Phantoms.TTerm Grammar.OptTypedBindingTableInitializer -> Phantoms.TTerm Grammar.BindingTableVariableDefinition
bindingTableVariableDefinitionWithInitializer original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
              Core.projectionField = (Core.Name "binding")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

bindingTableVariableDefinitionWithVariable :: Phantoms.TTerm Grammar.BindingTableVariableDefinition -> Phantoms.TTerm Grammar.BindingVariable -> Phantoms.TTerm Grammar.BindingTableVariableDefinition
bindingTableVariableDefinitionWithVariable original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
              Core.projectionField = (Core.Name "binding")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BindingTableVariableDefinition"),
              Core.projectionField = (Core.Name "initializer")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

bindingVariableDefinitionGraph :: Phantoms.TTerm Grammar.GraphVariableDefinition -> Phantoms.TTerm Grammar.BindingVariableDefinition
bindingVariableDefinitionGraph x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingVariableDefinition"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "graph"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bindingVariableDefinitionTable :: Phantoms.TTerm Grammar.BindingTableVariableDefinition -> Phantoms.TTerm Grammar.BindingVariableDefinition
bindingVariableDefinitionTable x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingVariableDefinition"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "table"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bindingVariableDefinitionValue :: Phantoms.TTerm Grammar.ValueVariableDefinition -> Phantoms.TTerm Grammar.BindingVariableDefinition
bindingVariableDefinitionValue x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BindingVariableDefinition"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "value"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

booleanLiteralFalse :: Phantoms.TTerm Grammar.BooleanLiteral
booleanLiteralFalse =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BooleanLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "false"),
        Core.fieldTerm = Core.TermUnit}}))

booleanLiteralTrue :: Phantoms.TTerm Grammar.BooleanLiteral
booleanLiteralTrue =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BooleanLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "true"),
        Core.fieldTerm = Core.TermUnit}}))

booleanLiteralUnknown :: Phantoms.TTerm Grammar.BooleanLiteral
booleanLiteralUnknown =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.BooleanLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "unknown"),
        Core.fieldTerm = Core.TermUnit}}))

booleanType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BooleanType
booleanType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BooleanType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

booleanTypeNotNull :: Phantoms.TTerm Grammar.BooleanType -> Phantoms.TTerm Bool
booleanTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BooleanType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

booleanTypeWithNotNull :: Phantoms.TTerm Grammar.BooleanType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BooleanType
booleanTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BooleanType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

byteStringTypeBinaryType :: Phantoms.TTerm Grammar.BinaryType -> Phantoms.TTerm Grammar.ByteStringType
byteStringTypeBinaryType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ByteStringType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "binaryType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

byteStringTypeBytesType :: Phantoms.TTerm Grammar.BytesType -> Phantoms.TTerm Grammar.ByteStringType
byteStringTypeBytesType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ByteStringType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "bytesType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

byteStringTypeVarbinaryType :: Phantoms.TTerm Grammar.VarbinaryType -> Phantoms.TTerm Grammar.ByteStringType
byteStringTypeVarbinaryType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ByteStringType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "varbinaryType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

bytesType :: Phantoms.TTerm (Maybe Grammar.MinLength) -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BytesType
bytesType minLength maxLength notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BytesType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "minLength"),
          Core.fieldTerm = (Phantoms.unTTerm minLength)},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm maxLength)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

bytesTypeMaxLength :: Phantoms.TTerm Grammar.BytesType -> Phantoms.TTerm (Maybe Grammar.MaxLength)
bytesTypeMaxLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BytesType"),
        Core.projectionField = (Core.Name "maxLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bytesTypeMinLength :: Phantoms.TTerm Grammar.BytesType -> Phantoms.TTerm (Maybe Grammar.MinLength)
bytesTypeMinLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BytesType"),
        Core.projectionField = (Core.Name "minLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bytesTypeNotNull :: Phantoms.TTerm Grammar.BytesType -> Phantoms.TTerm Bool
bytesTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.BytesType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

bytesTypeWithMaxLength :: Phantoms.TTerm Grammar.BytesType -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Grammar.BytesType
bytesTypeWithMaxLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BytesType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "minLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BytesType"),
              Core.projectionField = (Core.Name "minLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BytesType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

bytesTypeWithMinLength :: Phantoms.TTerm Grammar.BytesType -> Phantoms.TTerm (Maybe Grammar.MinLength) -> Phantoms.TTerm Grammar.BytesType
bytesTypeWithMinLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BytesType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "minLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BytesType"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BytesType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

bytesTypeWithNotNull :: Phantoms.TTerm Grammar.BytesType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.BytesType
bytesTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.BytesType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "minLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BytesType"),
              Core.projectionField = (Core.Name "minLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.BytesType"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

callProcedureStatement :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ProcedureCall -> Phantoms.TTerm Grammar.CallProcedureStatement
callProcedureStatement optional call =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CallProcedureStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "optional"),
          Core.fieldTerm = (Phantoms.unTTerm optional)},
        Core.Field {
          Core.fieldName = (Core.Name "call"),
          Core.fieldTerm = (Phantoms.unTTerm call)}]}))

callProcedureStatementCall :: Phantoms.TTerm Grammar.CallProcedureStatement -> Phantoms.TTerm Grammar.ProcedureCall
callProcedureStatementCall x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CallProcedureStatement"),
        Core.projectionField = (Core.Name "call")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

callProcedureStatementOptional :: Phantoms.TTerm Grammar.CallProcedureStatement -> Phantoms.TTerm Bool
callProcedureStatementOptional x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CallProcedureStatement"),
        Core.projectionField = (Core.Name "optional")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

callProcedureStatementWithCall :: Phantoms.TTerm Grammar.CallProcedureStatement -> Phantoms.TTerm Grammar.ProcedureCall -> Phantoms.TTerm Grammar.CallProcedureStatement
callProcedureStatementWithCall original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CallProcedureStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "optional"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CallProcedureStatement"),
              Core.projectionField = (Core.Name "optional")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "call"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

callProcedureStatementWithOptional :: Phantoms.TTerm Grammar.CallProcedureStatement -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CallProcedureStatement
callProcedureStatementWithOptional original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CallProcedureStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "optional"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "call"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CallProcedureStatement"),
              Core.projectionField = (Core.Name "call")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

cardinalityExpressionCardinality :: Phantoms.TTerm Grammar.CardinalityArgumentExpression -> Phantoms.TTerm Grammar.CardinalityExpression
cardinalityExpressionCardinality x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CardinalityExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "cardinality"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

cardinalityExpressionSize :: Phantoms.TTerm Grammar.ListValueExpression -> Phantoms.TTerm Grammar.CardinalityExpression
cardinalityExpressionSize x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CardinalityExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "size"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

caseAbbreviationCoalesce :: Phantoms.TTerm [Grammar.ValueExpression] -> Phantoms.TTerm Grammar.CaseAbbreviation
caseAbbreviationCoalesce x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CaseAbbreviation"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "coalesce"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

caseAbbreviationNullIf :: Phantoms.TTerm Grammar.NullIfAbbreviation -> Phantoms.TTerm Grammar.CaseAbbreviation
caseAbbreviationNullIf x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CaseAbbreviation"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nullIf"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

caseExpressionAbbreviation :: Phantoms.TTerm Grammar.CaseAbbreviation -> Phantoms.TTerm Grammar.CaseExpression
caseExpressionAbbreviation x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CaseExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "abbreviation"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

caseExpressionSpecification :: Phantoms.TTerm Grammar.CaseSpecification -> Phantoms.TTerm Grammar.CaseExpression
caseExpressionSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CaseExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "specification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

caseLower :: Phantoms.TTerm Grammar.Case
caseLower =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Case"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "lower"),
        Core.fieldTerm = Core.TermUnit}}))

caseOperandElementReference :: Phantoms.TTerm Grammar.ElementVariableReference -> Phantoms.TTerm Grammar.CaseOperand
caseOperandElementReference x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CaseOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "elementReference"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

caseOperandValueExpression :: Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpression -> Phantoms.TTerm Grammar.CaseOperand
caseOperandValueExpression x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CaseOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "valueExpression"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

caseSpecificationSearched :: Phantoms.TTerm Grammar.SearchedCase -> Phantoms.TTerm Grammar.CaseSpecification
caseSpecificationSearched x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CaseSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "searched"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

caseSpecificationSimple :: Phantoms.TTerm Grammar.SimpleCase -> Phantoms.TTerm Grammar.CaseSpecification
caseSpecificationSimple x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CaseSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "simple"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

caseUpper :: Phantoms.TTerm Grammar.Case
caseUpper =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Case"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "upper"),
        Core.fieldTerm = Core.TermUnit}}))

castOperandNullLiteral :: Phantoms.TTerm Grammar.CastOperand
castOperandNullLiteral =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CastOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nullLiteral"),
        Core.fieldTerm = Core.TermUnit}}))

castOperandValueExpression :: Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.CastOperand
castOperandValueExpression x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CastOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "valueExpression"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

castSpecification :: Phantoms.TTerm Grammar.CastOperand -> Phantoms.TTerm Grammar.CastTarget -> Phantoms.TTerm Grammar.CastSpecification
castSpecification operand target =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CastSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "operand"),
          Core.fieldTerm = (Phantoms.unTTerm operand)},
        Core.Field {
          Core.fieldName = (Core.Name "target"),
          Core.fieldTerm = (Phantoms.unTTerm target)}]}))

castSpecificationOperand :: Phantoms.TTerm Grammar.CastSpecification -> Phantoms.TTerm Grammar.CastOperand
castSpecificationOperand x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CastSpecification"),
        Core.projectionField = (Core.Name "operand")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

castSpecificationTarget :: Phantoms.TTerm Grammar.CastSpecification -> Phantoms.TTerm Grammar.CastTarget
castSpecificationTarget x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CastSpecification"),
        Core.projectionField = (Core.Name "target")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

castSpecificationWithOperand :: Phantoms.TTerm Grammar.CastSpecification -> Phantoms.TTerm Grammar.CastOperand -> Phantoms.TTerm Grammar.CastSpecification
castSpecificationWithOperand original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CastSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "operand"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "target"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CastSpecification"),
              Core.projectionField = (Core.Name "target")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

castSpecificationWithTarget :: Phantoms.TTerm Grammar.CastSpecification -> Phantoms.TTerm Grammar.CastTarget -> Phantoms.TTerm Grammar.CastSpecification
castSpecificationWithTarget original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CastSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "operand"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CastSpecification"),
              Core.projectionField = (Core.Name "operand")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "target"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

catalogGraphParentAndName :: Phantoms.TTerm (Maybe Grammar.CatalogObjectParentReference) -> Phantoms.TTerm Grammar.GraphName -> Phantoms.TTerm Grammar.CatalogGraphParentAndName
catalogGraphParentAndName parentReference graphName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CatalogGraphParentAndName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Phantoms.unTTerm parentReference)},
        Core.Field {
          Core.fieldName = (Core.Name "graphName"),
          Core.fieldTerm = (Phantoms.unTTerm graphName)}]}))

catalogGraphParentAndNameGraphName :: Phantoms.TTerm Grammar.CatalogGraphParentAndName -> Phantoms.TTerm Grammar.GraphName
catalogGraphParentAndNameGraphName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogGraphParentAndName"),
        Core.projectionField = (Core.Name "graphName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

catalogGraphParentAndNameParentReference :: Phantoms.TTerm Grammar.CatalogGraphParentAndName -> Phantoms.TTerm (Maybe Grammar.CatalogObjectParentReference)
catalogGraphParentAndNameParentReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogGraphParentAndName"),
        Core.projectionField = (Core.Name "parentReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

catalogGraphParentAndNameWithGraphName :: Phantoms.TTerm Grammar.CatalogGraphParentAndName -> Phantoms.TTerm Grammar.GraphName -> Phantoms.TTerm Grammar.CatalogGraphParentAndName
catalogGraphParentAndNameWithGraphName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CatalogGraphParentAndName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogGraphParentAndName"),
              Core.projectionField = (Core.Name "parentReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "graphName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

catalogGraphParentAndNameWithParentReference :: Phantoms.TTerm Grammar.CatalogGraphParentAndName -> Phantoms.TTerm (Maybe Grammar.CatalogObjectParentReference) -> Phantoms.TTerm Grammar.CatalogGraphParentAndName
catalogGraphParentAndNameWithParentReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CatalogGraphParentAndName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "graphName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogGraphParentAndName"),
              Core.projectionField = (Core.Name "graphName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

catalogGraphTypeParentAndName :: Phantoms.TTerm (Maybe Grammar.CatalogObjectParentReference) -> Phantoms.TTerm Grammar.GraphTypeName -> Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName
catalogGraphTypeParentAndName parentReference graphTypeName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CatalogGraphTypeParentAndName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Phantoms.unTTerm parentReference)},
        Core.Field {
          Core.fieldName = (Core.Name "graphTypeName"),
          Core.fieldTerm = (Phantoms.unTTerm graphTypeName)}]}))

catalogGraphTypeParentAndNameGraphTypeName :: Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName -> Phantoms.TTerm Grammar.GraphTypeName
catalogGraphTypeParentAndNameGraphTypeName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogGraphTypeParentAndName"),
        Core.projectionField = (Core.Name "graphTypeName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

catalogGraphTypeParentAndNameParentReference :: Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName -> Phantoms.TTerm (Maybe Grammar.CatalogObjectParentReference)
catalogGraphTypeParentAndNameParentReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogGraphTypeParentAndName"),
        Core.projectionField = (Core.Name "parentReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

catalogGraphTypeParentAndNameWithGraphTypeName :: Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName -> Phantoms.TTerm Grammar.GraphTypeName -> Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName
catalogGraphTypeParentAndNameWithGraphTypeName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CatalogGraphTypeParentAndName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogGraphTypeParentAndName"),
              Core.projectionField = (Core.Name "parentReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "graphTypeName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

catalogGraphTypeParentAndNameWithParentReference :: Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName -> Phantoms.TTerm (Maybe Grammar.CatalogObjectParentReference) -> Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName
catalogGraphTypeParentAndNameWithParentReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CatalogGraphTypeParentAndName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "graphTypeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogGraphTypeParentAndName"),
              Core.projectionField = (Core.Name "graphTypeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

catalogObjectParentReferenceObjectsOnly :: Phantoms.TTerm [Grammar.ObjectName] -> Phantoms.TTerm Grammar.CatalogObjectParentReference
catalogObjectParentReferenceObjectsOnly x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CatalogObjectParentReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "objectsOnly"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

catalogObjectParentReferenceSchemaAndObjects :: Phantoms.TTerm Grammar.SchemaAndObjects -> Phantoms.TTerm Grammar.CatalogObjectParentReference
catalogObjectParentReferenceSchemaAndObjects x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CatalogObjectParentReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "schemaAndObjects"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

catalogProcedureParentAndName :: Phantoms.TTerm (Maybe Grammar.CatalogObjectParentReference) -> Phantoms.TTerm Grammar.ProcedureName -> Phantoms.TTerm Grammar.CatalogProcedureParentAndName
catalogProcedureParentAndName parentReference procedureName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CatalogProcedureParentAndName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Phantoms.unTTerm parentReference)},
        Core.Field {
          Core.fieldName = (Core.Name "procedureName"),
          Core.fieldTerm = (Phantoms.unTTerm procedureName)}]}))

catalogProcedureParentAndNameParentReference :: Phantoms.TTerm Grammar.CatalogProcedureParentAndName -> Phantoms.TTerm (Maybe Grammar.CatalogObjectParentReference)
catalogProcedureParentAndNameParentReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogProcedureParentAndName"),
        Core.projectionField = (Core.Name "parentReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

catalogProcedureParentAndNameProcedureName :: Phantoms.TTerm Grammar.CatalogProcedureParentAndName -> Phantoms.TTerm Grammar.ProcedureName
catalogProcedureParentAndNameProcedureName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogProcedureParentAndName"),
        Core.projectionField = (Core.Name "procedureName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

catalogProcedureParentAndNameWithParentReference :: Phantoms.TTerm Grammar.CatalogProcedureParentAndName -> Phantoms.TTerm (Maybe Grammar.CatalogObjectParentReference) -> Phantoms.TTerm Grammar.CatalogProcedureParentAndName
catalogProcedureParentAndNameWithParentReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CatalogProcedureParentAndName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "procedureName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogProcedureParentAndName"),
              Core.projectionField = (Core.Name "procedureName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

catalogProcedureParentAndNameWithProcedureName :: Phantoms.TTerm Grammar.CatalogProcedureParentAndName -> Phantoms.TTerm Grammar.ProcedureName -> Phantoms.TTerm Grammar.CatalogProcedureParentAndName
catalogProcedureParentAndNameWithProcedureName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CatalogProcedureParentAndName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CatalogProcedureParentAndName"),
              Core.projectionField = (Core.Name "parentReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "procedureName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

charType :: Phantoms.TTerm (Maybe Grammar.FixedLength) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CharType
charType fixedLength notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CharType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "fixedLength"),
          Core.fieldTerm = (Phantoms.unTTerm fixedLength)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

charTypeFixedLength :: Phantoms.TTerm Grammar.CharType -> Phantoms.TTerm (Maybe Grammar.FixedLength)
charTypeFixedLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CharType"),
        Core.projectionField = (Core.Name "fixedLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

charTypeNotNull :: Phantoms.TTerm Grammar.CharType -> Phantoms.TTerm Bool
charTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CharType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

charTypeWithFixedLength :: Phantoms.TTerm Grammar.CharType -> Phantoms.TTerm (Maybe Grammar.FixedLength) -> Phantoms.TTerm Grammar.CharType
charTypeWithFixedLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CharType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "fixedLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CharType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

charTypeWithNotNull :: Phantoms.TTerm Grammar.CharType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CharType
charTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CharType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "fixedLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CharType"),
              Core.projectionField = (Core.Name "fixedLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

characterOrByteStringFunctionFold :: Phantoms.TTerm Grammar.FoldCharacterString -> Phantoms.TTerm Grammar.CharacterOrByteStringFunction
characterOrByteStringFunctionFold x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CharacterOrByteStringFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "fold"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

characterOrByteStringFunctionNormalize :: Phantoms.TTerm Grammar.NormalizeCharacterString -> Phantoms.TTerm Grammar.CharacterOrByteStringFunction
characterOrByteStringFunctionNormalize x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CharacterOrByteStringFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "normalize"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

characterOrByteStringFunctionSub :: Phantoms.TTerm Grammar.SubCharacterOrByteString -> Phantoms.TTerm Grammar.CharacterOrByteStringFunction
characterOrByteStringFunctionSub x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CharacterOrByteStringFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "sub"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

characterOrByteStringFunctionTrimMultiCharacter :: Phantoms.TTerm Grammar.TrimMultiCharacterCharacterString -> Phantoms.TTerm Grammar.CharacterOrByteStringFunction
characterOrByteStringFunctionTrimMultiCharacter x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CharacterOrByteStringFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "trimMultiCharacter"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

characterOrByteStringFunctionTrimSingle :: Phantoms.TTerm Grammar.TrimSingleCharacterOrByteString -> Phantoms.TTerm Grammar.CharacterOrByteStringFunction
characterOrByteStringFunctionTrimSingle x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CharacterOrByteStringFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "trimSingle"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

characterStringTypeCharType :: Phantoms.TTerm Grammar.CharType -> Phantoms.TTerm Grammar.CharacterStringType
characterStringTypeCharType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CharacterStringType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "charType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

characterStringTypeStringType :: Phantoms.TTerm Grammar.StringType -> Phantoms.TTerm Grammar.CharacterStringType
characterStringTypeStringType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CharacterStringType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "stringType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

characterStringTypeVarcharType :: Phantoms.TTerm Grammar.VarcharType -> Phantoms.TTerm Grammar.CharacterStringType
characterStringTypeVarcharType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CharacterStringType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "varcharType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

closedDynamicUnionTypeAlt1 :: Phantoms.TTerm (Maybe Bool) -> Phantoms.TTerm [Grammar.ValueType] -> Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt1
closedDynamicUnionTypeAlt1 anyValue valueTypes =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt1"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "anyValue"),
          Core.fieldTerm = (Phantoms.unTTerm anyValue)},
        Core.Field {
          Core.fieldName = (Core.Name "valueTypes"),
          Core.fieldTerm = (Phantoms.unTTerm valueTypes)}]}))

closedDynamicUnionTypeAlt1AnyValue :: Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt1 -> Phantoms.TTerm (Maybe Bool)
closedDynamicUnionTypeAlt1AnyValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt1"),
        Core.projectionField = (Core.Name "anyValue")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

closedDynamicUnionTypeAlt1ValueTypes :: Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt1 -> Phantoms.TTerm [Grammar.ValueType]
closedDynamicUnionTypeAlt1ValueTypes x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt1"),
        Core.projectionField = (Core.Name "valueTypes")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

closedDynamicUnionTypeAlt1WithAnyValue :: Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt1 -> Phantoms.TTerm (Maybe Bool) -> Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt1
closedDynamicUnionTypeAlt1WithAnyValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt1"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "anyValue"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueTypes"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt1"),
              Core.projectionField = (Core.Name "valueTypes")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

closedDynamicUnionTypeAlt1WithValueTypes :: Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt1 -> Phantoms.TTerm [Grammar.ValueType] -> Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt1
closedDynamicUnionTypeAlt1WithValueTypes original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt1"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "anyValue"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt1"),
              Core.projectionField = (Core.Name "anyValue")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueTypes"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

closedDynamicUnionTypeAlt2 :: Phantoms.TTerm [Grammar.ValueType] -> Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt2
closedDynamicUnionTypeAlt2 valueTypes =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueTypes"),
          Core.fieldTerm = (Phantoms.unTTerm valueTypes)}]}))

closedDynamicUnionTypeAlt2ValueTypes :: Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt2 -> Phantoms.TTerm [Grammar.ValueType]
closedDynamicUnionTypeAlt2ValueTypes x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt2"),
        Core.projectionField = (Core.Name "valueTypes")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

closedDynamicUnionTypeAlt2WithValueTypes :: Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt2 -> Phantoms.TTerm [Grammar.ValueType] -> Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt2
closedDynamicUnionTypeAlt2WithValueTypes original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueTypes"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

closedEdgeReferenceValueType :: Phantoms.TTerm Grammar.EdgeTypeSpecification -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ClosedEdgeReferenceValueType
closedEdgeReferenceValueType edgeTypeSpec notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedEdgeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "edgeTypeSpec"),
          Core.fieldTerm = (Phantoms.unTTerm edgeTypeSpec)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

closedEdgeReferenceValueTypeEdgeTypeSpec :: Phantoms.TTerm Grammar.ClosedEdgeReferenceValueType -> Phantoms.TTerm Grammar.EdgeTypeSpecification
closedEdgeReferenceValueTypeEdgeTypeSpec x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedEdgeReferenceValueType"),
        Core.projectionField = (Core.Name "edgeTypeSpec")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

closedEdgeReferenceValueTypeNotNull :: Phantoms.TTerm Grammar.ClosedEdgeReferenceValueType -> Phantoms.TTerm Bool
closedEdgeReferenceValueTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedEdgeReferenceValueType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

closedEdgeReferenceValueTypeWithEdgeTypeSpec :: Phantoms.TTerm Grammar.ClosedEdgeReferenceValueType -> Phantoms.TTerm Grammar.EdgeTypeSpecification -> Phantoms.TTerm Grammar.ClosedEdgeReferenceValueType
closedEdgeReferenceValueTypeWithEdgeTypeSpec original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedEdgeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "edgeTypeSpec"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedEdgeReferenceValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

closedEdgeReferenceValueTypeWithNotNull :: Phantoms.TTerm Grammar.ClosedEdgeReferenceValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ClosedEdgeReferenceValueType
closedEdgeReferenceValueTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedEdgeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "edgeTypeSpec"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedEdgeReferenceValueType"),
              Core.projectionField = (Core.Name "edgeTypeSpec")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

closedGraphReferenceValueType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.NestedGraphTypeSpecification -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ClosedGraphReferenceValueType
closedGraphReferenceValueType property nestedSpec notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Phantoms.unTTerm property)},
        Core.Field {
          Core.fieldName = (Core.Name "nestedSpec"),
          Core.fieldTerm = (Phantoms.unTTerm nestedSpec)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

closedGraphReferenceValueTypeNestedSpec :: Phantoms.TTerm Grammar.ClosedGraphReferenceValueType -> Phantoms.TTerm Grammar.NestedGraphTypeSpecification
closedGraphReferenceValueTypeNestedSpec x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
        Core.projectionField = (Core.Name "nestedSpec")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

closedGraphReferenceValueTypeNotNull :: Phantoms.TTerm Grammar.ClosedGraphReferenceValueType -> Phantoms.TTerm Bool
closedGraphReferenceValueTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

closedGraphReferenceValueTypeProperty :: Phantoms.TTerm Grammar.ClosedGraphReferenceValueType -> Phantoms.TTerm Bool
closedGraphReferenceValueTypeProperty x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
        Core.projectionField = (Core.Name "property")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

closedGraphReferenceValueTypeWithNestedSpec :: Phantoms.TTerm Grammar.ClosedGraphReferenceValueType -> Phantoms.TTerm Grammar.NestedGraphTypeSpecification -> Phantoms.TTerm Grammar.ClosedGraphReferenceValueType
closedGraphReferenceValueTypeWithNestedSpec original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
              Core.projectionField = (Core.Name "property")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nestedSpec"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

closedGraphReferenceValueTypeWithNotNull :: Phantoms.TTerm Grammar.ClosedGraphReferenceValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ClosedGraphReferenceValueType
closedGraphReferenceValueTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
              Core.projectionField = (Core.Name "property")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nestedSpec"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
              Core.projectionField = (Core.Name "nestedSpec")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

closedGraphReferenceValueTypeWithProperty :: Phantoms.TTerm Grammar.ClosedGraphReferenceValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ClosedGraphReferenceValueType
closedGraphReferenceValueTypeWithProperty original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "nestedSpec"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
              Core.projectionField = (Core.Name "nestedSpec")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedGraphReferenceValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

closedNodeReferenceValueType :: Phantoms.TTerm Grammar.NodeTypeSpecification -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ClosedNodeReferenceValueType
closedNodeReferenceValueType nodeTypeSpec notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedNodeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "nodeTypeSpec"),
          Core.fieldTerm = (Phantoms.unTTerm nodeTypeSpec)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

closedNodeReferenceValueTypeNodeTypeSpec :: Phantoms.TTerm Grammar.ClosedNodeReferenceValueType -> Phantoms.TTerm Grammar.NodeTypeSpecification
closedNodeReferenceValueTypeNodeTypeSpec x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedNodeReferenceValueType"),
        Core.projectionField = (Core.Name "nodeTypeSpec")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

closedNodeReferenceValueTypeNotNull :: Phantoms.TTerm Grammar.ClosedNodeReferenceValueType -> Phantoms.TTerm Bool
closedNodeReferenceValueTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedNodeReferenceValueType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

closedNodeReferenceValueTypeWithNodeTypeSpec :: Phantoms.TTerm Grammar.ClosedNodeReferenceValueType -> Phantoms.TTerm Grammar.NodeTypeSpecification -> Phantoms.TTerm Grammar.ClosedNodeReferenceValueType
closedNodeReferenceValueTypeWithNodeTypeSpec original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedNodeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "nodeTypeSpec"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedNodeReferenceValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

closedNodeReferenceValueTypeWithNotNull :: Phantoms.TTerm Grammar.ClosedNodeReferenceValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ClosedNodeReferenceValueType
closedNodeReferenceValueTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ClosedNodeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "nodeTypeSpec"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ClosedNodeReferenceValueType"),
              Core.projectionField = (Core.Name "nodeTypeSpec")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

compOpEquals :: Phantoms.TTerm Grammar.CompOp
compOpEquals =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CompOp"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "equals"),
        Core.fieldTerm = Core.TermUnit}}))

compOpGreaterThan :: Phantoms.TTerm Grammar.CompOp
compOpGreaterThan =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CompOp"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "greaterThan"),
        Core.fieldTerm = Core.TermUnit}}))

compOpGreaterThanOrEquals :: Phantoms.TTerm Grammar.CompOp
compOpGreaterThanOrEquals =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CompOp"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "greaterThanOrEquals"),
        Core.fieldTerm = Core.TermUnit}}))

compOpLessThan :: Phantoms.TTerm Grammar.CompOp
compOpLessThan =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CompOp"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "lessThan"),
        Core.fieldTerm = Core.TermUnit}}))

compOpLessThanOrEquals :: Phantoms.TTerm Grammar.CompOp
compOpLessThanOrEquals =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CompOp"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "lessThanOrEquals"),
        Core.fieldTerm = Core.TermUnit}}))

compOpNotEquals :: Phantoms.TTerm Grammar.CompOp
compOpNotEquals =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CompOp"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "notEquals"),
        Core.fieldTerm = Core.TermUnit}}))

comparisonExpr :: Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ComparisonPredicatePart2 -> Phantoms.TTerm Grammar.ComparisonExpr
comparisonExpr valueExpression comparison =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ComparisonExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "comparison"),
          Core.fieldTerm = (Phantoms.unTTerm comparison)}]}))

comparisonExprComparison :: Phantoms.TTerm Grammar.ComparisonExpr -> Phantoms.TTerm Grammar.ComparisonPredicatePart2
comparisonExprComparison x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ComparisonExpr"),
        Core.projectionField = (Core.Name "comparison")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

comparisonExprValueExpression :: Phantoms.TTerm Grammar.ComparisonExpr -> Phantoms.TTerm Grammar.ValueExpression
comparisonExprValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ComparisonExpr"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

comparisonExprWithComparison :: Phantoms.TTerm Grammar.ComparisonExpr -> Phantoms.TTerm Grammar.ComparisonPredicatePart2 -> Phantoms.TTerm Grammar.ComparisonExpr
comparisonExprWithComparison original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ComparisonExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ComparisonExpr"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "comparison"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

comparisonExprWithValueExpression :: Phantoms.TTerm Grammar.ComparisonExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ComparisonExpr
comparisonExprWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ComparisonExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "comparison"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ComparisonExpr"),
              Core.projectionField = (Core.Name "comparison")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

comparisonPredicatePart2 :: Phantoms.TTerm Grammar.CompOp -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ComparisonPredicatePart2
comparisonPredicatePart2 compOp valueExpression =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ComparisonPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "compOp"),
          Core.fieldTerm = (Phantoms.unTTerm compOp)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)}]}))

comparisonPredicatePart2CompOp :: Phantoms.TTerm Grammar.ComparisonPredicatePart2 -> Phantoms.TTerm Grammar.CompOp
comparisonPredicatePart2CompOp x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ComparisonPredicatePart2"),
        Core.projectionField = (Core.Name "compOp")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

comparisonPredicatePart2ValueExpression :: Phantoms.TTerm Grammar.ComparisonPredicatePart2 -> Phantoms.TTerm Grammar.ValueExpression
comparisonPredicatePart2ValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ComparisonPredicatePart2"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

comparisonPredicatePart2WithCompOp :: Phantoms.TTerm Grammar.ComparisonPredicatePart2 -> Phantoms.TTerm Grammar.CompOp -> Phantoms.TTerm Grammar.ComparisonPredicatePart2
comparisonPredicatePart2WithCompOp original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ComparisonPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "compOp"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ComparisonPredicatePart2"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

comparisonPredicatePart2WithValueExpression :: Phantoms.TTerm Grammar.ComparisonPredicatePart2 -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ComparisonPredicatePart2
comparisonPredicatePart2WithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ComparisonPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "compOp"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ComparisonPredicatePart2"),
              Core.projectionField = (Core.Name "compOp")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

compositeQueryExpressionConjunction :: Phantoms.TTerm Grammar.CompositeQueryExpression -> Phantoms.TTerm Grammar.QueryConjunction -> Phantoms.TTerm Grammar.CompositeQueryPrimary -> Phantoms.TTerm Grammar.CompositeQueryExpressionConjunction
compositeQueryExpressionConjunction left conjunction right =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm left)},
        Core.Field {
          Core.fieldName = (Core.Name "conjunction"),
          Core.fieldTerm = (Phantoms.unTTerm conjunction)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm right)}]}))

compositeQueryExpressionConjunctionConjunction :: Phantoms.TTerm Grammar.CompositeQueryExpressionConjunction -> Phantoms.TTerm Grammar.QueryConjunction
compositeQueryExpressionConjunctionConjunction x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
        Core.projectionField = (Core.Name "conjunction")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

compositeQueryExpressionConjunctionLeft :: Phantoms.TTerm Grammar.CompositeQueryExpressionConjunction -> Phantoms.TTerm Grammar.CompositeQueryExpression
compositeQueryExpressionConjunctionLeft x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
        Core.projectionField = (Core.Name "left")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

compositeQueryExpressionConjunctionRight :: Phantoms.TTerm Grammar.CompositeQueryExpressionConjunction -> Phantoms.TTerm Grammar.CompositeQueryPrimary
compositeQueryExpressionConjunctionRight x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
        Core.projectionField = (Core.Name "right")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

compositeQueryExpressionConjunctionWithConjunction :: Phantoms.TTerm Grammar.CompositeQueryExpressionConjunction -> Phantoms.TTerm Grammar.QueryConjunction -> Phantoms.TTerm Grammar.CompositeQueryExpressionConjunction
compositeQueryExpressionConjunctionWithConjunction original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "conjunction"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

compositeQueryExpressionConjunctionWithLeft :: Phantoms.TTerm Grammar.CompositeQueryExpressionConjunction -> Phantoms.TTerm Grammar.CompositeQueryExpression -> Phantoms.TTerm Grammar.CompositeQueryExpressionConjunction
compositeQueryExpressionConjunctionWithLeft original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "conjunction"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
              Core.projectionField = (Core.Name "conjunction")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

compositeQueryExpressionConjunctionWithRight :: Phantoms.TTerm Grammar.CompositeQueryExpressionConjunction -> Phantoms.TTerm Grammar.CompositeQueryPrimary -> Phantoms.TTerm Grammar.CompositeQueryExpressionConjunction
compositeQueryExpressionConjunctionWithRight original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "conjunction"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"),
              Core.projectionField = (Core.Name "conjunction")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

compositeQueryExpressionPrimary :: Phantoms.TTerm Grammar.CompositeQueryPrimary -> Phantoms.TTerm Grammar.CompositeQueryExpression
compositeQueryExpressionPrimary x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CompositeQueryExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "primary"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

compositeQueryExpressionSimple :: Phantoms.TTerm Grammar.CompositeQueryExpressionConjunction -> Phantoms.TTerm Grammar.CompositeQueryExpression
compositeQueryExpressionSimple x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CompositeQueryExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "simple"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

concatenationExpr :: Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ConcatenationExpr
concatenationExpr left right =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ConcatenationExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm left)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm right)}]}))

concatenationExprLeft :: Phantoms.TTerm Grammar.ConcatenationExpr -> Phantoms.TTerm Grammar.ValueExpression
concatenationExprLeft x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ConcatenationExpr"),
        Core.projectionField = (Core.Name "left")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

concatenationExprRight :: Phantoms.TTerm Grammar.ConcatenationExpr -> Phantoms.TTerm Grammar.ValueExpression
concatenationExprRight x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ConcatenationExpr"),
        Core.projectionField = (Core.Name "right")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

concatenationExprWithLeft :: Phantoms.TTerm Grammar.ConcatenationExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ConcatenationExpr
concatenationExprWithLeft original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ConcatenationExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ConcatenationExpr"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

concatenationExprWithRight :: Phantoms.TTerm Grammar.ConcatenationExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ConcatenationExpr
concatenationExprWithRight original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ConcatenationExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ConcatenationExpr"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

conjunctionLabelExpression :: Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.ConjunctionLabelExpression
conjunctionLabelExpression left right =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ConjunctionLabelExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm left)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm right)}]}))

conjunctionLabelExpressionLeft :: Phantoms.TTerm Grammar.ConjunctionLabelExpression -> Phantoms.TTerm Grammar.LabelExpression
conjunctionLabelExpressionLeft x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ConjunctionLabelExpression"),
        Core.projectionField = (Core.Name "left")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

conjunctionLabelExpressionRight :: Phantoms.TTerm Grammar.ConjunctionLabelExpression -> Phantoms.TTerm Grammar.LabelExpression
conjunctionLabelExpressionRight x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ConjunctionLabelExpression"),
        Core.projectionField = (Core.Name "right")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

conjunctionLabelExpressionWithLeft :: Phantoms.TTerm Grammar.ConjunctionLabelExpression -> Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.ConjunctionLabelExpression
conjunctionLabelExpressionWithLeft original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ConjunctionLabelExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ConjunctionLabelExpression"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

conjunctionLabelExpressionWithRight :: Phantoms.TTerm Grammar.ConjunctionLabelExpression -> Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.ConjunctionLabelExpression
conjunctionLabelExpressionWithRight original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ConjunctionLabelExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ConjunctionLabelExpression"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

conjunctiveExpr :: Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ConjunctiveExpr
conjunctiveExpr left right =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ConjunctiveExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm left)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm right)}]}))

conjunctiveExprLeft :: Phantoms.TTerm Grammar.ConjunctiveExpr -> Phantoms.TTerm Grammar.ValueExpression
conjunctiveExprLeft x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ConjunctiveExpr"),
        Core.projectionField = (Core.Name "left")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

conjunctiveExprRight :: Phantoms.TTerm Grammar.ConjunctiveExpr -> Phantoms.TTerm Grammar.ValueExpression
conjunctiveExprRight x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ConjunctiveExpr"),
        Core.projectionField = (Core.Name "right")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

conjunctiveExprWithLeft :: Phantoms.TTerm Grammar.ConjunctiveExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ConjunctiveExpr
conjunctiveExprWithLeft original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ConjunctiveExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ConjunctiveExpr"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

conjunctiveExprWithRight :: Phantoms.TTerm Grammar.ConjunctiveExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ConjunctiveExpr
conjunctiveExprWithRight original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ConjunctiveExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ConjunctiveExpr"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

connectorPointingRightRightArrow :: Phantoms.TTerm Grammar.ConnectorPointingRight
connectorPointingRightRightArrow =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ConnectorPointingRight"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "rightArrow"),
        Core.fieldTerm = Core.TermUnit}}))

connectorPointingRightTo :: Phantoms.TTerm Grammar.ConnectorPointingRight
connectorPointingRightTo =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ConnectorPointingRight"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "to"),
        Core.fieldTerm = Core.TermUnit}}))

connectorUndirectedTilde :: Phantoms.TTerm Grammar.ConnectorUndirected
connectorUndirectedTilde =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ConnectorUndirected"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "tilde"),
        Core.fieldTerm = Core.TermUnit}}))

connectorUndirectedTo :: Phantoms.TTerm Grammar.ConnectorUndirected
connectorUndirectedTo =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ConnectorUndirected"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "to"),
        Core.fieldTerm = Core.TermUnit}}))

countedShortestGroupSearch :: Phantoms.TTerm (Maybe Grammar.NumberOfGroups) -> Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CountedShortestGroupSearch
countedShortestGroupSearch numberOfGroups mode orPaths groups =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfGroups"),
          Core.fieldTerm = (Phantoms.unTTerm numberOfGroups)},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm mode)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm orPaths)},
        Core.Field {
          Core.fieldName = (Core.Name "groups"),
          Core.fieldTerm = (Phantoms.unTTerm groups)}]}))

countedShortestGroupSearchGroups :: Phantoms.TTerm Grammar.CountedShortestGroupSearch -> Phantoms.TTerm Bool
countedShortestGroupSearchGroups x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
        Core.projectionField = (Core.Name "groups")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

countedShortestGroupSearchMode :: Phantoms.TTerm Grammar.CountedShortestGroupSearch -> Phantoms.TTerm (Maybe Grammar.PathMode)
countedShortestGroupSearchMode x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
        Core.projectionField = (Core.Name "mode")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

countedShortestGroupSearchNumberOfGroups :: Phantoms.TTerm Grammar.CountedShortestGroupSearch -> Phantoms.TTerm (Maybe Grammar.NumberOfGroups)
countedShortestGroupSearchNumberOfGroups x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
        Core.projectionField = (Core.Name "numberOfGroups")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

countedShortestGroupSearchOrPaths :: Phantoms.TTerm Grammar.CountedShortestGroupSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths)
countedShortestGroupSearchOrPaths x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
        Core.projectionField = (Core.Name "orPaths")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

countedShortestGroupSearchWithGroups :: Phantoms.TTerm Grammar.CountedShortestGroupSearch -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CountedShortestGroupSearch
countedShortestGroupSearchWithGroups original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfGroups"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "numberOfGroups")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "mode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "orPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "groups"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

countedShortestGroupSearchWithMode :: Phantoms.TTerm Grammar.CountedShortestGroupSearch -> Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm Grammar.CountedShortestGroupSearch
countedShortestGroupSearchWithMode original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfGroups"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "numberOfGroups")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "orPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "groups"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "groups")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

countedShortestGroupSearchWithNumberOfGroups :: Phantoms.TTerm Grammar.CountedShortestGroupSearch -> Phantoms.TTerm (Maybe Grammar.NumberOfGroups) -> Phantoms.TTerm Grammar.CountedShortestGroupSearch
countedShortestGroupSearchWithNumberOfGroups original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfGroups"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "mode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "orPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "groups"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "groups")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

countedShortestGroupSearchWithOrPaths :: Phantoms.TTerm Grammar.CountedShortestGroupSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.CountedShortestGroupSearch
countedShortestGroupSearchWithOrPaths original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfGroups"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "numberOfGroups")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "mode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "groups"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestGroupSearch"),
              Core.projectionField = (Core.Name "groups")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

countedShortestPathSearch :: Phantoms.TTerm Grammar.NumberOfPaths -> Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.CountedShortestPathSearch
countedShortestPathSearch numberOfPaths mode orPaths =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfPaths"),
          Core.fieldTerm = (Phantoms.unTTerm numberOfPaths)},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm mode)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm orPaths)}]}))

countedShortestPathSearchMode :: Phantoms.TTerm Grammar.CountedShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathMode)
countedShortestPathSearchMode x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
        Core.projectionField = (Core.Name "mode")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

countedShortestPathSearchNumberOfPaths :: Phantoms.TTerm Grammar.CountedShortestPathSearch -> Phantoms.TTerm Grammar.NumberOfPaths
countedShortestPathSearchNumberOfPaths x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
        Core.projectionField = (Core.Name "numberOfPaths")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

countedShortestPathSearchOrPaths :: Phantoms.TTerm Grammar.CountedShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths)
countedShortestPathSearchOrPaths x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
        Core.projectionField = (Core.Name "orPaths")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

countedShortestPathSearchWithMode :: Phantoms.TTerm Grammar.CountedShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathMode) -> Phantoms.TTerm Grammar.CountedShortestPathSearch
countedShortestPathSearchWithMode original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
              Core.projectionField = (Core.Name "numberOfPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
              Core.projectionField = (Core.Name "orPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

countedShortestPathSearchWithNumberOfPaths :: Phantoms.TTerm Grammar.CountedShortestPathSearch -> Phantoms.TTerm Grammar.NumberOfPaths -> Phantoms.TTerm Grammar.CountedShortestPathSearch
countedShortestPathSearchWithNumberOfPaths original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfPaths"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
              Core.projectionField = (Core.Name "mode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
              Core.projectionField = (Core.Name "orPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

countedShortestPathSearchWithOrPaths :: Phantoms.TTerm Grammar.CountedShortestPathSearch -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.CountedShortestPathSearch
countedShortestPathSearchWithOrPaths original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "numberOfPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
              Core.projectionField = (Core.Name "numberOfPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CountedShortestPathSearch"),
              Core.projectionField = (Core.Name "mode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

createGraphOptionGraphIfNotExists :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CreateGraphOption
createGraphOptionGraphIfNotExists x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CreateGraphOption"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "graphIfNotExists"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

createGraphOptionOrReplace :: Phantoms.TTerm Grammar.CreateGraphOption
createGraphOptionOrReplace =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CreateGraphOption"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "orReplace"),
        Core.fieldTerm = Core.TermUnit}}))

createGraphStatement :: Phantoms.TTerm Grammar.CreateGraphOption -> Phantoms.TTerm Grammar.CatalogGraphParentAndName -> Phantoms.TTerm Grammar.GraphTypeOption -> Phantoms.TTerm (Maybe Grammar.GraphSource) -> Phantoms.TTerm Grammar.CreateGraphStatement
createGraphStatement createOption parentAndName type_ source =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "createOption"),
          Core.fieldTerm = (Phantoms.unTTerm createOption)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm parentAndName)},
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm type_)},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm source)}]}))

createGraphStatementCreateOption :: Phantoms.TTerm Grammar.CreateGraphStatement -> Phantoms.TTerm Grammar.CreateGraphOption
createGraphStatementCreateOption x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
        Core.projectionField = (Core.Name "createOption")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

createGraphStatementParentAndName :: Phantoms.TTerm Grammar.CreateGraphStatement -> Phantoms.TTerm Grammar.CatalogGraphParentAndName
createGraphStatementParentAndName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
        Core.projectionField = (Core.Name "parentAndName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

createGraphStatementSource :: Phantoms.TTerm Grammar.CreateGraphStatement -> Phantoms.TTerm (Maybe Grammar.GraphSource)
createGraphStatementSource x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
        Core.projectionField = (Core.Name "source")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

createGraphStatementType :: Phantoms.TTerm Grammar.CreateGraphStatement -> Phantoms.TTerm Grammar.GraphTypeOption
createGraphStatementType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
        Core.projectionField = (Core.Name "type")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

createGraphStatementWithCreateOption :: Phantoms.TTerm Grammar.CreateGraphStatement -> Phantoms.TTerm Grammar.CreateGraphOption -> Phantoms.TTerm Grammar.CreateGraphStatement
createGraphStatementWithCreateOption original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "createOption"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "parentAndName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "type")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

createGraphStatementWithParentAndName :: Phantoms.TTerm Grammar.CreateGraphStatement -> Phantoms.TTerm Grammar.CatalogGraphParentAndName -> Phantoms.TTerm Grammar.CreateGraphStatement
createGraphStatementWithParentAndName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "createOption"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "createOption")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "type")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

createGraphStatementWithSource :: Phantoms.TTerm Grammar.CreateGraphStatement -> Phantoms.TTerm (Maybe Grammar.GraphSource) -> Phantoms.TTerm Grammar.CreateGraphStatement
createGraphStatementWithSource original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "createOption"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "createOption")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "parentAndName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "type")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

createGraphStatementWithType :: Phantoms.TTerm Grammar.CreateGraphStatement -> Phantoms.TTerm Grammar.GraphTypeOption -> Phantoms.TTerm Grammar.CreateGraphStatement
createGraphStatementWithType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "createOption"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "createOption")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "parentAndName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphStatement"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

createGraphTypeOptionOrReplace :: Phantoms.TTerm Grammar.CreateGraphTypeOption
createGraphTypeOptionOrReplace =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CreateGraphTypeOption"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "orReplace"),
        Core.fieldTerm = Core.TermUnit}}))

createGraphTypeOptionTypeIfNotExists :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CreateGraphTypeOption
createGraphTypeOptionTypeIfNotExists x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CreateGraphTypeOption"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "typeIfNotExists"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

createGraphTypeStatement :: Phantoms.TTerm Grammar.CreateGraphTypeOption -> Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName -> Phantoms.TTerm Grammar.GraphTypeSource -> Phantoms.TTerm Grammar.CreateGraphTypeStatement
createGraphTypeStatement createOption parentAndName source =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "createOption"),
          Core.fieldTerm = (Phantoms.unTTerm createOption)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm parentAndName)},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm source)}]}))

createGraphTypeStatementCreateOption :: Phantoms.TTerm Grammar.CreateGraphTypeStatement -> Phantoms.TTerm Grammar.CreateGraphTypeOption
createGraphTypeStatementCreateOption x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
        Core.projectionField = (Core.Name "createOption")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

createGraphTypeStatementParentAndName :: Phantoms.TTerm Grammar.CreateGraphTypeStatement -> Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName
createGraphTypeStatementParentAndName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
        Core.projectionField = (Core.Name "parentAndName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

createGraphTypeStatementSource :: Phantoms.TTerm Grammar.CreateGraphTypeStatement -> Phantoms.TTerm Grammar.GraphTypeSource
createGraphTypeStatementSource x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
        Core.projectionField = (Core.Name "source")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

createGraphTypeStatementWithCreateOption :: Phantoms.TTerm Grammar.CreateGraphTypeStatement -> Phantoms.TTerm Grammar.CreateGraphTypeOption -> Phantoms.TTerm Grammar.CreateGraphTypeStatement
createGraphTypeStatementWithCreateOption original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "createOption"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
              Core.projectionField = (Core.Name "parentAndName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

createGraphTypeStatementWithParentAndName :: Phantoms.TTerm Grammar.CreateGraphTypeStatement -> Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName -> Phantoms.TTerm Grammar.CreateGraphTypeStatement
createGraphTypeStatementWithParentAndName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "createOption"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
              Core.projectionField = (Core.Name "createOption")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

createGraphTypeStatementWithSource :: Phantoms.TTerm Grammar.CreateGraphTypeStatement -> Phantoms.TTerm Grammar.GraphTypeSource -> Phantoms.TTerm Grammar.CreateGraphTypeStatement
createGraphTypeStatementWithSource original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "createOption"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
              Core.projectionField = (Core.Name "createOption")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateGraphTypeStatement"),
              Core.projectionField = (Core.Name "parentAndName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

createSchemaStatement :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CatalogSchemaParentAndName -> Phantoms.TTerm Grammar.CreateSchemaStatement
createSchemaStatement ifNotExists parentAndName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateSchemaStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifNotExists"),
          Core.fieldTerm = (Phantoms.unTTerm ifNotExists)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm parentAndName)}]}))

createSchemaStatementIfNotExists :: Phantoms.TTerm Grammar.CreateSchemaStatement -> Phantoms.TTerm Bool
createSchemaStatementIfNotExists x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CreateSchemaStatement"),
        Core.projectionField = (Core.Name "ifNotExists")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

createSchemaStatementParentAndName :: Phantoms.TTerm Grammar.CreateSchemaStatement -> Phantoms.TTerm Grammar.CatalogSchemaParentAndName
createSchemaStatementParentAndName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.CreateSchemaStatement"),
        Core.projectionField = (Core.Name "parentAndName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

createSchemaStatementWithIfNotExists :: Phantoms.TTerm Grammar.CreateSchemaStatement -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CreateSchemaStatement
createSchemaStatementWithIfNotExists original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateSchemaStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifNotExists"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateSchemaStatement"),
              Core.projectionField = (Core.Name "parentAndName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

createSchemaStatementWithParentAndName :: Phantoms.TTerm Grammar.CreateSchemaStatement -> Phantoms.TTerm Grammar.CatalogSchemaParentAndName -> Phantoms.TTerm Grammar.CreateSchemaStatement
createSchemaStatementWithParentAndName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.CreateSchemaStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifNotExists"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.CreateSchemaStatement"),
              Core.projectionField = (Core.Name "ifNotExists")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

currentGraphGraph :: Phantoms.TTerm Grammar.CurrentGraph
currentGraphGraph =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CurrentGraph"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "graph"),
        Core.fieldTerm = Core.TermUnit}}))

currentGraphPropertyGraph :: Phantoms.TTerm Grammar.CurrentGraph
currentGraphPropertyGraph =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.CurrentGraph"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "propertyGraph"),
        Core.fieldTerm = Core.TermUnit}}))

dateFunctionCurrentDate :: Phantoms.TTerm Grammar.DateFunction
dateFunctionCurrentDate =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DateFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "currentDate"),
        Core.fieldTerm = Core.TermUnit}}))

dateFunctionDateWithParams :: Phantoms.TTerm (Maybe Grammar.DateFunctionParameters) -> Phantoms.TTerm Grammar.DateFunction
dateFunctionDateWithParams x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DateFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "dateWithParams"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

dateFunctionParametersDateString :: Phantoms.TTerm Grammar.DateString -> Phantoms.TTerm Grammar.DateFunctionParameters
dateFunctionParametersDateString x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DateFunctionParameters"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "dateString"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

dateFunctionParametersRecordConstructor :: Phantoms.TTerm Grammar.RecordConstructor -> Phantoms.TTerm Grammar.DateFunctionParameters
dateFunctionParametersRecordConstructor x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DateFunctionParameters"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "recordConstructor"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

dateType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DateType
dateType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DateType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

dateTypeNotNull :: Phantoms.TTerm Grammar.DateType -> Phantoms.TTerm Bool
dateTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DateType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dateTypeWithNotNull :: Phantoms.TTerm Grammar.DateType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DateType
dateTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DateType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

datetimeFunctionCurrentTimestamp :: Phantoms.TTerm Grammar.DatetimeFunction
datetimeFunctionCurrentTimestamp =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DatetimeFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "currentTimestamp"),
        Core.fieldTerm = Core.TermUnit}}))

datetimeFunctionParametersDatetimeString :: Phantoms.TTerm Grammar.DatetimeString -> Phantoms.TTerm Grammar.DatetimeFunctionParameters
datetimeFunctionParametersDatetimeString x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DatetimeFunctionParameters"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "datetimeString"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

datetimeFunctionParametersRecordConstructor :: Phantoms.TTerm Grammar.RecordConstructor -> Phantoms.TTerm Grammar.DatetimeFunctionParameters
datetimeFunctionParametersRecordConstructor x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DatetimeFunctionParameters"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "recordConstructor"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

datetimeFunctionZonedDatetimeWithParams :: Phantoms.TTerm (Maybe Grammar.DatetimeFunctionParameters) -> Phantoms.TTerm Grammar.DatetimeFunction
datetimeFunctionZonedDatetimeWithParams x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DatetimeFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "zonedDatetimeWithParams"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

datetimeSubtraction :: Phantoms.TTerm Grammar.DatetimeSubtractionParameters -> Phantoms.TTerm (Maybe Grammar.TemporalDurationQualifier) -> Phantoms.TTerm Grammar.DatetimeSubtraction
datetimeSubtraction parameters temporalDurationQualifier =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DatetimeSubtraction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parameters"),
          Core.fieldTerm = (Phantoms.unTTerm parameters)},
        Core.Field {
          Core.fieldName = (Core.Name "temporalDurationQualifier"),
          Core.fieldTerm = (Phantoms.unTTerm temporalDurationQualifier)}]}))

datetimeSubtractionParameters :: Phantoms.TTerm Grammar.DatetimeSubtraction -> Phantoms.TTerm Grammar.DatetimeSubtractionParameters
datetimeSubtractionParameters x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DatetimeSubtraction"),
        Core.projectionField = (Core.Name "parameters")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

datetimeSubtractionParametersExpression1 :: Phantoms.TTerm Grammar.DatetimeSubtractionParameters -> Phantoms.TTerm Grammar.DatetimeValueExpression1
datetimeSubtractionParametersExpression1 x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DatetimeSubtractionParameters"),
        Core.projectionField = (Core.Name "expression1")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

datetimeSubtractionParametersExpression2 :: Phantoms.TTerm Grammar.DatetimeSubtractionParameters -> Phantoms.TTerm Grammar.DatetimeValueExpression2
datetimeSubtractionParametersExpression2 x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DatetimeSubtractionParameters"),
        Core.projectionField = (Core.Name "expression2")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

datetimeSubtractionParametersWithExpression1 :: Phantoms.TTerm Grammar.DatetimeSubtractionParameters -> Phantoms.TTerm Grammar.DatetimeValueExpression1 -> Phantoms.TTerm Grammar.DatetimeSubtractionParameters
datetimeSubtractionParametersWithExpression1 original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DatetimeSubtractionParameters"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "expression1"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "expression2"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DatetimeSubtractionParameters"),
              Core.projectionField = (Core.Name "expression2")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

datetimeSubtractionParametersWithExpression2 :: Phantoms.TTerm Grammar.DatetimeSubtractionParameters -> Phantoms.TTerm Grammar.DatetimeValueExpression2 -> Phantoms.TTerm Grammar.DatetimeSubtractionParameters
datetimeSubtractionParametersWithExpression2 original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DatetimeSubtractionParameters"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "expression1"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DatetimeSubtractionParameters"),
              Core.projectionField = (Core.Name "expression1")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "expression2"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

datetimeSubtractionParameters_ :: Phantoms.TTerm Grammar.DatetimeValueExpression1 -> Phantoms.TTerm Grammar.DatetimeValueExpression2 -> Phantoms.TTerm Grammar.DatetimeSubtractionParameters
datetimeSubtractionParameters_ expression1 expression2 =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DatetimeSubtractionParameters"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "expression1"),
          Core.fieldTerm = (Phantoms.unTTerm expression1)},
        Core.Field {
          Core.fieldName = (Core.Name "expression2"),
          Core.fieldTerm = (Phantoms.unTTerm expression2)}]}))

datetimeSubtractionTemporalDurationQualifier :: Phantoms.TTerm Grammar.DatetimeSubtraction -> Phantoms.TTerm (Maybe Grammar.TemporalDurationQualifier)
datetimeSubtractionTemporalDurationQualifier x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DatetimeSubtraction"),
        Core.projectionField = (Core.Name "temporalDurationQualifier")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

datetimeSubtractionWithParameters :: Phantoms.TTerm Grammar.DatetimeSubtraction -> Phantoms.TTerm Grammar.DatetimeSubtractionParameters -> Phantoms.TTerm Grammar.DatetimeSubtraction
datetimeSubtractionWithParameters original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DatetimeSubtraction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parameters"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "temporalDurationQualifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DatetimeSubtraction"),
              Core.projectionField = (Core.Name "temporalDurationQualifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

datetimeSubtractionWithTemporalDurationQualifier :: Phantoms.TTerm Grammar.DatetimeSubtraction -> Phantoms.TTerm (Maybe Grammar.TemporalDurationQualifier) -> Phantoms.TTerm Grammar.DatetimeSubtraction
datetimeSubtractionWithTemporalDurationQualifier original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DatetimeSubtraction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parameters"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DatetimeSubtraction"),
              Core.projectionField = (Core.Name "parameters")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "temporalDurationQualifier"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

datetimeTypeTimestampWithTimeZone :: Phantoms.TTerm Grammar.TimestampWithTimeZoneType -> Phantoms.TTerm Grammar.DatetimeType
datetimeTypeTimestampWithTimeZone x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DatetimeType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "timestampWithTimeZone"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

datetimeTypeZonedDatetime :: Phantoms.TTerm Grammar.ZonedDatetimeType -> Phantoms.TTerm Grammar.DatetimeType
datetimeTypeZonedDatetime x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DatetimeType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "zonedDatetime"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

datetimeValueFunctionDateFunction :: Phantoms.TTerm Grammar.DateFunction -> Phantoms.TTerm Grammar.DatetimeValueFunction
datetimeValueFunctionDateFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DatetimeValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "dateFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

datetimeValueFunctionDatetimeFunction :: Phantoms.TTerm Grammar.DatetimeFunction -> Phantoms.TTerm Grammar.DatetimeValueFunction
datetimeValueFunctionDatetimeFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DatetimeValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "datetimeFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

datetimeValueFunctionLocaldatetimeFunction :: Phantoms.TTerm Grammar.LocaldatetimeFunction -> Phantoms.TTerm Grammar.DatetimeValueFunction
datetimeValueFunctionLocaldatetimeFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DatetimeValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "localdatetimeFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

datetimeValueFunctionLocaltimeFunction :: Phantoms.TTerm Grammar.LocaltimeFunction -> Phantoms.TTerm Grammar.DatetimeValueFunction
datetimeValueFunctionLocaltimeFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DatetimeValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "localtimeFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

datetimeValueFunctionTimeFunction :: Phantoms.TTerm Grammar.TimeFunction -> Phantoms.TTerm Grammar.DatetimeValueFunction
datetimeValueFunctionTimeFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DatetimeValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "timeFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

deleteStatement :: Phantoms.TTerm (Maybe Grammar.DetachOption) -> Phantoms.TTerm Grammar.DeleteItemList -> Phantoms.TTerm Grammar.DeleteStatement
deleteStatement detach items =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DeleteStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "detach"),
          Core.fieldTerm = (Phantoms.unTTerm detach)},
        Core.Field {
          Core.fieldName = (Core.Name "items"),
          Core.fieldTerm = (Phantoms.unTTerm items)}]}))

deleteStatementDetach :: Phantoms.TTerm Grammar.DeleteStatement -> Phantoms.TTerm (Maybe Grammar.DetachOption)
deleteStatementDetach x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DeleteStatement"),
        Core.projectionField = (Core.Name "detach")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

deleteStatementItems :: Phantoms.TTerm Grammar.DeleteStatement -> Phantoms.TTerm Grammar.DeleteItemList
deleteStatementItems x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DeleteStatement"),
        Core.projectionField = (Core.Name "items")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

deleteStatementWithDetach :: Phantoms.TTerm Grammar.DeleteStatement -> Phantoms.TTerm (Maybe Grammar.DetachOption) -> Phantoms.TTerm Grammar.DeleteStatement
deleteStatementWithDetach original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DeleteStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "detach"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "items"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DeleteStatement"),
              Core.projectionField = (Core.Name "items")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

deleteStatementWithItems :: Phantoms.TTerm Grammar.DeleteStatement -> Phantoms.TTerm Grammar.DeleteItemList -> Phantoms.TTerm Grammar.DeleteStatement
deleteStatementWithItems original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DeleteStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "detach"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DeleteStatement"),
              Core.projectionField = (Core.Name "detach")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "items"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

dependentValueExpression :: Phantoms.TTerm (Maybe Grammar.SetQuantifier) -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.DependentValueExpression
dependentValueExpression setQuantifier numericValue =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DependentValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "setQuantifier"),
          Core.fieldTerm = (Phantoms.unTTerm setQuantifier)},
        Core.Field {
          Core.fieldName = (Core.Name "numericValue"),
          Core.fieldTerm = (Phantoms.unTTerm numericValue)}]}))

dependentValueExpressionNumericValue :: Phantoms.TTerm Grammar.DependentValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression
dependentValueExpressionNumericValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DependentValueExpression"),
        Core.projectionField = (Core.Name "numericValue")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dependentValueExpressionSetQuantifier :: Phantoms.TTerm Grammar.DependentValueExpression -> Phantoms.TTerm (Maybe Grammar.SetQuantifier)
dependentValueExpressionSetQuantifier x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DependentValueExpression"),
        Core.projectionField = (Core.Name "setQuantifier")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dependentValueExpressionWithNumericValue :: Phantoms.TTerm Grammar.DependentValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.DependentValueExpression
dependentValueExpressionWithNumericValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DependentValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "setQuantifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DependentValueExpression"),
              Core.projectionField = (Core.Name "setQuantifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "numericValue"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

dependentValueExpressionWithSetQuantifier :: Phantoms.TTerm Grammar.DependentValueExpression -> Phantoms.TTerm (Maybe Grammar.SetQuantifier) -> Phantoms.TTerm Grammar.DependentValueExpression
dependentValueExpressionWithSetQuantifier original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DependentValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "setQuantifier"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "numericValue"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DependentValueExpression"),
              Core.projectionField = (Core.Name "numericValue")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

destinationNodeTypeReferenceAlias :: Phantoms.TTerm Grammar.DestinationNodeTypeAlias -> Phantoms.TTerm Grammar.DestinationNodeTypeReference
destinationNodeTypeReferenceAlias x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DestinationNodeTypeReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "alias"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

destinationNodeTypeReferenceFiller :: Phantoms.TTerm (Maybe Grammar.NodeTypeFiller) -> Phantoms.TTerm Grammar.DestinationNodeTypeReference
destinationNodeTypeReferenceFiller x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DestinationNodeTypeReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "filler"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

destinationPredicate :: Phantoms.TTerm Grammar.NodeReference -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.EdgeReference -> Phantoms.TTerm Grammar.DestinationPredicate
destinationPredicate nodeReference not destinationOf =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "nodeReference"),
          Core.fieldTerm = (Phantoms.unTTerm nodeReference)},
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm not)},
        Core.Field {
          Core.fieldName = (Core.Name "destinationOf"),
          Core.fieldTerm = (Phantoms.unTTerm destinationOf)}]}))

destinationPredicateDestinationOf :: Phantoms.TTerm Grammar.DestinationPredicate -> Phantoms.TTerm Grammar.EdgeReference
destinationPredicateDestinationOf x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
        Core.projectionField = (Core.Name "destinationOf")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

destinationPredicateNodeReference :: Phantoms.TTerm Grammar.DestinationPredicate -> Phantoms.TTerm Grammar.NodeReference
destinationPredicateNodeReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
        Core.projectionField = (Core.Name "nodeReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

destinationPredicateNot :: Phantoms.TTerm Grammar.DestinationPredicate -> Phantoms.TTerm Bool
destinationPredicateNot x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
        Core.projectionField = (Core.Name "not")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

destinationPredicateWithDestinationOf :: Phantoms.TTerm Grammar.DestinationPredicate -> Phantoms.TTerm Grammar.EdgeReference -> Phantoms.TTerm Grammar.DestinationPredicate
destinationPredicateWithDestinationOf original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "nodeReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
              Core.projectionField = (Core.Name "nodeReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
              Core.projectionField = (Core.Name "not")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "destinationOf"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

destinationPredicateWithNodeReference :: Phantoms.TTerm Grammar.DestinationPredicate -> Phantoms.TTerm Grammar.NodeReference -> Phantoms.TTerm Grammar.DestinationPredicate
destinationPredicateWithNodeReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "nodeReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
              Core.projectionField = (Core.Name "not")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "destinationOf"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
              Core.projectionField = (Core.Name "destinationOf")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

destinationPredicateWithNot :: Phantoms.TTerm Grammar.DestinationPredicate -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DestinationPredicate
destinationPredicateWithNot original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "nodeReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
              Core.projectionField = (Core.Name "nodeReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "destinationOf"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DestinationPredicate"),
              Core.projectionField = (Core.Name "destinationOf")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

detachOptionDetach :: Phantoms.TTerm Grammar.DetachOption
detachOptionDetach =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DetachOption"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "detach"),
        Core.fieldTerm = Core.TermUnit}}))

detachOptionNoDetach :: Phantoms.TTerm Grammar.DetachOption
detachOptionNoDetach =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DetachOption"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "noDetach"),
        Core.fieldTerm = Core.TermUnit}}))

directedPredicate :: Phantoms.TTerm Grammar.ElementVariableReference -> Phantoms.TTerm Grammar.DirectedPredicatePart2 -> Phantoms.TTerm Grammar.DirectedPredicate
directedPredicate elementVariableReference directedPart =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DirectedPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "elementVariableReference"),
          Core.fieldTerm = (Phantoms.unTTerm elementVariableReference)},
        Core.Field {
          Core.fieldName = (Core.Name "directedPart"),
          Core.fieldTerm = (Phantoms.unTTerm directedPart)}]}))

directedPredicateDirectedPart :: Phantoms.TTerm Grammar.DirectedPredicate -> Phantoms.TTerm Grammar.DirectedPredicatePart2
directedPredicateDirectedPart x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DirectedPredicate"),
        Core.projectionField = (Core.Name "directedPart")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

directedPredicateElementVariableReference :: Phantoms.TTerm Grammar.DirectedPredicate -> Phantoms.TTerm Grammar.ElementVariableReference
directedPredicateElementVariableReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DirectedPredicate"),
        Core.projectionField = (Core.Name "elementVariableReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

directedPredicatePart2 :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DirectedPredicatePart2
directedPredicatePart2 not =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DirectedPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm not)}]}))

directedPredicatePart2Not :: Phantoms.TTerm Grammar.DirectedPredicatePart2 -> Phantoms.TTerm Bool
directedPredicatePart2Not x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DirectedPredicatePart2"),
        Core.projectionField = (Core.Name "not")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

directedPredicatePart2WithNot :: Phantoms.TTerm Grammar.DirectedPredicatePart2 -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DirectedPredicatePart2
directedPredicatePart2WithNot original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DirectedPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

directedPredicateWithDirectedPart :: Phantoms.TTerm Grammar.DirectedPredicate -> Phantoms.TTerm Grammar.DirectedPredicatePart2 -> Phantoms.TTerm Grammar.DirectedPredicate
directedPredicateWithDirectedPart original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DirectedPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "elementVariableReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DirectedPredicate"),
              Core.projectionField = (Core.Name "elementVariableReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "directedPart"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

directedPredicateWithElementVariableReference :: Phantoms.TTerm Grammar.DirectedPredicate -> Phantoms.TTerm Grammar.ElementVariableReference -> Phantoms.TTerm Grammar.DirectedPredicate
directedPredicateWithElementVariableReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DirectedPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "elementVariableReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "directedPart"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DirectedPredicate"),
              Core.projectionField = (Core.Name "directedPart")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

disjunctionLabelExpression :: Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.DisjunctionLabelExpression
disjunctionLabelExpression left right =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DisjunctionLabelExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm left)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm right)}]}))

disjunctionLabelExpressionLeft :: Phantoms.TTerm Grammar.DisjunctionLabelExpression -> Phantoms.TTerm Grammar.LabelExpression
disjunctionLabelExpressionLeft x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctionLabelExpression"),
        Core.projectionField = (Core.Name "left")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

disjunctionLabelExpressionRight :: Phantoms.TTerm Grammar.DisjunctionLabelExpression -> Phantoms.TTerm Grammar.LabelExpression
disjunctionLabelExpressionRight x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctionLabelExpression"),
        Core.projectionField = (Core.Name "right")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

disjunctionLabelExpressionWithLeft :: Phantoms.TTerm Grammar.DisjunctionLabelExpression -> Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.DisjunctionLabelExpression
disjunctionLabelExpressionWithLeft original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DisjunctionLabelExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctionLabelExpression"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

disjunctionLabelExpressionWithRight :: Phantoms.TTerm Grammar.DisjunctionLabelExpression -> Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.DisjunctionLabelExpression
disjunctionLabelExpressionWithRight original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DisjunctionLabelExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctionLabelExpression"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

disjunctiveExpr :: Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.DisjunctiveOperator -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.DisjunctiveExpr
disjunctiveExpr left operator right =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm left)},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Phantoms.unTTerm operator)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm right)}]}))

disjunctiveExprLeft :: Phantoms.TTerm Grammar.DisjunctiveExpr -> Phantoms.TTerm Grammar.ValueExpression
disjunctiveExprLeft x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
        Core.projectionField = (Core.Name "left")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

disjunctiveExprOperator :: Phantoms.TTerm Grammar.DisjunctiveExpr -> Phantoms.TTerm Grammar.DisjunctiveOperator
disjunctiveExprOperator x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
        Core.projectionField = (Core.Name "operator")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

disjunctiveExprRight :: Phantoms.TTerm Grammar.DisjunctiveExpr -> Phantoms.TTerm Grammar.ValueExpression
disjunctiveExprRight x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
        Core.projectionField = (Core.Name "right")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

disjunctiveExprWithLeft :: Phantoms.TTerm Grammar.DisjunctiveExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.DisjunctiveExpr
disjunctiveExprWithLeft original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
              Core.projectionField = (Core.Name "operator")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

disjunctiveExprWithOperator :: Phantoms.TTerm Grammar.DisjunctiveExpr -> Phantoms.TTerm Grammar.DisjunctiveOperator -> Phantoms.TTerm Grammar.DisjunctiveExpr
disjunctiveExprWithOperator original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

disjunctiveExprWithRight :: Phantoms.TTerm Grammar.DisjunctiveExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.DisjunctiveExpr
disjunctiveExprWithRight original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DisjunctiveExpr"),
              Core.projectionField = (Core.Name "operator")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

disjunctiveOperatorOr :: Phantoms.TTerm Grammar.DisjunctiveOperator
disjunctiveOperatorOr =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DisjunctiveOperator"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "or"),
        Core.fieldTerm = Core.TermUnit}}))

disjunctiveOperatorXor :: Phantoms.TTerm Grammar.DisjunctiveOperator
disjunctiveOperatorXor =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DisjunctiveOperator"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "xor"),
        Core.fieldTerm = Core.TermUnit}}))

doubleTypeWithPrecision :: Phantoms.TTerm Bool -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DoubleTypeWithPrecision
doubleTypeWithPrecision precision notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DoubleTypeWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Phantoms.unTTerm precision)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

doubleTypeWithPrecisionNotNull :: Phantoms.TTerm Grammar.DoubleTypeWithPrecision -> Phantoms.TTerm Bool
doubleTypeWithPrecisionNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DoubleTypeWithPrecision"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

doubleTypeWithPrecisionPrecision :: Phantoms.TTerm Grammar.DoubleTypeWithPrecision -> Phantoms.TTerm Bool
doubleTypeWithPrecisionPrecision x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DoubleTypeWithPrecision"),
        Core.projectionField = (Core.Name "precision")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

doubleTypeWithPrecisionWithNotNull :: Phantoms.TTerm Grammar.DoubleTypeWithPrecision -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DoubleTypeWithPrecision
doubleTypeWithPrecisionWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DoubleTypeWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DoubleTypeWithPrecision"),
              Core.projectionField = (Core.Name "precision")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

doubleTypeWithPrecisionWithPrecision :: Phantoms.TTerm Grammar.DoubleTypeWithPrecision -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DoubleTypeWithPrecision
doubleTypeWithPrecisionWithPrecision original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DoubleTypeWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DoubleTypeWithPrecision"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

dropGraphStatement :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CatalogGraphParentAndName -> Phantoms.TTerm Grammar.DropGraphStatement
dropGraphStatement ifExists parentAndName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DropGraphStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifExists"),
          Core.fieldTerm = (Phantoms.unTTerm ifExists)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm parentAndName)}]}))

dropGraphStatementIfExists :: Phantoms.TTerm Grammar.DropGraphStatement -> Phantoms.TTerm Bool
dropGraphStatementIfExists x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DropGraphStatement"),
        Core.projectionField = (Core.Name "ifExists")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dropGraphStatementParentAndName :: Phantoms.TTerm Grammar.DropGraphStatement -> Phantoms.TTerm Grammar.CatalogGraphParentAndName
dropGraphStatementParentAndName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DropGraphStatement"),
        Core.projectionField = (Core.Name "parentAndName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dropGraphStatementWithIfExists :: Phantoms.TTerm Grammar.DropGraphStatement -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DropGraphStatement
dropGraphStatementWithIfExists original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DropGraphStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifExists"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DropGraphStatement"),
              Core.projectionField = (Core.Name "parentAndName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

dropGraphStatementWithParentAndName :: Phantoms.TTerm Grammar.DropGraphStatement -> Phantoms.TTerm Grammar.CatalogGraphParentAndName -> Phantoms.TTerm Grammar.DropGraphStatement
dropGraphStatementWithParentAndName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DropGraphStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifExists"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DropGraphStatement"),
              Core.projectionField = (Core.Name "ifExists")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

dropGraphTypeStatement :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName -> Phantoms.TTerm Grammar.DropGraphTypeStatement
dropGraphTypeStatement ifExists parentAndName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DropGraphTypeStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifExists"),
          Core.fieldTerm = (Phantoms.unTTerm ifExists)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm parentAndName)}]}))

dropGraphTypeStatementIfExists :: Phantoms.TTerm Grammar.DropGraphTypeStatement -> Phantoms.TTerm Bool
dropGraphTypeStatementIfExists x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DropGraphTypeStatement"),
        Core.projectionField = (Core.Name "ifExists")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dropGraphTypeStatementParentAndName :: Phantoms.TTerm Grammar.DropGraphTypeStatement -> Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName
dropGraphTypeStatementParentAndName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DropGraphTypeStatement"),
        Core.projectionField = (Core.Name "parentAndName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dropGraphTypeStatementWithIfExists :: Phantoms.TTerm Grammar.DropGraphTypeStatement -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DropGraphTypeStatement
dropGraphTypeStatementWithIfExists original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DropGraphTypeStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifExists"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DropGraphTypeStatement"),
              Core.projectionField = (Core.Name "parentAndName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

dropGraphTypeStatementWithParentAndName :: Phantoms.TTerm Grammar.DropGraphTypeStatement -> Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName -> Phantoms.TTerm Grammar.DropGraphTypeStatement
dropGraphTypeStatementWithParentAndName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DropGraphTypeStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifExists"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DropGraphTypeStatement"),
              Core.projectionField = (Core.Name "ifExists")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

dropSchemaStatement :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.CatalogSchemaParentAndName -> Phantoms.TTerm Grammar.DropSchemaStatement
dropSchemaStatement ifExists parentAndName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DropSchemaStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifExists"),
          Core.fieldTerm = (Phantoms.unTTerm ifExists)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm parentAndName)}]}))

dropSchemaStatementIfExists :: Phantoms.TTerm Grammar.DropSchemaStatement -> Phantoms.TTerm Bool
dropSchemaStatementIfExists x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DropSchemaStatement"),
        Core.projectionField = (Core.Name "ifExists")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dropSchemaStatementParentAndName :: Phantoms.TTerm Grammar.DropSchemaStatement -> Phantoms.TTerm Grammar.CatalogSchemaParentAndName
dropSchemaStatementParentAndName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DropSchemaStatement"),
        Core.projectionField = (Core.Name "parentAndName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dropSchemaStatementWithIfExists :: Phantoms.TTerm Grammar.DropSchemaStatement -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DropSchemaStatement
dropSchemaStatementWithIfExists original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DropSchemaStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifExists"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DropSchemaStatement"),
              Core.projectionField = (Core.Name "parentAndName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

dropSchemaStatementWithParentAndName :: Phantoms.TTerm Grammar.DropSchemaStatement -> Phantoms.TTerm Grammar.CatalogSchemaParentAndName -> Phantoms.TTerm Grammar.DropSchemaStatement
dropSchemaStatementWithParentAndName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DropSchemaStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifExists"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DropSchemaStatement"),
              Core.projectionField = (Core.Name "ifExists")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "parentAndName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

durationFunctionParametersDurationString :: Phantoms.TTerm Grammar.DurationString -> Phantoms.TTerm Grammar.DurationFunctionParameters
durationFunctionParametersDurationString x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DurationFunctionParameters"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "durationString"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

durationFunctionParametersRecordConstructor :: Phantoms.TTerm Grammar.RecordConstructor -> Phantoms.TTerm Grammar.DurationFunctionParameters
durationFunctionParametersRecordConstructor x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DurationFunctionParameters"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "recordConstructor"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

durationValueFunctionAbsoluteValue :: Phantoms.TTerm Grammar.AbsoluteValueExpression -> Phantoms.TTerm Grammar.DurationValueFunction
durationValueFunctionAbsoluteValue x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DurationValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "absoluteValue"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

durationValueFunctionDurationFunction :: Phantoms.TTerm Grammar.DurationFunction -> Phantoms.TTerm Grammar.DurationValueFunction
durationValueFunctionDurationFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.DurationValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "durationFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

dynamicPropertyValueType :: Phantoms.TTerm (Maybe Bool) -> Phantoms.TTerm () -> Phantoms.TTerm () -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DynamicPropertyValueType
dynamicPropertyValueType any property value notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Phantoms.unTTerm any)},
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Phantoms.unTTerm property)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm value)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

dynamicPropertyValueTypeAny :: Phantoms.TTerm Grammar.DynamicPropertyValueType -> Phantoms.TTerm (Maybe Bool)
dynamicPropertyValueTypeAny x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
        Core.projectionField = (Core.Name "any")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dynamicPropertyValueTypeNotNull :: Phantoms.TTerm Grammar.DynamicPropertyValueType -> Phantoms.TTerm Bool
dynamicPropertyValueTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dynamicPropertyValueTypeProperty :: Phantoms.TTerm Grammar.DynamicPropertyValueType -> Phantoms.TTerm ()
dynamicPropertyValueTypeProperty x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
        Core.projectionField = (Core.Name "property")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dynamicPropertyValueTypeValue :: Phantoms.TTerm Grammar.DynamicPropertyValueType -> Phantoms.TTerm ()
dynamicPropertyValueTypeValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
        Core.projectionField = (Core.Name "value")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

dynamicPropertyValueTypeWithAny :: Phantoms.TTerm Grammar.DynamicPropertyValueType -> Phantoms.TTerm (Maybe Bool) -> Phantoms.TTerm Grammar.DynamicPropertyValueType
dynamicPropertyValueTypeWithAny original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "property")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

dynamicPropertyValueTypeWithNotNull :: Phantoms.TTerm Grammar.DynamicPropertyValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.DynamicPropertyValueType
dynamicPropertyValueTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "any")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "property")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

dynamicPropertyValueTypeWithProperty :: Phantoms.TTerm Grammar.DynamicPropertyValueType -> Phantoms.TTerm () -> Phantoms.TTerm Grammar.DynamicPropertyValueType
dynamicPropertyValueTypeWithProperty original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "any")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

dynamicPropertyValueTypeWithValue :: Phantoms.TTerm Grammar.DynamicPropertyValueType -> Phantoms.TTerm () -> Phantoms.TTerm Grammar.DynamicPropertyValueType
dynamicPropertyValueTypeWithValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "any")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "property")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.DynamicPropertyValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeBindingsOrEdgesEdgeBindings :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.EdgeBindingsOrEdges
edgeBindingsOrEdgesEdgeBindings x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeBindingsOrEdges"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "edgeBindings"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeBindingsOrEdgesEdges :: Phantoms.TTerm Grammar.EdgeBindingsOrEdges
edgeBindingsOrEdgesEdges =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeBindingsOrEdges"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "edges"),
        Core.fieldTerm = Core.TermUnit}}))

edgeKeyLabelSetWithContent :: Phantoms.TTerm Grammar.EdgeTypeKeyLabelSet -> Phantoms.TTerm (Maybe Grammar.EdgeTypeImpliedContent) -> Phantoms.TTerm Grammar.EdgeKeyLabelSetWithContent
edgeKeyLabelSetWithContent keyLabelSet impliedContent =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeKeyLabelSetWithContent"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "keyLabelSet"),
          Core.fieldTerm = (Phantoms.unTTerm keyLabelSet)},
        Core.Field {
          Core.fieldName = (Core.Name "impliedContent"),
          Core.fieldTerm = (Phantoms.unTTerm impliedContent)}]}))

edgeKeyLabelSetWithContentImpliedContent :: Phantoms.TTerm Grammar.EdgeKeyLabelSetWithContent -> Phantoms.TTerm (Maybe Grammar.EdgeTypeImpliedContent)
edgeKeyLabelSetWithContentImpliedContent x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKeyLabelSetWithContent"),
        Core.projectionField = (Core.Name "impliedContent")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeKeyLabelSetWithContentKeyLabelSet :: Phantoms.TTerm Grammar.EdgeKeyLabelSetWithContent -> Phantoms.TTerm Grammar.EdgeTypeKeyLabelSet
edgeKeyLabelSetWithContentKeyLabelSet x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKeyLabelSetWithContent"),
        Core.projectionField = (Core.Name "keyLabelSet")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeKeyLabelSetWithContentWithImpliedContent :: Phantoms.TTerm Grammar.EdgeKeyLabelSetWithContent -> Phantoms.TTerm (Maybe Grammar.EdgeTypeImpliedContent) -> Phantoms.TTerm Grammar.EdgeKeyLabelSetWithContent
edgeKeyLabelSetWithContentWithImpliedContent original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeKeyLabelSetWithContent"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "keyLabelSet"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKeyLabelSetWithContent"),
              Core.projectionField = (Core.Name "keyLabelSet")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "impliedContent"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

edgeKeyLabelSetWithContentWithKeyLabelSet :: Phantoms.TTerm Grammar.EdgeKeyLabelSetWithContent -> Phantoms.TTerm Grammar.EdgeTypeKeyLabelSet -> Phantoms.TTerm Grammar.EdgeKeyLabelSetWithContent
edgeKeyLabelSetWithContentWithKeyLabelSet original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeKeyLabelSetWithContent"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "keyLabelSet"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "impliedContent"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKeyLabelSetWithContent"),
              Core.projectionField = (Core.Name "impliedContent")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeKindAndSynonym :: Phantoms.TTerm (Maybe Grammar.EdgeKind) -> Phantoms.TTerm Grammar.EdgeSynonym -> Phantoms.TTerm (Maybe Grammar.EdgeTypeName) -> Phantoms.TTerm Grammar.EdgeKindAndSynonym
edgeKindAndSynonym kind synonym typeName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kind"),
          Core.fieldTerm = (Phantoms.unTTerm kind)},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Phantoms.unTTerm synonym)},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm typeName)}]}))

edgeKindAndSynonymKind :: Phantoms.TTerm Grammar.EdgeKindAndSynonym -> Phantoms.TTerm (Maybe Grammar.EdgeKind)
edgeKindAndSynonymKind x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
        Core.projectionField = (Core.Name "kind")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeKindAndSynonymSynonym :: Phantoms.TTerm Grammar.EdgeKindAndSynonym -> Phantoms.TTerm Grammar.EdgeSynonym
edgeKindAndSynonymSynonym x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
        Core.projectionField = (Core.Name "synonym")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeKindAndSynonymTypeName :: Phantoms.TTerm Grammar.EdgeKindAndSynonym -> Phantoms.TTerm (Maybe Grammar.EdgeTypeName)
edgeKindAndSynonymTypeName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
        Core.projectionField = (Core.Name "typeName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeKindAndSynonymWithKind :: Phantoms.TTerm Grammar.EdgeKindAndSynonym -> Phantoms.TTerm (Maybe Grammar.EdgeKind) -> Phantoms.TTerm Grammar.EdgeKindAndSynonym
edgeKindAndSynonymWithKind original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kind"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
              Core.projectionField = (Core.Name "synonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeKindAndSynonymWithSynonym :: Phantoms.TTerm Grammar.EdgeKindAndSynonym -> Phantoms.TTerm Grammar.EdgeSynonym -> Phantoms.TTerm Grammar.EdgeKindAndSynonym
edgeKindAndSynonymWithSynonym original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kind"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
              Core.projectionField = (Core.Name "kind")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeKindAndSynonymWithTypeName :: Phantoms.TTerm Grammar.EdgeKindAndSynonym -> Phantoms.TTerm (Maybe Grammar.EdgeTypeName) -> Phantoms.TTerm Grammar.EdgeKindAndSynonym
edgeKindAndSynonymWithTypeName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kind"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
              Core.projectionField = (Core.Name "kind")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeKindAndSynonym"),
              Core.projectionField = (Core.Name "synonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

edgeKindDirected :: Phantoms.TTerm Grammar.EdgeKind
edgeKindDirected =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeKind"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "directed"),
        Core.fieldTerm = Core.TermUnit}}))

edgeKindUndirected :: Phantoms.TTerm Grammar.EdgeKind
edgeKindUndirected =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeKind"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "undirected"),
        Core.fieldTerm = Core.TermUnit}}))

edgeLabelSetWithProperties :: Phantoms.TTerm Grammar.EdgeTypeLabelSet -> Phantoms.TTerm Grammar.EdgeTypePropertyTypes -> Phantoms.TTerm Grammar.EdgeLabelSetWithProperties
edgeLabelSetWithProperties labelSet propertyTypes =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeLabelSetWithProperties"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "labelSet"),
          Core.fieldTerm = (Phantoms.unTTerm labelSet)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyTypes"),
          Core.fieldTerm = (Phantoms.unTTerm propertyTypes)}]}))

edgeLabelSetWithPropertiesLabelSet :: Phantoms.TTerm Grammar.EdgeLabelSetWithProperties -> Phantoms.TTerm Grammar.EdgeTypeLabelSet
edgeLabelSetWithPropertiesLabelSet x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeLabelSetWithProperties"),
        Core.projectionField = (Core.Name "labelSet")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeLabelSetWithPropertiesPropertyTypes :: Phantoms.TTerm Grammar.EdgeLabelSetWithProperties -> Phantoms.TTerm Grammar.EdgeTypePropertyTypes
edgeLabelSetWithPropertiesPropertyTypes x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeLabelSetWithProperties"),
        Core.projectionField = (Core.Name "propertyTypes")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeLabelSetWithPropertiesWithLabelSet :: Phantoms.TTerm Grammar.EdgeLabelSetWithProperties -> Phantoms.TTerm Grammar.EdgeTypeLabelSet -> Phantoms.TTerm Grammar.EdgeLabelSetWithProperties
edgeLabelSetWithPropertiesWithLabelSet original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeLabelSetWithProperties"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "labelSet"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyTypes"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeLabelSetWithProperties"),
              Core.projectionField = (Core.Name "propertyTypes")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeLabelSetWithPropertiesWithPropertyTypes :: Phantoms.TTerm Grammar.EdgeLabelSetWithProperties -> Phantoms.TTerm Grammar.EdgeTypePropertyTypes -> Phantoms.TTerm Grammar.EdgeLabelSetWithProperties
edgeLabelSetWithPropertiesWithPropertyTypes original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeLabelSetWithProperties"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "labelSet"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeLabelSetWithProperties"),
              Core.projectionField = (Core.Name "labelSet")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "propertyTypes"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

edgePatternAbbreviatedEdge :: Phantoms.TTerm Grammar.AbbreviatedEdgePattern -> Phantoms.TTerm Grammar.EdgePattern
edgePatternAbbreviatedEdge x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "abbreviatedEdge"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgePatternFullEdge :: Phantoms.TTerm Grammar.FullEdgePattern -> Phantoms.TTerm Grammar.EdgePattern
edgePatternFullEdge x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "fullEdge"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeReferenceValueTypeClosed :: Phantoms.TTerm Grammar.ClosedEdgeReferenceValueType -> Phantoms.TTerm Grammar.EdgeReferenceValueType
edgeReferenceValueTypeClosed x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeReferenceValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "closed"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeReferenceValueTypeOpen :: Phantoms.TTerm Grammar.OpenEdgeReferenceValueType -> Phantoms.TTerm Grammar.EdgeReferenceValueType
edgeReferenceValueTypeOpen x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeReferenceValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "open"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeSynonymEdge :: Phantoms.TTerm Grammar.EdgeSynonym
edgeSynonymEdge =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeSynonym"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "edge"),
        Core.fieldTerm = Core.TermUnit}}))

edgeSynonymRelationship :: Phantoms.TTerm Grammar.EdgeSynonym
edgeSynonymRelationship =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeSynonym"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "relationship"),
        Core.fieldTerm = Core.TermUnit}}))

edgeTypeFillerImpliedContent :: Phantoms.TTerm Grammar.EdgeTypeImpliedContent -> Phantoms.TTerm Grammar.EdgeTypeFiller
edgeTypeFillerImpliedContent x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypeFiller"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "impliedContent"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypeFillerKeyLabelSetWithContent :: Phantoms.TTerm Grammar.EdgeKeyLabelSetWithContent -> Phantoms.TTerm Grammar.EdgeTypeFiller
edgeTypeFillerKeyLabelSetWithContent x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypeFiller"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "keyLabelSetWithContent"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypeImpliedContentLabelSet :: Phantoms.TTerm Grammar.EdgeTypeLabelSet -> Phantoms.TTerm Grammar.EdgeTypeImpliedContent
edgeTypeImpliedContentLabelSet x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypeImpliedContent"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "labelSet"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypeImpliedContentLabelSetWithProperties :: Phantoms.TTerm Grammar.EdgeLabelSetWithProperties -> Phantoms.TTerm Grammar.EdgeTypeImpliedContent
edgeTypeImpliedContentLabelSetWithProperties x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypeImpliedContent"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "labelSetWithProperties"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypeImpliedContentPropertyTypes :: Phantoms.TTerm Grammar.EdgeTypePropertyTypes -> Phantoms.TTerm Grammar.EdgeTypeImpliedContent
edgeTypeImpliedContentPropertyTypes x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypeImpliedContent"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "propertyTypes"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypeNameWithFiller :: Phantoms.TTerm Grammar.EdgeTypeName -> Phantoms.TTerm (Maybe Grammar.EdgeTypeFiller) -> Phantoms.TTerm Grammar.EdgeTypeNameWithFiller
edgeTypeNameWithFiller typeName filler =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypeNameWithFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm typeName)},
        Core.Field {
          Core.fieldName = (Core.Name "filler"),
          Core.fieldTerm = (Phantoms.unTTerm filler)}]}))

edgeTypeNameWithFillerFiller :: Phantoms.TTerm Grammar.EdgeTypeNameWithFiller -> Phantoms.TTerm (Maybe Grammar.EdgeTypeFiller)
edgeTypeNameWithFillerFiller x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypeNameWithFiller"),
        Core.projectionField = (Core.Name "filler")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypeNameWithFillerTypeName :: Phantoms.TTerm Grammar.EdgeTypeNameWithFiller -> Phantoms.TTerm Grammar.EdgeTypeName
edgeTypeNameWithFillerTypeName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypeNameWithFiller"),
        Core.projectionField = (Core.Name "typeName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypeNameWithFillerWithFiller :: Phantoms.TTerm Grammar.EdgeTypeNameWithFiller -> Phantoms.TTerm (Maybe Grammar.EdgeTypeFiller) -> Phantoms.TTerm Grammar.EdgeTypeNameWithFiller
edgeTypeNameWithFillerWithFiller original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypeNameWithFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypeNameWithFiller"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "filler"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

edgeTypeNameWithFillerWithTypeName :: Phantoms.TTerm Grammar.EdgeTypeNameWithFiller -> Phantoms.TTerm Grammar.EdgeTypeName -> Phantoms.TTerm Grammar.EdgeTypeNameWithFiller
edgeTypeNameWithFillerWithTypeName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypeNameWithFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "filler"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypeNameWithFiller"),
              Core.projectionField = (Core.Name "filler")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeTypePattern :: Phantoms.TTerm (Maybe Grammar.EdgeKindAndSynonym) -> Phantoms.TTerm Grammar.EdgeTypePatternType -> Phantoms.TTerm Grammar.EdgeTypePattern
edgeTypePattern kindAndSynonym patternType =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kindAndSynonym"),
          Core.fieldTerm = (Phantoms.unTTerm kindAndSynonym)},
        Core.Field {
          Core.fieldName = (Core.Name "patternType"),
          Core.fieldTerm = (Phantoms.unTTerm patternType)}]}))

edgeTypePatternDirectedPointingLeft :: Phantoms.TTerm Grammar.EdgeTypePatternPointingLeft -> Phantoms.TTerm Grammar.EdgeTypePatternDirected
edgeTypePatternDirectedPointingLeft x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternDirected"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pointingLeft"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypePatternDirectedPointingRight :: Phantoms.TTerm Grammar.EdgeTypePatternPointingRight -> Phantoms.TTerm Grammar.EdgeTypePatternDirected
edgeTypePatternDirectedPointingRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternDirected"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pointingRight"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypePatternKindAndSynonym :: Phantoms.TTerm Grammar.EdgeTypePattern -> Phantoms.TTerm (Maybe Grammar.EdgeKindAndSynonym)
edgeTypePatternKindAndSynonym x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePattern"),
        Core.projectionField = (Core.Name "kindAndSynonym")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePatternPatternType :: Phantoms.TTerm Grammar.EdgeTypePattern -> Phantoms.TTerm Grammar.EdgeTypePatternType
edgeTypePatternPatternType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePattern"),
        Core.projectionField = (Core.Name "patternType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePatternPointingLeft :: Phantoms.TTerm Grammar.DestinationNodeTypeReference -> Phantoms.TTerm Grammar.ArcTypePointingLeft -> Phantoms.TTerm Grammar.SourceNodeTypeReference -> Phantoms.TTerm Grammar.EdgeTypePatternPointingLeft
edgeTypePatternPointingLeft destination arc source =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Phantoms.unTTerm destination)},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Phantoms.unTTerm arc)},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm source)}]}))

edgeTypePatternPointingLeftArc :: Phantoms.TTerm Grammar.EdgeTypePatternPointingLeft -> Phantoms.TTerm Grammar.ArcTypePointingLeft
edgeTypePatternPointingLeftArc x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
        Core.projectionField = (Core.Name "arc")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePatternPointingLeftDestination :: Phantoms.TTerm Grammar.EdgeTypePatternPointingLeft -> Phantoms.TTerm Grammar.DestinationNodeTypeReference
edgeTypePatternPointingLeftDestination x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
        Core.projectionField = (Core.Name "destination")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePatternPointingLeftSource :: Phantoms.TTerm Grammar.EdgeTypePatternPointingLeft -> Phantoms.TTerm Grammar.SourceNodeTypeReference
edgeTypePatternPointingLeftSource x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
        Core.projectionField = (Core.Name "source")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePatternPointingLeftWithArc :: Phantoms.TTerm Grammar.EdgeTypePatternPointingLeft -> Phantoms.TTerm Grammar.ArcTypePointingLeft -> Phantoms.TTerm Grammar.EdgeTypePatternPointingLeft
edgeTypePatternPointingLeftWithArc original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
              Core.projectionField = (Core.Name "destination")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeTypePatternPointingLeftWithDestination :: Phantoms.TTerm Grammar.EdgeTypePatternPointingLeft -> Phantoms.TTerm Grammar.DestinationNodeTypeReference -> Phantoms.TTerm Grammar.EdgeTypePatternPointingLeft
edgeTypePatternPointingLeftWithDestination original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
              Core.projectionField = (Core.Name "arc")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeTypePatternPointingLeftWithSource :: Phantoms.TTerm Grammar.EdgeTypePatternPointingLeft -> Phantoms.TTerm Grammar.SourceNodeTypeReference -> Phantoms.TTerm Grammar.EdgeTypePatternPointingLeft
edgeTypePatternPointingLeftWithSource original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
              Core.projectionField = (Core.Name "destination")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"),
              Core.projectionField = (Core.Name "arc")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

edgeTypePatternPointingRight :: Phantoms.TTerm Grammar.SourceNodeTypeReference -> Phantoms.TTerm Grammar.ArcTypePointingRight -> Phantoms.TTerm Grammar.DestinationNodeTypeReference -> Phantoms.TTerm Grammar.EdgeTypePatternPointingRight
edgeTypePatternPointingRight source arc destination =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm source)},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Phantoms.unTTerm arc)},
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Phantoms.unTTerm destination)}]}))

edgeTypePatternPointingRightArc :: Phantoms.TTerm Grammar.EdgeTypePatternPointingRight -> Phantoms.TTerm Grammar.ArcTypePointingRight
edgeTypePatternPointingRightArc x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
        Core.projectionField = (Core.Name "arc")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePatternPointingRightDestination :: Phantoms.TTerm Grammar.EdgeTypePatternPointingRight -> Phantoms.TTerm Grammar.DestinationNodeTypeReference
edgeTypePatternPointingRightDestination x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
        Core.projectionField = (Core.Name "destination")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePatternPointingRightSource :: Phantoms.TTerm Grammar.EdgeTypePatternPointingRight -> Phantoms.TTerm Grammar.SourceNodeTypeReference
edgeTypePatternPointingRightSource x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
        Core.projectionField = (Core.Name "source")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePatternPointingRightWithArc :: Phantoms.TTerm Grammar.EdgeTypePatternPointingRight -> Phantoms.TTerm Grammar.ArcTypePointingRight -> Phantoms.TTerm Grammar.EdgeTypePatternPointingRight
edgeTypePatternPointingRightWithArc original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
              Core.projectionField = (Core.Name "destination")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeTypePatternPointingRightWithDestination :: Phantoms.TTerm Grammar.EdgeTypePatternPointingRight -> Phantoms.TTerm Grammar.DestinationNodeTypeReference -> Phantoms.TTerm Grammar.EdgeTypePatternPointingRight
edgeTypePatternPointingRightWithDestination original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
              Core.projectionField = (Core.Name "arc")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

edgeTypePatternPointingRightWithSource :: Phantoms.TTerm Grammar.EdgeTypePatternPointingRight -> Phantoms.TTerm Grammar.SourceNodeTypeReference -> Phantoms.TTerm Grammar.EdgeTypePatternPointingRight
edgeTypePatternPointingRightWithSource original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
              Core.projectionField = (Core.Name "arc")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternPointingRight"),
              Core.projectionField = (Core.Name "destination")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeTypePatternTypeDirected :: Phantoms.TTerm Grammar.EdgeTypePatternDirected -> Phantoms.TTerm Grammar.EdgeTypePatternType
edgeTypePatternTypeDirected x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "directed"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypePatternTypeUndirected :: Phantoms.TTerm Grammar.EdgeTypePatternUndirected -> Phantoms.TTerm Grammar.EdgeTypePatternType
edgeTypePatternTypeUndirected x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "undirected"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypePatternUndirected :: Phantoms.TTerm Grammar.SourceNodeTypeReference -> Phantoms.TTerm Grammar.ArcTypeUndirected -> Phantoms.TTerm Grammar.DestinationNodeTypeReference -> Phantoms.TTerm Grammar.EdgeTypePatternUndirected
edgeTypePatternUndirected source arc destination =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm source)},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Phantoms.unTTerm arc)},
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Phantoms.unTTerm destination)}]}))

edgeTypePatternUndirectedArc :: Phantoms.TTerm Grammar.EdgeTypePatternUndirected -> Phantoms.TTerm Grammar.ArcTypeUndirected
edgeTypePatternUndirectedArc x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
        Core.projectionField = (Core.Name "arc")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePatternUndirectedDestination :: Phantoms.TTerm Grammar.EdgeTypePatternUndirected -> Phantoms.TTerm Grammar.DestinationNodeTypeReference
edgeTypePatternUndirectedDestination x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
        Core.projectionField = (Core.Name "destination")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePatternUndirectedSource :: Phantoms.TTerm Grammar.EdgeTypePatternUndirected -> Phantoms.TTerm Grammar.SourceNodeTypeReference
edgeTypePatternUndirectedSource x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
        Core.projectionField = (Core.Name "source")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePatternUndirectedWithArc :: Phantoms.TTerm Grammar.EdgeTypePatternUndirected -> Phantoms.TTerm Grammar.ArcTypeUndirected -> Phantoms.TTerm Grammar.EdgeTypePatternUndirected
edgeTypePatternUndirectedWithArc original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
              Core.projectionField = (Core.Name "destination")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeTypePatternUndirectedWithDestination :: Phantoms.TTerm Grammar.EdgeTypePatternUndirected -> Phantoms.TTerm Grammar.DestinationNodeTypeReference -> Phantoms.TTerm Grammar.EdgeTypePatternUndirected
edgeTypePatternUndirectedWithDestination original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
              Core.projectionField = (Core.Name "arc")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

edgeTypePatternUndirectedWithSource :: Phantoms.TTerm Grammar.EdgeTypePatternUndirected -> Phantoms.TTerm Grammar.SourceNodeTypeReference -> Phantoms.TTerm Grammar.EdgeTypePatternUndirected
edgeTypePatternUndirectedWithSource original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "arc"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
              Core.projectionField = (Core.Name "arc")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "destination"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePatternUndirected"),
              Core.projectionField = (Core.Name "destination")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeTypePatternWithKindAndSynonym :: Phantoms.TTerm Grammar.EdgeTypePattern -> Phantoms.TTerm (Maybe Grammar.EdgeKindAndSynonym) -> Phantoms.TTerm Grammar.EdgeTypePattern
edgeTypePatternWithKindAndSynonym original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kindAndSynonym"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "patternType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePattern"),
              Core.projectionField = (Core.Name "patternType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeTypePatternWithPatternType :: Phantoms.TTerm Grammar.EdgeTypePattern -> Phantoms.TTerm Grammar.EdgeTypePatternType -> Phantoms.TTerm Grammar.EdgeTypePattern
edgeTypePatternWithPatternType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kindAndSynonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePattern"),
              Core.projectionField = (Core.Name "kindAndSynonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "patternType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

edgeTypePhrase :: Phantoms.TTerm Grammar.EdgeKind -> Phantoms.TTerm Grammar.EdgeSynonym -> Phantoms.TTerm Grammar.EdgeTypePhraseFiller -> Phantoms.TTerm Grammar.EndpointPairPhrase -> Phantoms.TTerm Grammar.EdgeTypePhrase
edgeTypePhrase kind synonym typeNameAndFiller endpointPair =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kind"),
          Core.fieldTerm = (Phantoms.unTTerm kind)},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Phantoms.unTTerm synonym)},
        Core.Field {
          Core.fieldName = (Core.Name "typeNameAndFiller"),
          Core.fieldTerm = (Phantoms.unTTerm typeNameAndFiller)},
        Core.Field {
          Core.fieldName = (Core.Name "endpointPair"),
          Core.fieldTerm = (Phantoms.unTTerm endpointPair)}]}))

edgeTypePhraseEndpointPair :: Phantoms.TTerm Grammar.EdgeTypePhrase -> Phantoms.TTerm Grammar.EndpointPairPhrase
edgeTypePhraseEndpointPair x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
        Core.projectionField = (Core.Name "endpointPair")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePhraseFillerFillerOnly :: Phantoms.TTerm Grammar.EdgeTypeFiller -> Phantoms.TTerm Grammar.EdgeTypePhraseFiller
edgeTypePhraseFillerFillerOnly x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhraseFiller"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "fillerOnly"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypePhraseFillerTypeNameWithFiller :: Phantoms.TTerm Grammar.EdgeTypeNameWithFiller -> Phantoms.TTerm Grammar.EdgeTypePhraseFiller
edgeTypePhraseFillerTypeNameWithFiller x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhraseFiller"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "typeNameWithFiller"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypePhraseKind :: Phantoms.TTerm Grammar.EdgeTypePhrase -> Phantoms.TTerm Grammar.EdgeKind
edgeTypePhraseKind x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
        Core.projectionField = (Core.Name "kind")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePhraseSynonym :: Phantoms.TTerm Grammar.EdgeTypePhrase -> Phantoms.TTerm Grammar.EdgeSynonym
edgeTypePhraseSynonym x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
        Core.projectionField = (Core.Name "synonym")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePhraseTypeNameAndFiller :: Phantoms.TTerm Grammar.EdgeTypePhrase -> Phantoms.TTerm Grammar.EdgeTypePhraseFiller
edgeTypePhraseTypeNameAndFiller x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
        Core.projectionField = (Core.Name "typeNameAndFiller")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

edgeTypePhraseWithEndpointPair :: Phantoms.TTerm Grammar.EdgeTypePhrase -> Phantoms.TTerm Grammar.EndpointPairPhrase -> Phantoms.TTerm Grammar.EdgeTypePhrase
edgeTypePhraseWithEndpointPair original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kind"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "kind")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "synonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typeNameAndFiller"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "typeNameAndFiller")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "endpointPair"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

edgeTypePhraseWithKind :: Phantoms.TTerm Grammar.EdgeTypePhrase -> Phantoms.TTerm Grammar.EdgeKind -> Phantoms.TTerm Grammar.EdgeTypePhrase
edgeTypePhraseWithKind original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kind"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "synonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typeNameAndFiller"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "typeNameAndFiller")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "endpointPair"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "endpointPair")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeTypePhraseWithSynonym :: Phantoms.TTerm Grammar.EdgeTypePhrase -> Phantoms.TTerm Grammar.EdgeSynonym -> Phantoms.TTerm Grammar.EdgeTypePhrase
edgeTypePhraseWithSynonym original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kind"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "kind")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "typeNameAndFiller"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "typeNameAndFiller")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "endpointPair"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "endpointPair")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeTypePhraseWithTypeNameAndFiller :: Phantoms.TTerm Grammar.EdgeTypePhrase -> Phantoms.TTerm Grammar.EdgeTypePhraseFiller -> Phantoms.TTerm Grammar.EdgeTypePhrase
edgeTypePhraseWithTypeNameAndFiller original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "kind"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "kind")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "synonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typeNameAndFiller"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "endpointPair"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EdgeTypePhrase"),
              Core.projectionField = (Core.Name "endpointPair")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

edgeTypeSpecificationPattern :: Phantoms.TTerm Grammar.EdgeTypePattern -> Phantoms.TTerm Grammar.EdgeTypeSpecification
edgeTypeSpecificationPattern x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypeSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pattern"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgeTypeSpecificationPhrase :: Phantoms.TTerm Grammar.EdgeTypePhrase -> Phantoms.TTerm Grammar.EdgeTypeSpecification
edgeTypeSpecificationPhrase x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgeTypeSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "phrase"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

edgesSynonymEdges :: Phantoms.TTerm Grammar.EdgesSynonym
edgesSynonymEdges =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgesSynonym"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "edges"),
        Core.fieldTerm = Core.TermUnit}}))

edgesSynonymRelationships :: Phantoms.TTerm Grammar.EdgesSynonym
edgesSynonymRelationships =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EdgesSynonym"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "relationships"),
        Core.fieldTerm = Core.TermUnit}}))

elementBindingsOrElementsElementBindings :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ElementBindingsOrElements
elementBindingsOrElementsElementBindings x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ElementBindingsOrElements"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "elementBindings"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

elementBindingsOrElementsElements :: Phantoms.TTerm Grammar.ElementBindingsOrElements
elementBindingsOrElementsElements =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ElementBindingsOrElements"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "elements"),
        Core.fieldTerm = Core.TermUnit}}))

elementPatternEdge :: Phantoms.TTerm Grammar.EdgePattern -> Phantoms.TTerm Grammar.ElementPattern
elementPatternEdge x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ElementPattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "edge"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

elementPatternFiller :: Phantoms.TTerm (Maybe Grammar.ElementVariableDeclaration) -> Phantoms.TTerm (Maybe Grammar.IsLabelExpression) -> Phantoms.TTerm (Maybe Grammar.ElementPatternPredicate) -> Phantoms.TTerm Grammar.ElementPatternFiller
elementPatternFiller variableDeclaration isLabelExpression predicate =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variableDeclaration"),
          Core.fieldTerm = (Phantoms.unTTerm variableDeclaration)},
        Core.Field {
          Core.fieldName = (Core.Name "isLabelExpression"),
          Core.fieldTerm = (Phantoms.unTTerm isLabelExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "predicate"),
          Core.fieldTerm = (Phantoms.unTTerm predicate)}]}))

elementPatternFillerIsLabelExpression :: Phantoms.TTerm Grammar.ElementPatternFiller -> Phantoms.TTerm (Maybe Grammar.IsLabelExpression)
elementPatternFillerIsLabelExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
        Core.projectionField = (Core.Name "isLabelExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

elementPatternFillerPredicate :: Phantoms.TTerm Grammar.ElementPatternFiller -> Phantoms.TTerm (Maybe Grammar.ElementPatternPredicate)
elementPatternFillerPredicate x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
        Core.projectionField = (Core.Name "predicate")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

elementPatternFillerVariableDeclaration :: Phantoms.TTerm Grammar.ElementPatternFiller -> Phantoms.TTerm (Maybe Grammar.ElementVariableDeclaration)
elementPatternFillerVariableDeclaration x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
        Core.projectionField = (Core.Name "variableDeclaration")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

elementPatternFillerWithIsLabelExpression :: Phantoms.TTerm Grammar.ElementPatternFiller -> Phantoms.TTerm (Maybe Grammar.IsLabelExpression) -> Phantoms.TTerm Grammar.ElementPatternFiller
elementPatternFillerWithIsLabelExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variableDeclaration"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
              Core.projectionField = (Core.Name "variableDeclaration")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "isLabelExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "predicate"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
              Core.projectionField = (Core.Name "predicate")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

elementPatternFillerWithPredicate :: Phantoms.TTerm Grammar.ElementPatternFiller -> Phantoms.TTerm (Maybe Grammar.ElementPatternPredicate) -> Phantoms.TTerm Grammar.ElementPatternFiller
elementPatternFillerWithPredicate original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variableDeclaration"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
              Core.projectionField = (Core.Name "variableDeclaration")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "isLabelExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
              Core.projectionField = (Core.Name "isLabelExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "predicate"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

elementPatternFillerWithVariableDeclaration :: Phantoms.TTerm Grammar.ElementPatternFiller -> Phantoms.TTerm (Maybe Grammar.ElementVariableDeclaration) -> Phantoms.TTerm Grammar.ElementPatternFiller
elementPatternFillerWithVariableDeclaration original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variableDeclaration"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "isLabelExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
              Core.projectionField = (Core.Name "isLabelExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "predicate"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ElementPatternFiller"),
              Core.projectionField = (Core.Name "predicate")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

elementPatternNode :: Phantoms.TTerm Grammar.NodePattern -> Phantoms.TTerm Grammar.ElementPattern
elementPatternNode x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ElementPattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "node"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

elementPatternPredicatePropertySpecification :: Phantoms.TTerm Grammar.ElementPropertySpecification -> Phantoms.TTerm Grammar.ElementPatternPredicate
elementPatternPredicatePropertySpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ElementPatternPredicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "propertySpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

elementPatternPredicateWhereClause :: Phantoms.TTerm Grammar.ElementPatternWhereClause -> Phantoms.TTerm Grammar.ElementPatternPredicate
elementPatternPredicateWhereClause x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ElementPatternPredicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "whereClause"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

elementTypeSpecificationEdgeType :: Phantoms.TTerm Grammar.EdgeTypeSpecification -> Phantoms.TTerm Grammar.ElementTypeSpecification
elementTypeSpecificationEdgeType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ElementTypeSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "edgeType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

elementTypeSpecificationNodeType :: Phantoms.TTerm Grammar.NodeTypeSpecification -> Phantoms.TTerm Grammar.ElementTypeSpecification
elementTypeSpecificationNodeType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ElementTypeSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nodeType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

elementVariableDeclaration :: Phantoms.TTerm (Maybe Bool) -> Phantoms.TTerm Grammar.ElementVariable -> Phantoms.TTerm Grammar.ElementVariableDeclaration
elementVariableDeclaration temp variable =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ElementVariableDeclaration"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "temp"),
          Core.fieldTerm = (Phantoms.unTTerm temp)},
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm variable)}]}))

elementVariableDeclarationTemp :: Phantoms.TTerm Grammar.ElementVariableDeclaration -> Phantoms.TTerm (Maybe Bool)
elementVariableDeclarationTemp x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ElementVariableDeclaration"),
        Core.projectionField = (Core.Name "temp")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

elementVariableDeclarationVariable :: Phantoms.TTerm Grammar.ElementVariableDeclaration -> Phantoms.TTerm Grammar.ElementVariable
elementVariableDeclarationVariable x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ElementVariableDeclaration"),
        Core.projectionField = (Core.Name "variable")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

elementVariableDeclarationWithTemp :: Phantoms.TTerm Grammar.ElementVariableDeclaration -> Phantoms.TTerm (Maybe Bool) -> Phantoms.TTerm Grammar.ElementVariableDeclaration
elementVariableDeclarationWithTemp original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ElementVariableDeclaration"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "temp"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ElementVariableDeclaration"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

elementVariableDeclarationWithVariable :: Phantoms.TTerm Grammar.ElementVariableDeclaration -> Phantoms.TTerm Grammar.ElementVariable -> Phantoms.TTerm Grammar.ElementVariableDeclaration
elementVariableDeclarationWithVariable original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ElementVariableDeclaration"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "temp"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ElementVariableDeclaration"),
              Core.projectionField = (Core.Name "temp")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

endTransactionCommandCommit :: Phantoms.TTerm Grammar.CommitCommand -> Phantoms.TTerm Grammar.EndTransactionCommand
endTransactionCommandCommit x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EndTransactionCommand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "commit"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

endTransactionCommandRollback :: Phantoms.TTerm Grammar.RollbackCommand -> Phantoms.TTerm Grammar.EndTransactionCommand
endTransactionCommandRollback x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EndTransactionCommand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "rollback"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

endpointPairDirectedPair :: Phantoms.TTerm Grammar.EndpointPairDirected -> Phantoms.TTerm Grammar.EndpointPair
endpointPairDirectedPair x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EndpointPair"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "directedPair"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

endpointPairDirectedPointingLeft :: Phantoms.TTerm Grammar.EndpointPairPointingLeft -> Phantoms.TTerm Grammar.EndpointPairDirected
endpointPairDirectedPointingLeft x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EndpointPairDirected"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pointingLeft"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

endpointPairDirectedPointingRight :: Phantoms.TTerm Grammar.EndpointPairPointingRight -> Phantoms.TTerm Grammar.EndpointPairDirected
endpointPairDirectedPointingRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EndpointPairDirected"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pointingRight"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

endpointPairPointingLeft :: Phantoms.TTerm Grammar.DestinationNodeTypeAlias -> Phantoms.TTerm Grammar.SourceNodeTypeAlias -> Phantoms.TTerm Grammar.EndpointPairPointingLeft
endpointPairPointingLeft destinationAlias sourceAlias =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EndpointPairPointingLeft"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "destinationAlias"),
          Core.fieldTerm = (Phantoms.unTTerm destinationAlias)},
        Core.Field {
          Core.fieldName = (Core.Name "sourceAlias"),
          Core.fieldTerm = (Phantoms.unTTerm sourceAlias)}]}))

endpointPairPointingLeftDestinationAlias :: Phantoms.TTerm Grammar.EndpointPairPointingLeft -> Phantoms.TTerm Grammar.DestinationNodeTypeAlias
endpointPairPointingLeftDestinationAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingLeft"),
        Core.projectionField = (Core.Name "destinationAlias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

endpointPairPointingLeftSourceAlias :: Phantoms.TTerm Grammar.EndpointPairPointingLeft -> Phantoms.TTerm Grammar.SourceNodeTypeAlias
endpointPairPointingLeftSourceAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingLeft"),
        Core.projectionField = (Core.Name "sourceAlias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

endpointPairPointingLeftWithDestinationAlias :: Phantoms.TTerm Grammar.EndpointPairPointingLeft -> Phantoms.TTerm Grammar.DestinationNodeTypeAlias -> Phantoms.TTerm Grammar.EndpointPairPointingLeft
endpointPairPointingLeftWithDestinationAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EndpointPairPointingLeft"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "destinationAlias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "sourceAlias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingLeft"),
              Core.projectionField = (Core.Name "sourceAlias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

endpointPairPointingLeftWithSourceAlias :: Phantoms.TTerm Grammar.EndpointPairPointingLeft -> Phantoms.TTerm Grammar.SourceNodeTypeAlias -> Phantoms.TTerm Grammar.EndpointPairPointingLeft
endpointPairPointingLeftWithSourceAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EndpointPairPointingLeft"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "destinationAlias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingLeft"),
              Core.projectionField = (Core.Name "destinationAlias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "sourceAlias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

endpointPairPointingRight :: Phantoms.TTerm Grammar.SourceNodeTypeAlias -> Phantoms.TTerm Grammar.ConnectorPointingRight -> Phantoms.TTerm Grammar.DestinationNodeTypeAlias -> Phantoms.TTerm Grammar.EndpointPairPointingRight
endpointPairPointingRight sourceAlias connector destinationAlias =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sourceAlias"),
          Core.fieldTerm = (Phantoms.unTTerm sourceAlias)},
        Core.Field {
          Core.fieldName = (Core.Name "connector"),
          Core.fieldTerm = (Phantoms.unTTerm connector)},
        Core.Field {
          Core.fieldName = (Core.Name "destinationAlias"),
          Core.fieldTerm = (Phantoms.unTTerm destinationAlias)}]}))

endpointPairPointingRightConnector :: Phantoms.TTerm Grammar.EndpointPairPointingRight -> Phantoms.TTerm Grammar.ConnectorPointingRight
endpointPairPointingRightConnector x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
        Core.projectionField = (Core.Name "connector")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

endpointPairPointingRightDestinationAlias :: Phantoms.TTerm Grammar.EndpointPairPointingRight -> Phantoms.TTerm Grammar.DestinationNodeTypeAlias
endpointPairPointingRightDestinationAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
        Core.projectionField = (Core.Name "destinationAlias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

endpointPairPointingRightSourceAlias :: Phantoms.TTerm Grammar.EndpointPairPointingRight -> Phantoms.TTerm Grammar.SourceNodeTypeAlias
endpointPairPointingRightSourceAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
        Core.projectionField = (Core.Name "sourceAlias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

endpointPairPointingRightWithConnector :: Phantoms.TTerm Grammar.EndpointPairPointingRight -> Phantoms.TTerm Grammar.ConnectorPointingRight -> Phantoms.TTerm Grammar.EndpointPairPointingRight
endpointPairPointingRightWithConnector original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sourceAlias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
              Core.projectionField = (Core.Name "sourceAlias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "connector"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "destinationAlias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
              Core.projectionField = (Core.Name "destinationAlias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

endpointPairPointingRightWithDestinationAlias :: Phantoms.TTerm Grammar.EndpointPairPointingRight -> Phantoms.TTerm Grammar.DestinationNodeTypeAlias -> Phantoms.TTerm Grammar.EndpointPairPointingRight
endpointPairPointingRightWithDestinationAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sourceAlias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
              Core.projectionField = (Core.Name "sourceAlias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "connector"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
              Core.projectionField = (Core.Name "connector")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "destinationAlias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

endpointPairPointingRightWithSourceAlias :: Phantoms.TTerm Grammar.EndpointPairPointingRight -> Phantoms.TTerm Grammar.SourceNodeTypeAlias -> Phantoms.TTerm Grammar.EndpointPairPointingRight
endpointPairPointingRightWithSourceAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sourceAlias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "connector"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
              Core.projectionField = (Core.Name "connector")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "destinationAlias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairPointingRight"),
              Core.projectionField = (Core.Name "destinationAlias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

endpointPairUndirected :: Phantoms.TTerm Grammar.SourceNodeTypeAlias -> Phantoms.TTerm Grammar.ConnectorUndirected -> Phantoms.TTerm Grammar.DestinationNodeTypeAlias -> Phantoms.TTerm Grammar.EndpointPairUndirected
endpointPairUndirected sourceAlias connector destinationAlias =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sourceAlias"),
          Core.fieldTerm = (Phantoms.unTTerm sourceAlias)},
        Core.Field {
          Core.fieldName = (Core.Name "connector"),
          Core.fieldTerm = (Phantoms.unTTerm connector)},
        Core.Field {
          Core.fieldName = (Core.Name "destinationAlias"),
          Core.fieldTerm = (Phantoms.unTTerm destinationAlias)}]}))

endpointPairUndirectedConnector :: Phantoms.TTerm Grammar.EndpointPairUndirected -> Phantoms.TTerm Grammar.ConnectorUndirected
endpointPairUndirectedConnector x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
        Core.projectionField = (Core.Name "connector")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

endpointPairUndirectedDestinationAlias :: Phantoms.TTerm Grammar.EndpointPairUndirected -> Phantoms.TTerm Grammar.DestinationNodeTypeAlias
endpointPairUndirectedDestinationAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
        Core.projectionField = (Core.Name "destinationAlias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

endpointPairUndirectedPair :: Phantoms.TTerm Grammar.EndpointPairUndirected -> Phantoms.TTerm Grammar.EndpointPair
endpointPairUndirectedPair x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.EndpointPair"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "undirectedPair"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

endpointPairUndirectedSourceAlias :: Phantoms.TTerm Grammar.EndpointPairUndirected -> Phantoms.TTerm Grammar.SourceNodeTypeAlias
endpointPairUndirectedSourceAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
        Core.projectionField = (Core.Name "sourceAlias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

endpointPairUndirectedWithConnector :: Phantoms.TTerm Grammar.EndpointPairUndirected -> Phantoms.TTerm Grammar.ConnectorUndirected -> Phantoms.TTerm Grammar.EndpointPairUndirected
endpointPairUndirectedWithConnector original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sourceAlias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
              Core.projectionField = (Core.Name "sourceAlias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "connector"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "destinationAlias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
              Core.projectionField = (Core.Name "destinationAlias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

endpointPairUndirectedWithDestinationAlias :: Phantoms.TTerm Grammar.EndpointPairUndirected -> Phantoms.TTerm Grammar.DestinationNodeTypeAlias -> Phantoms.TTerm Grammar.EndpointPairUndirected
endpointPairUndirectedWithDestinationAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sourceAlias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
              Core.projectionField = (Core.Name "sourceAlias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "connector"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
              Core.projectionField = (Core.Name "connector")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "destinationAlias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

endpointPairUndirectedWithSourceAlias :: Phantoms.TTerm Grammar.EndpointPairUndirected -> Phantoms.TTerm Grammar.SourceNodeTypeAlias -> Phantoms.TTerm Grammar.EndpointPairUndirected
endpointPairUndirectedWithSourceAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sourceAlias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "connector"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
              Core.projectionField = (Core.Name "connector")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "destinationAlias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.EndpointPairUndirected"),
              Core.projectionField = (Core.Name "destinationAlias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

exactNumericLiteralCommonWithSuffix :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.ExactNumericLiteral
exactNumericLiteralCommonWithSuffix x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExactNumericLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "commonWithSuffix"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

exactNumericLiteralCommonWithoutSuffix :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.ExactNumericLiteral
exactNumericLiteralCommonWithoutSuffix x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExactNumericLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "commonWithoutSuffix"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

exactNumericLiteralIntegerWithSuffix :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.ExactNumericLiteral
exactNumericLiteralIntegerWithSuffix x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExactNumericLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "integerWithSuffix"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

exactNumericLiteralScientificWithSuffix :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.ExactNumericLiteral
exactNumericLiteralScientificWithSuffix x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExactNumericLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "scientificWithSuffix"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

exactNumericLiteralUnsignedInteger :: Phantoms.TTerm Grammar.UnsignedInteger -> Phantoms.TTerm Grammar.ExactNumericLiteral
exactNumericLiteralUnsignedInteger x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExactNumericLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "unsignedInteger"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

exactNumericTypeBinary :: Phantoms.TTerm Grammar.BinaryExactNumericType -> Phantoms.TTerm Grammar.ExactNumericType
exactNumericTypeBinary x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "binary"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

exactNumericTypeDecimal :: Phantoms.TTerm Grammar.DecimalExactNumericType -> Phantoms.TTerm Grammar.ExactNumericType
exactNumericTypeDecimal x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "decimal"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

existsPredicateGraphPatternBrace :: Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm Grammar.ExistsPredicate
existsPredicateGraphPatternBrace x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExistsPredicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "graphPatternBrace"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

existsPredicateGraphPatternParen :: Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm Grammar.ExistsPredicate
existsPredicateGraphPatternParen x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExistsPredicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "graphPatternParen"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

existsPredicateMatchBlockBrace :: Phantoms.TTerm Grammar.MatchStatementBlock -> Phantoms.TTerm Grammar.ExistsPredicate
existsPredicateMatchBlockBrace x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExistsPredicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "matchBlockBrace"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

existsPredicateMatchBlockParen :: Phantoms.TTerm Grammar.MatchStatementBlock -> Phantoms.TTerm Grammar.ExistsPredicate
existsPredicateMatchBlockParen x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExistsPredicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "matchBlockParen"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

existsPredicateNestedQuery :: Phantoms.TTerm Grammar.NestedQuerySpecification -> Phantoms.TTerm Grammar.ExistsPredicate
existsPredicateNestedQuery x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ExistsPredicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nestedQuery"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

field :: Phantoms.TTerm Grammar.FieldName -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.Field
field name value =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Field"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Phantoms.unTTerm name)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm value)}]}))

fieldName :: Phantoms.TTerm Grammar.Field -> Phantoms.TTerm Grammar.FieldName
fieldName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Field"),
        Core.projectionField = (Core.Name "name")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

fieldType :: Phantoms.TTerm Grammar.FieldName -> Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.ValueType -> Phantoms.TTerm Grammar.FieldType
fieldType fieldName typed valueType =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FieldType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "fieldName"),
          Core.fieldTerm = (Phantoms.unTTerm fieldName)},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm typed)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm valueType)}]}))

fieldTypeFieldName :: Phantoms.TTerm Grammar.FieldType -> Phantoms.TTerm Grammar.FieldName
fieldTypeFieldName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FieldType"),
        Core.projectionField = (Core.Name "fieldName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

fieldTypeTyped :: Phantoms.TTerm Grammar.FieldType -> Phantoms.TTerm (Maybe Grammar.Typed)
fieldTypeTyped x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FieldType"),
        Core.projectionField = (Core.Name "typed")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

fieldTypeValueType :: Phantoms.TTerm Grammar.FieldType -> Phantoms.TTerm Grammar.ValueType
fieldTypeValueType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FieldType"),
        Core.projectionField = (Core.Name "valueType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

fieldTypeWithFieldName :: Phantoms.TTerm Grammar.FieldType -> Phantoms.TTerm Grammar.FieldName -> Phantoms.TTerm Grammar.FieldType
fieldTypeWithFieldName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FieldType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "fieldName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FieldType"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FieldType"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

fieldTypeWithTyped :: Phantoms.TTerm Grammar.FieldType -> Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.FieldType
fieldTypeWithTyped original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FieldType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "fieldName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FieldType"),
              Core.projectionField = (Core.Name "fieldName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FieldType"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

fieldTypeWithValueType :: Phantoms.TTerm Grammar.FieldType -> Phantoms.TTerm Grammar.ValueType -> Phantoms.TTerm Grammar.FieldType
fieldTypeWithValueType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FieldType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "fieldName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FieldType"),
              Core.projectionField = (Core.Name "fieldName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FieldType"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

fieldValue :: Phantoms.TTerm Grammar.Field -> Phantoms.TTerm Grammar.ValueExpression
fieldValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Field"),
        Core.projectionField = (Core.Name "value")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

fieldWithName :: Phantoms.TTerm Grammar.Field -> Phantoms.TTerm Grammar.FieldName -> Phantoms.TTerm Grammar.Field
fieldWithName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Field"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.Field"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

fieldWithValue :: Phantoms.TTerm Grammar.Field -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.Field
fieldWithValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Field"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.Field"),
              Core.projectionField = (Core.Name "name")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

filterStatementSearchCondition :: Phantoms.TTerm Grammar.SearchCondition -> Phantoms.TTerm Grammar.FilterStatement
filterStatementSearchCondition x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FilterStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "searchCondition"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

filterStatementWhereClause :: Phantoms.TTerm Grammar.WhereClause -> Phantoms.TTerm Grammar.FilterStatement
filterStatementWhereClause x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FilterStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "whereClause"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

float128Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Float128Type
float128Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Float128Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

float128TypeNotNull :: Phantoms.TTerm Grammar.Float128Type -> Phantoms.TTerm Bool
float128TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Float128Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

float128TypeWithNotNull :: Phantoms.TTerm Grammar.Float128Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Float128Type
float128TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Float128Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

float16Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Float16Type
float16Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Float16Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

float16TypeNotNull :: Phantoms.TTerm Grammar.Float16Type -> Phantoms.TTerm Bool
float16TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Float16Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

float16TypeWithNotNull :: Phantoms.TTerm Grammar.Float16Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Float16Type
float16TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Float16Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

float256Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Float256Type
float256Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Float256Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

float256TypeNotNull :: Phantoms.TTerm Grammar.Float256Type -> Phantoms.TTerm Bool
float256TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Float256Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

float256TypeWithNotNull :: Phantoms.TTerm Grammar.Float256Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Float256Type
float256TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Float256Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

float32Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Float32Type
float32Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Float32Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

float32TypeNotNull :: Phantoms.TTerm Grammar.Float32Type -> Phantoms.TTerm Bool
float32TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Float32Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

float32TypeWithNotNull :: Phantoms.TTerm Grammar.Float32Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Float32Type
float32TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Float32Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

float64Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Float64Type
float64Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Float64Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

float64TypeNotNull :: Phantoms.TTerm Grammar.Float64Type -> Phantoms.TTerm Bool
float64TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Float64Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

float64TypeWithNotNull :: Phantoms.TTerm Grammar.Float64Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Float64Type
float64TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Float64Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

floatTypeWithPrecision :: Phantoms.TTerm (Maybe Grammar.PrecisionAndScale) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.FloatTypeWithPrecision
floatTypeWithPrecision precisionAndScale notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FloatTypeWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precisionAndScale"),
          Core.fieldTerm = (Phantoms.unTTerm precisionAndScale)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

floatTypeWithPrecisionNotNull :: Phantoms.TTerm Grammar.FloatTypeWithPrecision -> Phantoms.TTerm Bool
floatTypeWithPrecisionNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FloatTypeWithPrecision"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

floatTypeWithPrecisionPrecisionAndScale :: Phantoms.TTerm Grammar.FloatTypeWithPrecision -> Phantoms.TTerm (Maybe Grammar.PrecisionAndScale)
floatTypeWithPrecisionPrecisionAndScale x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FloatTypeWithPrecision"),
        Core.projectionField = (Core.Name "precisionAndScale")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

floatTypeWithPrecisionWithNotNull :: Phantoms.TTerm Grammar.FloatTypeWithPrecision -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.FloatTypeWithPrecision
floatTypeWithPrecisionWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FloatTypeWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precisionAndScale"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FloatTypeWithPrecision"),
              Core.projectionField = (Core.Name "precisionAndScale")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

floatTypeWithPrecisionWithPrecisionAndScale :: Phantoms.TTerm Grammar.FloatTypeWithPrecision -> Phantoms.TTerm (Maybe Grammar.PrecisionAndScale) -> Phantoms.TTerm Grammar.FloatTypeWithPrecision
floatTypeWithPrecisionWithPrecisionAndScale original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FloatTypeWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precisionAndScale"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FloatTypeWithPrecision"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

focusedLinearDataModifyingStatementBody :: Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.SimpleLinearDataAccessingStatement -> Phantoms.TTerm (Maybe Grammar.PrimitiveResultStatement) -> Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatementBody
focusedLinearDataModifyingStatementBody useGraph simpleAccess primitiveResult =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm useGraph)},
        Core.Field {
          Core.fieldName = (Core.Name "simpleAccess"),
          Core.fieldTerm = (Phantoms.unTTerm simpleAccess)},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Phantoms.unTTerm primitiveResult)}]}))

focusedLinearDataModifyingStatementBodyPrimitiveResult :: Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatementBody -> Phantoms.TTerm (Maybe Grammar.PrimitiveResultStatement)
focusedLinearDataModifyingStatementBodyPrimitiveResult x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
        Core.projectionField = (Core.Name "primitiveResult")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedLinearDataModifyingStatementBodySimpleAccess :: Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatementBody -> Phantoms.TTerm Grammar.SimpleLinearDataAccessingStatement
focusedLinearDataModifyingStatementBodySimpleAccess x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
        Core.projectionField = (Core.Name "simpleAccess")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedLinearDataModifyingStatementBodyUseGraph :: Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatementBody -> Phantoms.TTerm Grammar.UseGraphClause
focusedLinearDataModifyingStatementBodyUseGraph x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
        Core.projectionField = (Core.Name "useGraph")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedLinearDataModifyingStatementBodyWithPrimitiveResult :: Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatementBody -> Phantoms.TTerm (Maybe Grammar.PrimitiveResultStatement) -> Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatementBody
focusedLinearDataModifyingStatementBodyWithPrimitiveResult original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
              Core.projectionField = (Core.Name "useGraph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "simpleAccess"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
              Core.projectionField = (Core.Name "simpleAccess")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

focusedLinearDataModifyingStatementBodyWithSimpleAccess :: Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatementBody -> Phantoms.TTerm Grammar.SimpleLinearDataAccessingStatement -> Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatementBody
focusedLinearDataModifyingStatementBodyWithSimpleAccess original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
              Core.projectionField = (Core.Name "useGraph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "simpleAccess"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
              Core.projectionField = (Core.Name "primitiveResult")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

focusedLinearDataModifyingStatementBodyWithUseGraph :: Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatementBody -> Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatementBody
focusedLinearDataModifyingStatementBodyWithUseGraph original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "simpleAccess"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
              Core.projectionField = (Core.Name "simpleAccess")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"),
              Core.projectionField = (Core.Name "primitiveResult")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

focusedLinearDataModifyingStatementNested :: Phantoms.TTerm Grammar.FocusedNestedDataModifyingProcedureSpecification -> Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatement
focusedLinearDataModifyingStatementNested x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nested"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

focusedLinearDataModifyingStatementSimple :: Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatementBody -> Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatement
focusedLinearDataModifyingStatementSimple x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FocusedLinearDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "simple"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

focusedLinearQueryAndPrimitiveResultStatementPart :: Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.SimpleLinearQueryStatement -> Phantoms.TTerm Grammar.PrimitiveResultStatement -> Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart
focusedLinearQueryAndPrimitiveResultStatementPart useGraph simple primitiveResult =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm useGraph)},
        Core.Field {
          Core.fieldName = (Core.Name "simple"),
          Core.fieldTerm = (Phantoms.unTTerm simple)},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Phantoms.unTTerm primitiveResult)}]}))

focusedLinearQueryAndPrimitiveResultStatementPartPrimitiveResult :: Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart -> Phantoms.TTerm Grammar.PrimitiveResultStatement
focusedLinearQueryAndPrimitiveResultStatementPartPrimitiveResult x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
        Core.projectionField = (Core.Name "primitiveResult")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedLinearQueryAndPrimitiveResultStatementPartSimple :: Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart -> Phantoms.TTerm Grammar.SimpleLinearQueryStatement
focusedLinearQueryAndPrimitiveResultStatementPartSimple x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
        Core.projectionField = (Core.Name "simple")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedLinearQueryAndPrimitiveResultStatementPartUseGraph :: Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart -> Phantoms.TTerm Grammar.UseGraphClause
focusedLinearQueryAndPrimitiveResultStatementPartUseGraph x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
        Core.projectionField = (Core.Name "useGraph")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedLinearQueryAndPrimitiveResultStatementPartWithPrimitiveResult :: Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart -> Phantoms.TTerm Grammar.PrimitiveResultStatement -> Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart
focusedLinearQueryAndPrimitiveResultStatementPartWithPrimitiveResult original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
              Core.projectionField = (Core.Name "useGraph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "simple"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
              Core.projectionField = (Core.Name "simple")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

focusedLinearQueryAndPrimitiveResultStatementPartWithSimple :: Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart -> Phantoms.TTerm Grammar.SimpleLinearQueryStatement -> Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart
focusedLinearQueryAndPrimitiveResultStatementPartWithSimple original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
              Core.projectionField = (Core.Name "useGraph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "simple"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
              Core.projectionField = (Core.Name "primitiveResult")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

focusedLinearQueryAndPrimitiveResultStatementPartWithUseGraph :: Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart -> Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart
focusedLinearQueryAndPrimitiveResultStatementPartWithUseGraph original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "simple"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
              Core.projectionField = (Core.Name "simple")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"),
              Core.projectionField = (Core.Name "primitiveResult")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

focusedLinearQueryStatementNested :: Phantoms.TTerm Grammar.FocusedNestedQuerySpecification -> Phantoms.TTerm Grammar.FocusedLinearQueryStatement
focusedLinearQueryStatementNested x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nested"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

focusedLinearQueryStatementPart :: Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.SimpleLinearQueryStatement -> Phantoms.TTerm Grammar.FocusedLinearQueryStatementPart
focusedLinearQueryStatementPart useGraph simple =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPart"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm useGraph)},
        Core.Field {
          Core.fieldName = (Core.Name "simple"),
          Core.fieldTerm = (Phantoms.unTTerm simple)}]}))

focusedLinearQueryStatementPartSimple :: Phantoms.TTerm Grammar.FocusedLinearQueryStatementPart -> Phantoms.TTerm Grammar.SimpleLinearQueryStatement
focusedLinearQueryStatementPartSimple x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPart"),
        Core.projectionField = (Core.Name "simple")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedLinearQueryStatementPartUseGraph :: Phantoms.TTerm Grammar.FocusedLinearQueryStatementPart -> Phantoms.TTerm Grammar.UseGraphClause
focusedLinearQueryStatementPartUseGraph x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPart"),
        Core.projectionField = (Core.Name "useGraph")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedLinearQueryStatementPartWithSimple :: Phantoms.TTerm Grammar.FocusedLinearQueryStatementPart -> Phantoms.TTerm Grammar.SimpleLinearQueryStatement -> Phantoms.TTerm Grammar.FocusedLinearQueryStatementPart
focusedLinearQueryStatementPartWithSimple original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPart"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPart"),
              Core.projectionField = (Core.Name "useGraph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "simple"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

focusedLinearQueryStatementPartWithUseGraph :: Phantoms.TTerm Grammar.FocusedLinearQueryStatementPart -> Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.FocusedLinearQueryStatementPart
focusedLinearQueryStatementPartWithUseGraph original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPart"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "simple"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPart"),
              Core.projectionField = (Core.Name "simple")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

focusedLinearQueryStatementParts :: Phantoms.TTerm Grammar.FocusedLinearQueryStatementPartsAndResult -> Phantoms.TTerm Grammar.FocusedLinearQueryStatement
focusedLinearQueryStatementParts x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parts"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

focusedLinearQueryStatementPartsAndResult :: Phantoms.TTerm [Grammar.FocusedLinearQueryStatementPart] -> Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart -> Phantoms.TTerm Grammar.FocusedLinearQueryStatementPartsAndResult
focusedLinearQueryStatementPartsAndResult parts result =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPartsAndResult"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parts"),
          Core.fieldTerm = (Phantoms.unTTerm parts)},
        Core.Field {
          Core.fieldName = (Core.Name "result"),
          Core.fieldTerm = (Phantoms.unTTerm result)}]}))

focusedLinearQueryStatementPartsAndResultParts :: Phantoms.TTerm Grammar.FocusedLinearQueryStatementPartsAndResult -> Phantoms.TTerm [Grammar.FocusedLinearQueryStatementPart]
focusedLinearQueryStatementPartsAndResultParts x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPartsAndResult"),
        Core.projectionField = (Core.Name "parts")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedLinearQueryStatementPartsAndResultResult :: Phantoms.TTerm Grammar.FocusedLinearQueryStatementPartsAndResult -> Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart
focusedLinearQueryStatementPartsAndResultResult x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPartsAndResult"),
        Core.projectionField = (Core.Name "result")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedLinearQueryStatementPartsAndResultWithParts :: Phantoms.TTerm Grammar.FocusedLinearQueryStatementPartsAndResult -> Phantoms.TTerm [Grammar.FocusedLinearQueryStatementPart] -> Phantoms.TTerm Grammar.FocusedLinearQueryStatementPartsAndResult
focusedLinearQueryStatementPartsAndResultWithParts original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPartsAndResult"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parts"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "result"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPartsAndResult"),
              Core.projectionField = (Core.Name "result")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

focusedLinearQueryStatementPartsAndResultWithResult :: Phantoms.TTerm Grammar.FocusedLinearQueryStatementPartsAndResult -> Phantoms.TTerm Grammar.FocusedLinearQueryAndPrimitiveResultStatementPart -> Phantoms.TTerm Grammar.FocusedLinearQueryStatementPartsAndResult
focusedLinearQueryStatementPartsAndResultWithResult original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPartsAndResult"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parts"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatementPartsAndResult"),
              Core.projectionField = (Core.Name "parts")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "result"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

focusedLinearQueryStatementPrimitive :: Phantoms.TTerm Grammar.FocusedPrimitiveResultStatement -> Phantoms.TTerm Grammar.FocusedLinearQueryStatement
focusedLinearQueryStatementPrimitive x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "primitive"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

focusedLinearQueryStatementSelect :: Phantoms.TTerm Grammar.SelectStatement -> Phantoms.TTerm Grammar.FocusedLinearQueryStatement
focusedLinearQueryStatementSelect x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FocusedLinearQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "select"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

focusedNestedDataModifyingProcedureSpecification :: Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.NestedDataModifyingProcedureSpecification -> Phantoms.TTerm Grammar.FocusedNestedDataModifyingProcedureSpecification
focusedNestedDataModifyingProcedureSpecification useGraph nestedSpec =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedNestedDataModifyingProcedureSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm useGraph)},
        Core.Field {
          Core.fieldName = (Core.Name "nestedSpec"),
          Core.fieldTerm = (Phantoms.unTTerm nestedSpec)}]}))

focusedNestedDataModifyingProcedureSpecificationNestedSpec :: Phantoms.TTerm Grammar.FocusedNestedDataModifyingProcedureSpecification -> Phantoms.TTerm Grammar.NestedDataModifyingProcedureSpecification
focusedNestedDataModifyingProcedureSpecificationNestedSpec x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedNestedDataModifyingProcedureSpecification"),
        Core.projectionField = (Core.Name "nestedSpec")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedNestedDataModifyingProcedureSpecificationUseGraph :: Phantoms.TTerm Grammar.FocusedNestedDataModifyingProcedureSpecification -> Phantoms.TTerm Grammar.UseGraphClause
focusedNestedDataModifyingProcedureSpecificationUseGraph x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedNestedDataModifyingProcedureSpecification"),
        Core.projectionField = (Core.Name "useGraph")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedNestedDataModifyingProcedureSpecificationWithNestedSpec :: Phantoms.TTerm Grammar.FocusedNestedDataModifyingProcedureSpecification -> Phantoms.TTerm Grammar.NestedDataModifyingProcedureSpecification -> Phantoms.TTerm Grammar.FocusedNestedDataModifyingProcedureSpecification
focusedNestedDataModifyingProcedureSpecificationWithNestedSpec original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedNestedDataModifyingProcedureSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedNestedDataModifyingProcedureSpecification"),
              Core.projectionField = (Core.Name "useGraph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nestedSpec"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

focusedNestedDataModifyingProcedureSpecificationWithUseGraph :: Phantoms.TTerm Grammar.FocusedNestedDataModifyingProcedureSpecification -> Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.FocusedNestedDataModifyingProcedureSpecification
focusedNestedDataModifyingProcedureSpecificationWithUseGraph original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedNestedDataModifyingProcedureSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "nestedSpec"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedNestedDataModifyingProcedureSpecification"),
              Core.projectionField = (Core.Name "nestedSpec")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

focusedNestedQuerySpecification :: Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.NestedQuerySpecification -> Phantoms.TTerm Grammar.FocusedNestedQuerySpecification
focusedNestedQuerySpecification useGraph nested =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedNestedQuerySpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm useGraph)},
        Core.Field {
          Core.fieldName = (Core.Name "nested"),
          Core.fieldTerm = (Phantoms.unTTerm nested)}]}))

focusedNestedQuerySpecificationNested :: Phantoms.TTerm Grammar.FocusedNestedQuerySpecification -> Phantoms.TTerm Grammar.NestedQuerySpecification
focusedNestedQuerySpecificationNested x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedNestedQuerySpecification"),
        Core.projectionField = (Core.Name "nested")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedNestedQuerySpecificationUseGraph :: Phantoms.TTerm Grammar.FocusedNestedQuerySpecification -> Phantoms.TTerm Grammar.UseGraphClause
focusedNestedQuerySpecificationUseGraph x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedNestedQuerySpecification"),
        Core.projectionField = (Core.Name "useGraph")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedNestedQuerySpecificationWithNested :: Phantoms.TTerm Grammar.FocusedNestedQuerySpecification -> Phantoms.TTerm Grammar.NestedQuerySpecification -> Phantoms.TTerm Grammar.FocusedNestedQuerySpecification
focusedNestedQuerySpecificationWithNested original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedNestedQuerySpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedNestedQuerySpecification"),
              Core.projectionField = (Core.Name "useGraph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nested"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

focusedNestedQuerySpecificationWithUseGraph :: Phantoms.TTerm Grammar.FocusedNestedQuerySpecification -> Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.FocusedNestedQuerySpecification
focusedNestedQuerySpecificationWithUseGraph original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedNestedQuerySpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "nested"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedNestedQuerySpecification"),
              Core.projectionField = (Core.Name "nested")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

focusedPrimitiveResultStatement :: Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.PrimitiveResultStatement -> Phantoms.TTerm Grammar.FocusedPrimitiveResultStatement
focusedPrimitiveResultStatement useGraph primitiveResult =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedPrimitiveResultStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm useGraph)},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Phantoms.unTTerm primitiveResult)}]}))

focusedPrimitiveResultStatementPrimitiveResult :: Phantoms.TTerm Grammar.FocusedPrimitiveResultStatement -> Phantoms.TTerm Grammar.PrimitiveResultStatement
focusedPrimitiveResultStatementPrimitiveResult x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedPrimitiveResultStatement"),
        Core.projectionField = (Core.Name "primitiveResult")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedPrimitiveResultStatementUseGraph :: Phantoms.TTerm Grammar.FocusedPrimitiveResultStatement -> Phantoms.TTerm Grammar.UseGraphClause
focusedPrimitiveResultStatementUseGraph x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedPrimitiveResultStatement"),
        Core.projectionField = (Core.Name "useGraph")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

focusedPrimitiveResultStatementWithPrimitiveResult :: Phantoms.TTerm Grammar.FocusedPrimitiveResultStatement -> Phantoms.TTerm Grammar.PrimitiveResultStatement -> Phantoms.TTerm Grammar.FocusedPrimitiveResultStatement
focusedPrimitiveResultStatementWithPrimitiveResult original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedPrimitiveResultStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedPrimitiveResultStatement"),
              Core.projectionField = (Core.Name "useGraph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

focusedPrimitiveResultStatementWithUseGraph :: Phantoms.TTerm Grammar.FocusedPrimitiveResultStatement -> Phantoms.TTerm Grammar.UseGraphClause -> Phantoms.TTerm Grammar.FocusedPrimitiveResultStatement
focusedPrimitiveResultStatementWithUseGraph original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FocusedPrimitiveResultStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "useGraph"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "primitiveResult"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FocusedPrimitiveResultStatement"),
              Core.projectionField = (Core.Name "primitiveResult")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

foldCharacterString :: Phantoms.TTerm Grammar.Case -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.FoldCharacterString
foldCharacterString case_ valueExpression =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FoldCharacterString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "case"),
          Core.fieldTerm = (Phantoms.unTTerm case_)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)}]}))

foldCharacterStringCase :: Phantoms.TTerm Grammar.FoldCharacterString -> Phantoms.TTerm Grammar.Case
foldCharacterStringCase x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FoldCharacterString"),
        Core.projectionField = (Core.Name "case")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

foldCharacterStringValueExpression :: Phantoms.TTerm Grammar.FoldCharacterString -> Phantoms.TTerm Grammar.ValueExpression
foldCharacterStringValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.FoldCharacterString"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

foldCharacterStringWithCase :: Phantoms.TTerm Grammar.FoldCharacterString -> Phantoms.TTerm Grammar.Case -> Phantoms.TTerm Grammar.FoldCharacterString
foldCharacterStringWithCase original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FoldCharacterString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "case"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FoldCharacterString"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

foldCharacterStringWithValueExpression :: Phantoms.TTerm Grammar.FoldCharacterString -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.FoldCharacterString
foldCharacterStringWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.FoldCharacterString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "case"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.FoldCharacterString"),
              Core.projectionField = (Core.Name "case")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

forItem :: Phantoms.TTerm Grammar.ForItemAlias -> Phantoms.TTerm Grammar.ForItemSource -> Phantoms.TTerm Grammar.ForItem
forItem alias source =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ForItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm alias)},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm source)}]}))

forItemAlias :: Phantoms.TTerm Grammar.ForItem -> Phantoms.TTerm Grammar.ForItemAlias
forItemAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ForItem"),
        Core.projectionField = (Core.Name "alias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

forItemSource :: Phantoms.TTerm Grammar.ForItem -> Phantoms.TTerm Grammar.ForItemSource
forItemSource x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ForItem"),
        Core.projectionField = (Core.Name "source")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

forItemWithAlias :: Phantoms.TTerm Grammar.ForItem -> Phantoms.TTerm Grammar.ForItemAlias -> Phantoms.TTerm Grammar.ForItem
forItemWithAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ForItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ForItem"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

forItemWithSource :: Phantoms.TTerm Grammar.ForItem -> Phantoms.TTerm Grammar.ForItemSource -> Phantoms.TTerm Grammar.ForItem
forItemWithSource original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ForItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ForItem"),
              Core.projectionField = (Core.Name "alias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

forOrdinalityOrOffset :: Phantoms.TTerm Grammar.OrdinalityOrOffsetType -> Phantoms.TTerm Grammar.BindingVariable -> Phantoms.TTerm Grammar.ForOrdinalityOrOffset
forOrdinalityOrOffset type_ variable =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ForOrdinalityOrOffset"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm type_)},
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm variable)}]}))

forOrdinalityOrOffsetType :: Phantoms.TTerm Grammar.ForOrdinalityOrOffset -> Phantoms.TTerm Grammar.OrdinalityOrOffsetType
forOrdinalityOrOffsetType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ForOrdinalityOrOffset"),
        Core.projectionField = (Core.Name "type")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

forOrdinalityOrOffsetVariable :: Phantoms.TTerm Grammar.ForOrdinalityOrOffset -> Phantoms.TTerm Grammar.BindingVariable
forOrdinalityOrOffsetVariable x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ForOrdinalityOrOffset"),
        Core.projectionField = (Core.Name "variable")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

forOrdinalityOrOffsetWithType :: Phantoms.TTerm Grammar.ForOrdinalityOrOffset -> Phantoms.TTerm Grammar.OrdinalityOrOffsetType -> Phantoms.TTerm Grammar.ForOrdinalityOrOffset
forOrdinalityOrOffsetWithType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ForOrdinalityOrOffset"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ForOrdinalityOrOffset"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

forOrdinalityOrOffsetWithVariable :: Phantoms.TTerm Grammar.ForOrdinalityOrOffset -> Phantoms.TTerm Grammar.BindingVariable -> Phantoms.TTerm Grammar.ForOrdinalityOrOffset
forOrdinalityOrOffsetWithVariable original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ForOrdinalityOrOffset"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ForOrdinalityOrOffset"),
              Core.projectionField = (Core.Name "type")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

forStatement :: Phantoms.TTerm Grammar.ForItem -> Phantoms.TTerm (Maybe Grammar.ForOrdinalityOrOffset) -> Phantoms.TTerm Grammar.ForStatement
forStatement item ordinalityOrOffset =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ForStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "item"),
          Core.fieldTerm = (Phantoms.unTTerm item)},
        Core.Field {
          Core.fieldName = (Core.Name "ordinalityOrOffset"),
          Core.fieldTerm = (Phantoms.unTTerm ordinalityOrOffset)}]}))

forStatementItem :: Phantoms.TTerm Grammar.ForStatement -> Phantoms.TTerm Grammar.ForItem
forStatementItem x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ForStatement"),
        Core.projectionField = (Core.Name "item")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

forStatementOrdinalityOrOffset :: Phantoms.TTerm Grammar.ForStatement -> Phantoms.TTerm (Maybe Grammar.ForOrdinalityOrOffset)
forStatementOrdinalityOrOffset x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ForStatement"),
        Core.projectionField = (Core.Name "ordinalityOrOffset")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

forStatementWithItem :: Phantoms.TTerm Grammar.ForStatement -> Phantoms.TTerm Grammar.ForItem -> Phantoms.TTerm Grammar.ForStatement
forStatementWithItem original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ForStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "item"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "ordinalityOrOffset"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ForStatement"),
              Core.projectionField = (Core.Name "ordinalityOrOffset")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

forStatementWithOrdinalityOrOffset :: Phantoms.TTerm Grammar.ForStatement -> Phantoms.TTerm (Maybe Grammar.ForOrdinalityOrOffset) -> Phantoms.TTerm Grammar.ForStatement
forStatementWithOrdinalityOrOffset original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ForStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "item"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ForStatement"),
              Core.projectionField = (Core.Name "item")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "ordinalityOrOffset"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

fullEdgePatternAnyDirection :: Phantoms.TTerm Grammar.FullEdgeAnyDirection -> Phantoms.TTerm Grammar.FullEdgePattern
fullEdgePatternAnyDirection x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FullEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "anyDirection"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

fullEdgePatternLeftOrRight :: Phantoms.TTerm Grammar.FullEdgeLeftOrRight -> Phantoms.TTerm Grammar.FullEdgePattern
fullEdgePatternLeftOrRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FullEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "leftOrRight"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

fullEdgePatternLeftOrUndirected :: Phantoms.TTerm Grammar.FullEdgeLeftOrUndirected -> Phantoms.TTerm Grammar.FullEdgePattern
fullEdgePatternLeftOrUndirected x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FullEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "leftOrUndirected"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

fullEdgePatternPointingLeft :: Phantoms.TTerm Grammar.FullEdgePointingLeft -> Phantoms.TTerm Grammar.FullEdgePattern
fullEdgePatternPointingLeft x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FullEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pointingLeft"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

fullEdgePatternPointingRight :: Phantoms.TTerm Grammar.FullEdgePointingRight -> Phantoms.TTerm Grammar.FullEdgePattern
fullEdgePatternPointingRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FullEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pointingRight"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

fullEdgePatternUndirected :: Phantoms.TTerm Grammar.FullEdgeUndirected -> Phantoms.TTerm Grammar.FullEdgePattern
fullEdgePatternUndirected x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FullEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "undirected"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

fullEdgePatternUndirectedOrRight :: Phantoms.TTerm Grammar.FullEdgeUndirectedOrRight -> Phantoms.TTerm Grammar.FullEdgePattern
fullEdgePatternUndirectedOrRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.FullEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "undirectedOrRight"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

generalLiteralBoolean :: Phantoms.TTerm Grammar.BooleanLiteral -> Phantoms.TTerm Grammar.GeneralLiteral
generalLiteralBoolean x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "boolean"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

generalLiteralByteString :: Phantoms.TTerm Grammar.ByteStringLiteral -> Phantoms.TTerm Grammar.GeneralLiteral
generalLiteralByteString x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "byteString"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

generalLiteralCharacterString :: Phantoms.TTerm Grammar.CharacterStringLiteral -> Phantoms.TTerm Grammar.GeneralLiteral
generalLiteralCharacterString x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "characterString"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

generalLiteralDuration :: Phantoms.TTerm Grammar.DurationLiteral -> Phantoms.TTerm Grammar.GeneralLiteral
generalLiteralDuration x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "duration"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

generalLiteralList :: Phantoms.TTerm Grammar.ListLiteral -> Phantoms.TTerm Grammar.GeneralLiteral
generalLiteralList x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "list"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

generalLiteralNullLiteral :: Phantoms.TTerm Grammar.NullLiteral -> Phantoms.TTerm Grammar.GeneralLiteral
generalLiteralNullLiteral x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nullLiteral"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

generalLiteralRecord :: Phantoms.TTerm Grammar.RecordLiteral -> Phantoms.TTerm Grammar.GeneralLiteral
generalLiteralRecord x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "record"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

generalLiteralTemporal :: Phantoms.TTerm Grammar.TemporalLiteral -> Phantoms.TTerm Grammar.GeneralLiteral
generalLiteralTemporal x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "temporal"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

generalLogarithmFunction :: Phantoms.TTerm Grammar.GeneralLogarithmBase -> Phantoms.TTerm Grammar.GeneralLogarithmArgument -> Phantoms.TTerm Grammar.GeneralLogarithmFunction
generalLogarithmFunction base argument =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GeneralLogarithmFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "base"),
          Core.fieldTerm = (Phantoms.unTTerm base)},
        Core.Field {
          Core.fieldName = (Core.Name "argument"),
          Core.fieldTerm = (Phantoms.unTTerm argument)}]}))

generalLogarithmFunctionArgument :: Phantoms.TTerm Grammar.GeneralLogarithmFunction -> Phantoms.TTerm Grammar.GeneralLogarithmArgument
generalLogarithmFunctionArgument x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralLogarithmFunction"),
        Core.projectionField = (Core.Name "argument")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

generalLogarithmFunctionBase :: Phantoms.TTerm Grammar.GeneralLogarithmFunction -> Phantoms.TTerm Grammar.GeneralLogarithmBase
generalLogarithmFunctionBase x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralLogarithmFunction"),
        Core.projectionField = (Core.Name "base")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

generalLogarithmFunctionWithArgument :: Phantoms.TTerm Grammar.GeneralLogarithmFunction -> Phantoms.TTerm Grammar.GeneralLogarithmArgument -> Phantoms.TTerm Grammar.GeneralLogarithmFunction
generalLogarithmFunctionWithArgument original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GeneralLogarithmFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "base"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralLogarithmFunction"),
              Core.projectionField = (Core.Name "base")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "argument"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

generalLogarithmFunctionWithBase :: Phantoms.TTerm Grammar.GeneralLogarithmFunction -> Phantoms.TTerm Grammar.GeneralLogarithmBase -> Phantoms.TTerm Grammar.GeneralLogarithmFunction
generalLogarithmFunctionWithBase original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GeneralLogarithmFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "base"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "argument"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralLogarithmFunction"),
              Core.projectionField = (Core.Name "argument")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

generalQuantifier :: Phantoms.TTerm (Maybe Grammar.LowerBound) -> Phantoms.TTerm (Maybe Grammar.UpperBound) -> Phantoms.TTerm Grammar.GeneralQuantifier
generalQuantifier lowerBound upperBound =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GeneralQuantifier"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "lowerBound"),
          Core.fieldTerm = (Phantoms.unTTerm lowerBound)},
        Core.Field {
          Core.fieldName = (Core.Name "upperBound"),
          Core.fieldTerm = (Phantoms.unTTerm upperBound)}]}))

generalQuantifierLowerBound :: Phantoms.TTerm Grammar.GeneralQuantifier -> Phantoms.TTerm (Maybe Grammar.LowerBound)
generalQuantifierLowerBound x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralQuantifier"),
        Core.projectionField = (Core.Name "lowerBound")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

generalQuantifierUpperBound :: Phantoms.TTerm Grammar.GeneralQuantifier -> Phantoms.TTerm (Maybe Grammar.UpperBound)
generalQuantifierUpperBound x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralQuantifier"),
        Core.projectionField = (Core.Name "upperBound")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

generalQuantifierWithLowerBound :: Phantoms.TTerm Grammar.GeneralQuantifier -> Phantoms.TTerm (Maybe Grammar.LowerBound) -> Phantoms.TTerm Grammar.GeneralQuantifier
generalQuantifierWithLowerBound original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GeneralQuantifier"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "lowerBound"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "upperBound"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralQuantifier"),
              Core.projectionField = (Core.Name "upperBound")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

generalQuantifierWithUpperBound :: Phantoms.TTerm Grammar.GeneralQuantifier -> Phantoms.TTerm (Maybe Grammar.UpperBound) -> Phantoms.TTerm Grammar.GeneralQuantifier
generalQuantifierWithUpperBound original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GeneralQuantifier"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "lowerBound"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralQuantifier"),
              Core.projectionField = (Core.Name "lowerBound")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "upperBound"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

generalSetFunction :: Phantoms.TTerm Grammar.GeneralSetFunctionType -> Phantoms.TTerm (Maybe Grammar.SetQuantifier) -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.GeneralSetFunction
generalSetFunction functionType setQuantifier valueExpression =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "functionType"),
          Core.fieldTerm = (Phantoms.unTTerm functionType)},
        Core.Field {
          Core.fieldName = (Core.Name "setQuantifier"),
          Core.fieldTerm = (Phantoms.unTTerm setQuantifier)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)}]}))

generalSetFunctionFunctionType :: Phantoms.TTerm Grammar.GeneralSetFunction -> Phantoms.TTerm Grammar.GeneralSetFunctionType
generalSetFunctionFunctionType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
        Core.projectionField = (Core.Name "functionType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

generalSetFunctionSetQuantifier :: Phantoms.TTerm Grammar.GeneralSetFunction -> Phantoms.TTerm (Maybe Grammar.SetQuantifier)
generalSetFunctionSetQuantifier x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
        Core.projectionField = (Core.Name "setQuantifier")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

generalSetFunctionTypeAvg :: Phantoms.TTerm Grammar.GeneralSetFunctionType
generalSetFunctionTypeAvg =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunctionType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "avg"),
        Core.fieldTerm = Core.TermUnit}}))

generalSetFunctionTypeCollectList :: Phantoms.TTerm Grammar.GeneralSetFunctionType
generalSetFunctionTypeCollectList =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunctionType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "collectList"),
        Core.fieldTerm = Core.TermUnit}}))

generalSetFunctionTypeCount :: Phantoms.TTerm Grammar.GeneralSetFunctionType
generalSetFunctionTypeCount =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunctionType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "count"),
        Core.fieldTerm = Core.TermUnit}}))

generalSetFunctionTypeMax :: Phantoms.TTerm Grammar.GeneralSetFunctionType
generalSetFunctionTypeMax =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunctionType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "max"),
        Core.fieldTerm = Core.TermUnit}}))

generalSetFunctionTypeMin :: Phantoms.TTerm Grammar.GeneralSetFunctionType
generalSetFunctionTypeMin =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunctionType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "min"),
        Core.fieldTerm = Core.TermUnit}}))

generalSetFunctionTypeStddevPop :: Phantoms.TTerm Grammar.GeneralSetFunctionType
generalSetFunctionTypeStddevPop =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunctionType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "stddevPop"),
        Core.fieldTerm = Core.TermUnit}}))

generalSetFunctionTypeStddevSamp :: Phantoms.TTerm Grammar.GeneralSetFunctionType
generalSetFunctionTypeStddevSamp =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunctionType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "stddevSamp"),
        Core.fieldTerm = Core.TermUnit}}))

generalSetFunctionTypeSum :: Phantoms.TTerm Grammar.GeneralSetFunctionType
generalSetFunctionTypeSum =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunctionType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "sum"),
        Core.fieldTerm = Core.TermUnit}}))

generalSetFunctionValueExpression :: Phantoms.TTerm Grammar.GeneralSetFunction -> Phantoms.TTerm Grammar.ValueExpression
generalSetFunctionValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

generalSetFunctionWithFunctionType :: Phantoms.TTerm Grammar.GeneralSetFunction -> Phantoms.TTerm Grammar.GeneralSetFunctionType -> Phantoms.TTerm Grammar.GeneralSetFunction
generalSetFunctionWithFunctionType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "functionType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "setQuantifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
              Core.projectionField = (Core.Name "setQuantifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

generalSetFunctionWithSetQuantifier :: Phantoms.TTerm Grammar.GeneralSetFunction -> Phantoms.TTerm (Maybe Grammar.SetQuantifier) -> Phantoms.TTerm Grammar.GeneralSetFunction
generalSetFunctionWithSetQuantifier original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "functionType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
              Core.projectionField = (Core.Name "functionType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "setQuantifier"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

generalSetFunctionWithValueExpression :: Phantoms.TTerm Grammar.GeneralSetFunction -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.GeneralSetFunction
generalSetFunctionWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "functionType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
              Core.projectionField = (Core.Name "functionType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "setQuantifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GeneralSetFunction"),
              Core.projectionField = (Core.Name "setQuantifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

generalValueSpecificationDynamicParameterSpecification :: Phantoms.TTerm Grammar.DynamicParameterSpecification -> Phantoms.TTerm Grammar.GeneralValueSpecification
generalValueSpecificationDynamicParameterSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralValueSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "dynamicParameterSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

generalValueSpecificationSessionUser :: Phantoms.TTerm Grammar.GeneralValueSpecification
generalValueSpecificationSessionUser =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GeneralValueSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "sessionUser"),
        Core.fieldTerm = Core.TermUnit}}))

gqlProgram :: Phantoms.TTerm (Maybe Grammar.ProgramActivity) -> Phantoms.TTerm (Maybe Grammar.SessionCloseCommand) -> Phantoms.TTerm Grammar.GqlProgram
gqlProgram activity close =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GqlProgram"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "activity"),
          Core.fieldTerm = (Phantoms.unTTerm activity)},
        Core.Field {
          Core.fieldName = (Core.Name "close"),
          Core.fieldTerm = (Phantoms.unTTerm close)}]}))

gqlProgramActivity :: Phantoms.TTerm Grammar.GqlProgram -> Phantoms.TTerm (Maybe Grammar.ProgramActivity)
gqlProgramActivity x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GqlProgram"),
        Core.projectionField = (Core.Name "activity")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

gqlProgramClose :: Phantoms.TTerm Grammar.GqlProgram -> Phantoms.TTerm (Maybe Grammar.SessionCloseCommand)
gqlProgramClose x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GqlProgram"),
        Core.projectionField = (Core.Name "close")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

gqlProgramWithActivity :: Phantoms.TTerm Grammar.GqlProgram -> Phantoms.TTerm (Maybe Grammar.ProgramActivity) -> Phantoms.TTerm Grammar.GqlProgram
gqlProgramWithActivity original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GqlProgram"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "activity"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "close"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GqlProgram"),
              Core.projectionField = (Core.Name "close")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

gqlProgramWithClose :: Phantoms.TTerm Grammar.GqlProgram -> Phantoms.TTerm (Maybe Grammar.SessionCloseCommand) -> Phantoms.TTerm Grammar.GqlProgram
gqlProgramWithClose original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GqlProgram"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "activity"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GqlProgram"),
              Core.projectionField = (Core.Name "activity")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "close"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

graphAndNestedQuerySpecification :: Phantoms.TTerm Grammar.GraphExpression -> Phantoms.TTerm Grammar.NestedQuerySpecification -> Phantoms.TTerm Grammar.GraphAndNestedQuerySpecification
graphAndNestedQuerySpecification graphExpression nested =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphAndNestedQuerySpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "graphExpression"),
          Core.fieldTerm = (Phantoms.unTTerm graphExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "nested"),
          Core.fieldTerm = (Phantoms.unTTerm nested)}]}))

graphAndNestedQuerySpecificationGraphExpression :: Phantoms.TTerm Grammar.GraphAndNestedQuerySpecification -> Phantoms.TTerm Grammar.GraphExpression
graphAndNestedQuerySpecificationGraphExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GraphAndNestedQuerySpecification"),
        Core.projectionField = (Core.Name "graphExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

graphAndNestedQuerySpecificationNested :: Phantoms.TTerm Grammar.GraphAndNestedQuerySpecification -> Phantoms.TTerm Grammar.NestedQuerySpecification
graphAndNestedQuerySpecificationNested x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GraphAndNestedQuerySpecification"),
        Core.projectionField = (Core.Name "nested")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

graphAndNestedQuerySpecificationWithGraphExpression :: Phantoms.TTerm Grammar.GraphAndNestedQuerySpecification -> Phantoms.TTerm Grammar.GraphExpression -> Phantoms.TTerm Grammar.GraphAndNestedQuerySpecification
graphAndNestedQuerySpecificationWithGraphExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphAndNestedQuerySpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "graphExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "nested"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphAndNestedQuerySpecification"),
              Core.projectionField = (Core.Name "nested")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

graphAndNestedQuerySpecificationWithNested :: Phantoms.TTerm Grammar.GraphAndNestedQuerySpecification -> Phantoms.TTerm Grammar.NestedQuerySpecification -> Phantoms.TTerm Grammar.GraphAndNestedQuerySpecification
graphAndNestedQuerySpecificationWithNested original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphAndNestedQuerySpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "graphExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphAndNestedQuerySpecification"),
              Core.projectionField = (Core.Name "graphExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nested"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

graphExpressionCurrent :: Phantoms.TTerm Grammar.CurrentGraph -> Phantoms.TTerm Grammar.GraphExpression
graphExpressionCurrent x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "current"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphExpressionName :: Phantoms.TTerm Grammar.ObjectNameOrBindingVariable -> Phantoms.TTerm Grammar.GraphExpression
graphExpressionName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "name"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphExpressionObject :: Phantoms.TTerm Grammar.ObjectExpressionPrimary -> Phantoms.TTerm Grammar.GraphExpression
graphExpressionObject x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "object"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphExpressionReference :: Phantoms.TTerm Grammar.GraphReference -> Phantoms.TTerm Grammar.GraphExpression
graphExpressionReference x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "reference"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphPattern :: Phantoms.TTerm (Maybe Grammar.MatchMode) -> Phantoms.TTerm Grammar.PathPatternList -> Phantoms.TTerm (Maybe Grammar.KeepClause) -> Phantoms.TTerm (Maybe Grammar.GraphPatternWhereClause) -> Phantoms.TTerm Grammar.GraphPattern
graphPattern matchMode pathPatterns keepClause whereClause =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "matchMode"),
          Core.fieldTerm = (Phantoms.unTTerm matchMode)},
        Core.Field {
          Core.fieldName = (Core.Name "pathPatterns"),
          Core.fieldTerm = (Phantoms.unTTerm pathPatterns)},
        Core.Field {
          Core.fieldName = (Core.Name "keepClause"),
          Core.fieldTerm = (Phantoms.unTTerm keepClause)},
        Core.Field {
          Core.fieldName = (Core.Name "whereClause"),
          Core.fieldTerm = (Phantoms.unTTerm whereClause)}]}))

graphPatternBindingTable :: Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm (Maybe Grammar.GraphPatternYieldClause) -> Phantoms.TTerm Grammar.GraphPatternBindingTable
graphPatternBindingTable pattern yieldClause =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphPatternBindingTable"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "pattern"),
          Core.fieldTerm = (Phantoms.unTTerm pattern)},
        Core.Field {
          Core.fieldName = (Core.Name "yieldClause"),
          Core.fieldTerm = (Phantoms.unTTerm yieldClause)}]}))

graphPatternBindingTablePattern :: Phantoms.TTerm Grammar.GraphPatternBindingTable -> Phantoms.TTerm Grammar.GraphPattern
graphPatternBindingTablePattern x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPatternBindingTable"),
        Core.projectionField = (Core.Name "pattern")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

graphPatternBindingTableWithPattern :: Phantoms.TTerm Grammar.GraphPatternBindingTable -> Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm Grammar.GraphPatternBindingTable
graphPatternBindingTableWithPattern original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphPatternBindingTable"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "pattern"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "yieldClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPatternBindingTable"),
              Core.projectionField = (Core.Name "yieldClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

graphPatternBindingTableWithYieldClause :: Phantoms.TTerm Grammar.GraphPatternBindingTable -> Phantoms.TTerm (Maybe Grammar.GraphPatternYieldClause) -> Phantoms.TTerm Grammar.GraphPatternBindingTable
graphPatternBindingTableWithYieldClause original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphPatternBindingTable"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "pattern"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPatternBindingTable"),
              Core.projectionField = (Core.Name "pattern")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "yieldClause"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

graphPatternBindingTableYieldClause :: Phantoms.TTerm Grammar.GraphPatternBindingTable -> Phantoms.TTerm (Maybe Grammar.GraphPatternYieldClause)
graphPatternBindingTableYieldClause x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPatternBindingTable"),
        Core.projectionField = (Core.Name "yieldClause")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

graphPatternKeepClause :: Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm (Maybe Grammar.KeepClause)
graphPatternKeepClause x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
        Core.projectionField = (Core.Name "keepClause")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

graphPatternMatchMode :: Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm (Maybe Grammar.MatchMode)
graphPatternMatchMode x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
        Core.projectionField = (Core.Name "matchMode")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

graphPatternPathPatterns :: Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm Grammar.PathPatternList
graphPatternPathPatterns x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
        Core.projectionField = (Core.Name "pathPatterns")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

graphPatternQuantifierAsterisk :: Phantoms.TTerm Grammar.GraphPatternQuantifier
graphPatternQuantifierAsterisk =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphPatternQuantifier"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "asterisk"),
        Core.fieldTerm = Core.TermUnit}}))

graphPatternQuantifierFixed :: Phantoms.TTerm Grammar.FixedQuantifier -> Phantoms.TTerm Grammar.GraphPatternQuantifier
graphPatternQuantifierFixed x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphPatternQuantifier"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "fixed"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphPatternQuantifierGeneral :: Phantoms.TTerm Grammar.GeneralQuantifier -> Phantoms.TTerm Grammar.GraphPatternQuantifier
graphPatternQuantifierGeneral x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphPatternQuantifier"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "general"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphPatternQuantifierPlusSign :: Phantoms.TTerm Grammar.GraphPatternQuantifier
graphPatternQuantifierPlusSign =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphPatternQuantifier"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "plusSign"),
        Core.fieldTerm = Core.TermUnit}}))

graphPatternWhereClause :: Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm (Maybe Grammar.GraphPatternWhereClause)
graphPatternWhereClause x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
        Core.projectionField = (Core.Name "whereClause")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

graphPatternWithKeepClause :: Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm (Maybe Grammar.KeepClause) -> Phantoms.TTerm Grammar.GraphPattern
graphPatternWithKeepClause original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "matchMode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "matchMode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "pathPatterns"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "pathPatterns")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "keepClause"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "whereClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "whereClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

graphPatternWithMatchMode :: Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm (Maybe Grammar.MatchMode) -> Phantoms.TTerm Grammar.GraphPattern
graphPatternWithMatchMode original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "matchMode"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "pathPatterns"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "pathPatterns")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "keepClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "keepClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "whereClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "whereClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

graphPatternWithPathPatterns :: Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm Grammar.PathPatternList -> Phantoms.TTerm Grammar.GraphPattern
graphPatternWithPathPatterns original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "matchMode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "matchMode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "pathPatterns"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "keepClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "keepClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "whereClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "whereClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

graphPatternWithWhereClause :: Phantoms.TTerm Grammar.GraphPattern -> Phantoms.TTerm (Maybe Grammar.GraphPatternWhereClause) -> Phantoms.TTerm Grammar.GraphPattern
graphPatternWithWhereClause original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "matchMode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "matchMode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "pathPatterns"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "pathPatterns")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "keepClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphPattern"),
              Core.projectionField = (Core.Name "keepClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "whereClause"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

graphPatternYieldItemListItems :: Phantoms.TTerm [Grammar.GraphPatternYieldItem] -> Phantoms.TTerm Grammar.GraphPatternYieldItemList
graphPatternYieldItemListItems x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphPatternYieldItemList"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "items"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphPatternYieldItemListNoBindings :: Phantoms.TTerm Grammar.GraphPatternYieldItemList
graphPatternYieldItemListNoBindings =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphPatternYieldItemList"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "noBindings"),
        Core.fieldTerm = Core.TermUnit}}))

graphReferenceDelimitedGraphName :: Phantoms.TTerm Grammar.DelimitedGraphName -> Phantoms.TTerm Grammar.GraphReference
graphReferenceDelimitedGraphName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "delimitedGraphName"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphReferenceHomeGraph :: Phantoms.TTerm Grammar.HomeGraph -> Phantoms.TTerm Grammar.GraphReference
graphReferenceHomeGraph x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "homeGraph"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphReferenceParameterSpecification :: Phantoms.TTerm Grammar.ReferenceParameterSpecification -> Phantoms.TTerm Grammar.GraphReference
graphReferenceParameterSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parameterSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphReferenceParentAndGraphName :: Phantoms.TTerm Grammar.ParentAndGraphName -> Phantoms.TTerm Grammar.GraphReference
graphReferenceParentAndGraphName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parentAndGraphName"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphReferenceValueTypeClosed :: Phantoms.TTerm Grammar.ClosedGraphReferenceValueType -> Phantoms.TTerm Grammar.GraphReferenceValueType
graphReferenceValueTypeClosed x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphReferenceValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "closed"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphReferenceValueTypeOpen :: Phantoms.TTerm Grammar.OpenGraphReferenceValueType -> Phantoms.TTerm Grammar.GraphReferenceValueType
graphReferenceValueTypeOpen x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphReferenceValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "open"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphTypeOptionOfGraphType :: Phantoms.TTerm Grammar.OfGraphType -> Phantoms.TTerm Grammar.GraphTypeOption
graphTypeOptionOfGraphType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphTypeOption"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "ofGraphType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphTypeOptionOpenGraphType :: Phantoms.TTerm Grammar.OpenGraphType -> Phantoms.TTerm Grammar.GraphTypeOption
graphTypeOptionOpenGraphType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphTypeOption"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "openGraphType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphTypeReferenceParameterSpecification :: Phantoms.TTerm Grammar.ReferenceParameterSpecification -> Phantoms.TTerm Grammar.GraphTypeReference
graphTypeReferenceParameterSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphTypeReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parameterSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphTypeReferenceParentAndTypeName :: Phantoms.TTerm Grammar.CatalogGraphTypeParentAndName -> Phantoms.TTerm Grammar.GraphTypeReference
graphTypeReferenceParentAndTypeName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphTypeReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parentAndTypeName"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphTypeSourceCopyOf :: Phantoms.TTerm Grammar.CopyOfGraphType -> Phantoms.TTerm Grammar.GraphTypeSource
graphTypeSourceCopyOf x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphTypeSource"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "copyOf"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphTypeSourceLikeGraph :: Phantoms.TTerm Grammar.GraphTypeLikeGraph -> Phantoms.TTerm Grammar.GraphTypeSource
graphTypeSourceLikeGraph x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphTypeSource"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "likeGraph"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphTypeSourceNestedSpecification :: Phantoms.TTerm Grammar.NestedGraphTypeSpecification -> Phantoms.TTerm Grammar.GraphTypeSource
graphTypeSourceNestedSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GraphTypeSource"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nestedSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

graphVariableDefinition :: Phantoms.TTerm Grammar.BindingVariable -> Phantoms.TTerm Grammar.OptTypedGraphInitializer -> Phantoms.TTerm Grammar.GraphVariableDefinition
graphVariableDefinition variable initializer =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphVariableDefinition"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm variable)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm initializer)}]}))

graphVariableDefinitionInitializer :: Phantoms.TTerm Grammar.GraphVariableDefinition -> Phantoms.TTerm Grammar.OptTypedGraphInitializer
graphVariableDefinitionInitializer x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GraphVariableDefinition"),
        Core.projectionField = (Core.Name "initializer")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

graphVariableDefinitionVariable :: Phantoms.TTerm Grammar.GraphVariableDefinition -> Phantoms.TTerm Grammar.BindingVariable
graphVariableDefinitionVariable x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.GraphVariableDefinition"),
        Core.projectionField = (Core.Name "variable")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

graphVariableDefinitionWithInitializer :: Phantoms.TTerm Grammar.GraphVariableDefinition -> Phantoms.TTerm Grammar.OptTypedGraphInitializer -> Phantoms.TTerm Grammar.GraphVariableDefinition
graphVariableDefinitionWithInitializer original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphVariableDefinition"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphVariableDefinition"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

graphVariableDefinitionWithVariable :: Phantoms.TTerm Grammar.GraphVariableDefinition -> Phantoms.TTerm Grammar.BindingVariable -> Phantoms.TTerm Grammar.GraphVariableDefinition
graphVariableDefinitionWithVariable original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.GraphVariableDefinition"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.GraphVariableDefinition"),
              Core.projectionField = (Core.Name "initializer")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

groupingElementListElements :: Phantoms.TTerm [Grammar.GroupingElement] -> Phantoms.TTerm Grammar.GroupingElementList
groupingElementListElements x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GroupingElementList"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "elements"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

groupingElementListEmptySet :: Phantoms.TTerm Grammar.GroupingElementList
groupingElementListEmptySet =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.GroupingElementList"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "emptySet"),
        Core.fieldTerm = Core.TermUnit}}))

homeGraphHomeGraph :: Phantoms.TTerm Grammar.HomeGraph
homeGraphHomeGraph =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.HomeGraph"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "homeGraph"),
        Core.fieldTerm = Core.TermUnit}}))

homeGraphHomePropertyGraph :: Phantoms.TTerm Grammar.HomeGraph
homeGraphHomePropertyGraph =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.HomeGraph"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "homePropertyGraph"),
        Core.fieldTerm = Core.TermUnit}}))

immaterialValueTypeEmptyType :: Phantoms.TTerm Grammar.EmptyType -> Phantoms.TTerm Grammar.ImmaterialValueType
immaterialValueTypeEmptyType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ImmaterialValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "emptyType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

immaterialValueTypeNullType :: Phantoms.TTerm Grammar.NullType -> Phantoms.TTerm Grammar.ImmaterialValueType
immaterialValueTypeNullType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ImmaterialValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nullType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

impliesImplies :: Phantoms.TTerm Grammar.Implies
impliesImplies =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Implies"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "implies"),
        Core.fieldTerm = Core.TermUnit}}))

impliesRightDoubleArrow :: Phantoms.TTerm Grammar.Implies
impliesRightDoubleArrow =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Implies"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "rightDoubleArrow"),
        Core.fieldTerm = Core.TermUnit}}))

inlineProcedureCall :: Phantoms.TTerm (Maybe Grammar.VariableScopeClause) -> Phantoms.TTerm Grammar.NestedProcedureSpecification -> Phantoms.TTerm Grammar.InlineProcedureCall
inlineProcedureCall scope nested =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InlineProcedureCall"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "scope"),
          Core.fieldTerm = (Phantoms.unTTerm scope)},
        Core.Field {
          Core.fieldName = (Core.Name "nested"),
          Core.fieldTerm = (Phantoms.unTTerm nested)}]}))

inlineProcedureCallNested :: Phantoms.TTerm Grammar.InlineProcedureCall -> Phantoms.TTerm Grammar.NestedProcedureSpecification
inlineProcedureCallNested x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.InlineProcedureCall"),
        Core.projectionField = (Core.Name "nested")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

inlineProcedureCallScope :: Phantoms.TTerm Grammar.InlineProcedureCall -> Phantoms.TTerm (Maybe Grammar.VariableScopeClause)
inlineProcedureCallScope x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.InlineProcedureCall"),
        Core.projectionField = (Core.Name "scope")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

inlineProcedureCallWithNested :: Phantoms.TTerm Grammar.InlineProcedureCall -> Phantoms.TTerm Grammar.NestedProcedureSpecification -> Phantoms.TTerm Grammar.InlineProcedureCall
inlineProcedureCallWithNested original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InlineProcedureCall"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "scope"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.InlineProcedureCall"),
              Core.projectionField = (Core.Name "scope")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nested"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

inlineProcedureCallWithScope :: Phantoms.TTerm Grammar.InlineProcedureCall -> Phantoms.TTerm (Maybe Grammar.VariableScopeClause) -> Phantoms.TTerm Grammar.InlineProcedureCall
inlineProcedureCallWithScope original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InlineProcedureCall"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "scope"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "nested"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.InlineProcedureCall"),
              Core.projectionField = (Core.Name "nested")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

insertEdgeAndNode :: Phantoms.TTerm Grammar.InsertEdgePattern -> Phantoms.TTerm Grammar.InsertNodePattern -> Phantoms.TTerm Grammar.InsertEdgeAndNode
insertEdgeAndNode edge node =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InsertEdgeAndNode"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "edge"),
          Core.fieldTerm = (Phantoms.unTTerm edge)},
        Core.Field {
          Core.fieldName = (Core.Name "node"),
          Core.fieldTerm = (Phantoms.unTTerm node)}]}))

insertEdgeAndNodeEdge :: Phantoms.TTerm Grammar.InsertEdgeAndNode -> Phantoms.TTerm Grammar.InsertEdgePattern
insertEdgeAndNodeEdge x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.InsertEdgeAndNode"),
        Core.projectionField = (Core.Name "edge")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

insertEdgeAndNodeNode :: Phantoms.TTerm Grammar.InsertEdgeAndNode -> Phantoms.TTerm Grammar.InsertNodePattern
insertEdgeAndNodeNode x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.InsertEdgeAndNode"),
        Core.projectionField = (Core.Name "node")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

insertEdgeAndNodeWithEdge :: Phantoms.TTerm Grammar.InsertEdgeAndNode -> Phantoms.TTerm Grammar.InsertEdgePattern -> Phantoms.TTerm Grammar.InsertEdgeAndNode
insertEdgeAndNodeWithEdge original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InsertEdgeAndNode"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "edge"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "node"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.InsertEdgeAndNode"),
              Core.projectionField = (Core.Name "node")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

insertEdgeAndNodeWithNode :: Phantoms.TTerm Grammar.InsertEdgeAndNode -> Phantoms.TTerm Grammar.InsertNodePattern -> Phantoms.TTerm Grammar.InsertEdgeAndNode
insertEdgeAndNodeWithNode original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InsertEdgeAndNode"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "edge"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.InsertEdgeAndNode"),
              Core.projectionField = (Core.Name "edge")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "node"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

insertEdgePatternPointingLeft :: Phantoms.TTerm Grammar.InsertEdgePointingLeft -> Phantoms.TTerm Grammar.InsertEdgePattern
insertEdgePatternPointingLeft x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.InsertEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pointingLeft"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

insertEdgePatternPointingRight :: Phantoms.TTerm Grammar.InsertEdgePointingRight -> Phantoms.TTerm Grammar.InsertEdgePattern
insertEdgePatternPointingRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.InsertEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pointingRight"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

insertEdgePatternUndirected :: Phantoms.TTerm Grammar.InsertEdgeUndirected -> Phantoms.TTerm Grammar.InsertEdgePattern
insertEdgePatternUndirected x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.InsertEdgePattern"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "undirected"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

insertElementPatternFiller :: Phantoms.TTerm (Maybe Grammar.ElementVariableDeclaration) -> Phantoms.TTerm (Maybe Grammar.LabelAndPropertySetSpecification) -> Phantoms.TTerm Grammar.InsertElementPatternFiller
insertElementPatternFiller variableDeclaration labelAndProperties =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InsertElementPatternFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variableDeclaration"),
          Core.fieldTerm = (Phantoms.unTTerm variableDeclaration)},
        Core.Field {
          Core.fieldName = (Core.Name "labelAndProperties"),
          Core.fieldTerm = (Phantoms.unTTerm labelAndProperties)}]}))

insertElementPatternFillerLabelAndProperties :: Phantoms.TTerm Grammar.InsertElementPatternFiller -> Phantoms.TTerm (Maybe Grammar.LabelAndPropertySetSpecification)
insertElementPatternFillerLabelAndProperties x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.InsertElementPatternFiller"),
        Core.projectionField = (Core.Name "labelAndProperties")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

insertElementPatternFillerVariableDeclaration :: Phantoms.TTerm Grammar.InsertElementPatternFiller -> Phantoms.TTerm (Maybe Grammar.ElementVariableDeclaration)
insertElementPatternFillerVariableDeclaration x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.InsertElementPatternFiller"),
        Core.projectionField = (Core.Name "variableDeclaration")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

insertElementPatternFillerWithLabelAndProperties :: Phantoms.TTerm Grammar.InsertElementPatternFiller -> Phantoms.TTerm (Maybe Grammar.LabelAndPropertySetSpecification) -> Phantoms.TTerm Grammar.InsertElementPatternFiller
insertElementPatternFillerWithLabelAndProperties original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InsertElementPatternFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variableDeclaration"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.InsertElementPatternFiller"),
              Core.projectionField = (Core.Name "variableDeclaration")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "labelAndProperties"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

insertElementPatternFillerWithVariableDeclaration :: Phantoms.TTerm Grammar.InsertElementPatternFiller -> Phantoms.TTerm (Maybe Grammar.ElementVariableDeclaration) -> Phantoms.TTerm Grammar.InsertElementPatternFiller
insertElementPatternFillerWithVariableDeclaration original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InsertElementPatternFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variableDeclaration"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "labelAndProperties"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.InsertElementPatternFiller"),
              Core.projectionField = (Core.Name "labelAndProperties")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

insertPathPattern :: Phantoms.TTerm Grammar.InsertNodePattern -> Phantoms.TTerm [Grammar.InsertEdgeAndNode] -> Phantoms.TTerm Grammar.InsertPathPattern
insertPathPattern startNode edgesAndNodes =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InsertPathPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "startNode"),
          Core.fieldTerm = (Phantoms.unTTerm startNode)},
        Core.Field {
          Core.fieldName = (Core.Name "edgesAndNodes"),
          Core.fieldTerm = (Phantoms.unTTerm edgesAndNodes)}]}))

insertPathPatternEdgesAndNodes :: Phantoms.TTerm Grammar.InsertPathPattern -> Phantoms.TTerm [Grammar.InsertEdgeAndNode]
insertPathPatternEdgesAndNodes x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.InsertPathPattern"),
        Core.projectionField = (Core.Name "edgesAndNodes")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

insertPathPatternStartNode :: Phantoms.TTerm Grammar.InsertPathPattern -> Phantoms.TTerm Grammar.InsertNodePattern
insertPathPatternStartNode x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.InsertPathPattern"),
        Core.projectionField = (Core.Name "startNode")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

insertPathPatternWithEdgesAndNodes :: Phantoms.TTerm Grammar.InsertPathPattern -> Phantoms.TTerm [Grammar.InsertEdgeAndNode] -> Phantoms.TTerm Grammar.InsertPathPattern
insertPathPatternWithEdgesAndNodes original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InsertPathPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "startNode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.InsertPathPattern"),
              Core.projectionField = (Core.Name "startNode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "edgesAndNodes"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

insertPathPatternWithStartNode :: Phantoms.TTerm Grammar.InsertPathPattern -> Phantoms.TTerm Grammar.InsertNodePattern -> Phantoms.TTerm Grammar.InsertPathPattern
insertPathPatternWithStartNode original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.InsertPathPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "startNode"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "edgesAndNodes"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.InsertPathPattern"),
              Core.projectionField = (Core.Name "edgesAndNodes")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

int128Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int128Type
int128Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int128Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

int128TypeNotNull :: Phantoms.TTerm Grammar.Int128Type -> Phantoms.TTerm Bool
int128TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Int128Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

int128TypeWithNotNull :: Phantoms.TTerm Grammar.Int128Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int128Type
int128TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int128Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

int16Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int16Type
int16Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int16Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

int16TypeNotNull :: Phantoms.TTerm Grammar.Int16Type -> Phantoms.TTerm Bool
int16TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Int16Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

int16TypeWithNotNull :: Phantoms.TTerm Grammar.Int16Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int16Type
int16TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int16Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

int256Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int256Type
int256Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int256Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

int256TypeNotNull :: Phantoms.TTerm Grammar.Int256Type -> Phantoms.TTerm Bool
int256TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Int256Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

int256TypeWithNotNull :: Phantoms.TTerm Grammar.Int256Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int256Type
int256TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int256Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

int32Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int32Type
int32Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int32Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

int32TypeNotNull :: Phantoms.TTerm Grammar.Int32Type -> Phantoms.TTerm Bool
int32TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Int32Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

int32TypeWithNotNull :: Phantoms.TTerm Grammar.Int32Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int32Type
int32TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int32Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

int64Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int64Type
int64Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int64Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

int64TypeNotNull :: Phantoms.TTerm Grammar.Int64Type -> Phantoms.TTerm Bool
int64TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Int64Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

int64TypeWithNotNull :: Phantoms.TTerm Grammar.Int64Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int64Type
int64TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int64Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

int8Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int8Type
int8Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int8Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

int8TypeNotNull :: Phantoms.TTerm Grammar.Int8Type -> Phantoms.TTerm Bool
int8TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Int8Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

int8TypeWithNotNull :: Phantoms.TTerm Grammar.Int8Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Int8Type
int8TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Int8Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

intWithPrecision :: Phantoms.TTerm (Maybe Grammar.Precision) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.IntWithPrecision
intWithPrecision precision notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IntWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Phantoms.unTTerm precision)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

intWithPrecisionNotNull :: Phantoms.TTerm Grammar.IntWithPrecision -> Phantoms.TTerm Bool
intWithPrecisionNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.IntWithPrecision"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

intWithPrecisionPrecision :: Phantoms.TTerm Grammar.IntWithPrecision -> Phantoms.TTerm (Maybe Grammar.Precision)
intWithPrecisionPrecision x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.IntWithPrecision"),
        Core.projectionField = (Core.Name "precision")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

intWithPrecisionWithNotNull :: Phantoms.TTerm Grammar.IntWithPrecision -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.IntWithPrecision
intWithPrecisionWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IntWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IntWithPrecision"),
              Core.projectionField = (Core.Name "precision")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

intWithPrecisionWithPrecision :: Phantoms.TTerm Grammar.IntWithPrecision -> Phantoms.TTerm (Maybe Grammar.Precision) -> Phantoms.TTerm Grammar.IntWithPrecision
intWithPrecisionWithPrecision original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IntWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IntWithPrecision"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

integer128Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer128Type
integer128Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer128Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

integer128TypeNotNull :: Phantoms.TTerm Grammar.Integer128Type -> Phantoms.TTerm Bool
integer128TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Integer128Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

integer128TypeWithNotNull :: Phantoms.TTerm Grammar.Integer128Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer128Type
integer128TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer128Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

integer16Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer16Type
integer16Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer16Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

integer16TypeNotNull :: Phantoms.TTerm Grammar.Integer16Type -> Phantoms.TTerm Bool
integer16TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Integer16Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

integer16TypeWithNotNull :: Phantoms.TTerm Grammar.Integer16Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer16Type
integer16TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer16Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

integer256Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer256Type
integer256Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer256Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

integer256TypeNotNull :: Phantoms.TTerm Grammar.Integer256Type -> Phantoms.TTerm Bool
integer256TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Integer256Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

integer256TypeWithNotNull :: Phantoms.TTerm Grammar.Integer256Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer256Type
integer256TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer256Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

integer32Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer32Type
integer32Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer32Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

integer32TypeNotNull :: Phantoms.TTerm Grammar.Integer32Type -> Phantoms.TTerm Bool
integer32TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Integer32Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

integer32TypeWithNotNull :: Phantoms.TTerm Grammar.Integer32Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer32Type
integer32TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer32Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

integer64Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer64Type
integer64Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer64Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

integer64TypeNotNull :: Phantoms.TTerm Grammar.Integer64Type -> Phantoms.TTerm Bool
integer64TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Integer64Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

integer64TypeWithNotNull :: Phantoms.TTerm Grammar.Integer64Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer64Type
integer64TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer64Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

integer8Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer8Type
integer8Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer8Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

integer8TypeNotNull :: Phantoms.TTerm Grammar.Integer8Type -> Phantoms.TTerm Bool
integer8TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Integer8Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

integer8TypeWithNotNull :: Phantoms.TTerm Grammar.Integer8Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Integer8Type
integer8TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Integer8Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

integerWithPrecision :: Phantoms.TTerm (Maybe Grammar.Precision) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.IntegerWithPrecision
integerWithPrecision precision notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IntegerWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Phantoms.unTTerm precision)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

integerWithPrecisionNotNull :: Phantoms.TTerm Grammar.IntegerWithPrecision -> Phantoms.TTerm Bool
integerWithPrecisionNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.IntegerWithPrecision"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

integerWithPrecisionPrecision :: Phantoms.TTerm Grammar.IntegerWithPrecision -> Phantoms.TTerm (Maybe Grammar.Precision)
integerWithPrecisionPrecision x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.IntegerWithPrecision"),
        Core.projectionField = (Core.Name "precision")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

integerWithPrecisionWithNotNull :: Phantoms.TTerm Grammar.IntegerWithPrecision -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.IntegerWithPrecision
integerWithPrecisionWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IntegerWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IntegerWithPrecision"),
              Core.projectionField = (Core.Name "precision")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

integerWithPrecisionWithPrecision :: Phantoms.TTerm Grammar.IntegerWithPrecision -> Phantoms.TTerm (Maybe Grammar.Precision) -> Phantoms.TTerm Grammar.IntegerWithPrecision
integerWithPrecisionWithPrecision original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IntegerWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IntegerWithPrecision"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

isLabelExpression :: Phantoms.TTerm Grammar.IsOrColon -> Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.IsLabelExpression
isLabelExpression isOrColon label =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IsLabelExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm isOrColon)},
        Core.Field {
          Core.fieldName = (Core.Name "label"),
          Core.fieldTerm = (Phantoms.unTTerm label)}]}))

isLabelExpressionIsOrColon :: Phantoms.TTerm Grammar.IsLabelExpression -> Phantoms.TTerm Grammar.IsOrColon
isLabelExpressionIsOrColon x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.IsLabelExpression"),
        Core.projectionField = (Core.Name "isOrColon")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

isLabelExpressionLabel :: Phantoms.TTerm Grammar.IsLabelExpression -> Phantoms.TTerm Grammar.LabelExpression
isLabelExpressionLabel x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.IsLabelExpression"),
        Core.projectionField = (Core.Name "label")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

isLabelExpressionWithIsOrColon :: Phantoms.TTerm Grammar.IsLabelExpression -> Phantoms.TTerm Grammar.IsOrColon -> Phantoms.TTerm Grammar.IsLabelExpression
isLabelExpressionWithIsOrColon original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IsLabelExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "label"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IsLabelExpression"),
              Core.projectionField = (Core.Name "label")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

isLabelExpressionWithLabel :: Phantoms.TTerm Grammar.IsLabelExpression -> Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.IsLabelExpression
isLabelExpressionWithLabel original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IsLabelExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IsLabelExpression"),
              Core.projectionField = (Core.Name "isOrColon")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "label"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

isLabeledOrColonColon :: Phantoms.TTerm Grammar.IsLabeledOrColon
isLabeledOrColonColon =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.IsLabeledOrColon"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "colon"),
        Core.fieldTerm = Core.TermUnit}}))

isLabeledOrColonNot :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.IsLabeledOrColon
isLabeledOrColonNot x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.IsLabeledOrColon"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "not"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

isNotExpr :: Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TruthValue -> Phantoms.TTerm Grammar.IsNotExpr
isNotExpr valueExpression not truthValue =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm not)},
        Core.Field {
          Core.fieldName = (Core.Name "truthValue"),
          Core.fieldTerm = (Phantoms.unTTerm truthValue)}]}))

isNotExprNot :: Phantoms.TTerm Grammar.IsNotExpr -> Phantoms.TTerm Bool
isNotExprNot x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
        Core.projectionField = (Core.Name "not")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

isNotExprTruthValue :: Phantoms.TTerm Grammar.IsNotExpr -> Phantoms.TTerm Grammar.TruthValue
isNotExprTruthValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
        Core.projectionField = (Core.Name "truthValue")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

isNotExprValueExpression :: Phantoms.TTerm Grammar.IsNotExpr -> Phantoms.TTerm Grammar.ValueExpression
isNotExprValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

isNotExprWithNot :: Phantoms.TTerm Grammar.IsNotExpr -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.IsNotExpr
isNotExprWithNot original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "truthValue"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
              Core.projectionField = (Core.Name "truthValue")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

isNotExprWithTruthValue :: Phantoms.TTerm Grammar.IsNotExpr -> Phantoms.TTerm Grammar.TruthValue -> Phantoms.TTerm Grammar.IsNotExpr
isNotExprWithTruthValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
              Core.projectionField = (Core.Name "not")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "truthValue"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

isNotExprWithValueExpression :: Phantoms.TTerm Grammar.IsNotExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.IsNotExpr
isNotExprWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
              Core.projectionField = (Core.Name "not")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "truthValue"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IsNotExpr"),
              Core.projectionField = (Core.Name "truthValue")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

isOrColonColon :: Phantoms.TTerm Grammar.IsOrColon
isOrColonColon =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.IsOrColon"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "colon"),
        Core.fieldTerm = Core.TermUnit}}))

isOrColonIs :: Phantoms.TTerm Grammar.IsOrColon
isOrColonIs =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.IsOrColon"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "is"),
        Core.fieldTerm = Core.TermUnit}}))

isOrColonWithLabels :: Phantoms.TTerm Grammar.IsOrColon -> Phantoms.TTerm Grammar.LabelSetSpecification -> Phantoms.TTerm Grammar.IsOrColonWithLabels
isOrColonWithLabels isOrColon labels =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IsOrColonWithLabels"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm isOrColon)},
        Core.Field {
          Core.fieldName = (Core.Name "labels"),
          Core.fieldTerm = (Phantoms.unTTerm labels)}]}))

isOrColonWithLabelsIsOrColon :: Phantoms.TTerm Grammar.IsOrColonWithLabels -> Phantoms.TTerm Grammar.IsOrColon
isOrColonWithLabelsIsOrColon x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.IsOrColonWithLabels"),
        Core.projectionField = (Core.Name "isOrColon")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

isOrColonWithLabelsLabels :: Phantoms.TTerm Grammar.IsOrColonWithLabels -> Phantoms.TTerm Grammar.LabelSetSpecification
isOrColonWithLabelsLabels x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.IsOrColonWithLabels"),
        Core.projectionField = (Core.Name "labels")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

isOrColonWithLabelsWithIsOrColon :: Phantoms.TTerm Grammar.IsOrColonWithLabels -> Phantoms.TTerm Grammar.IsOrColon -> Phantoms.TTerm Grammar.IsOrColonWithLabels
isOrColonWithLabelsWithIsOrColon original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IsOrColonWithLabels"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "labels"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IsOrColonWithLabels"),
              Core.projectionField = (Core.Name "labels")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

isOrColonWithLabelsWithLabels :: Phantoms.TTerm Grammar.IsOrColonWithLabels -> Phantoms.TTerm Grammar.LabelSetSpecification -> Phantoms.TTerm Grammar.IsOrColonWithLabels
isOrColonWithLabelsWithLabels original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.IsOrColonWithLabels"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.IsOrColonWithLabels"),
              Core.projectionField = (Core.Name "isOrColon")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "labels"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

labelAndPropertySetSpecification :: Phantoms.TTerm (Maybe Grammar.IsOrColon) -> Phantoms.TTerm (Maybe Grammar.LabelSetSpecification) -> Phantoms.TTerm (Maybe Grammar.ElementPropertySpecification) -> Phantoms.TTerm Grammar.LabelAndPropertySetSpecification
labelAndPropertySetSpecification isOrColon labelSet propertySpecification =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm isOrColon)},
        Core.Field {
          Core.fieldName = (Core.Name "labelSet"),
          Core.fieldTerm = (Phantoms.unTTerm labelSet)},
        Core.Field {
          Core.fieldName = (Core.Name "propertySpecification"),
          Core.fieldTerm = (Phantoms.unTTerm propertySpecification)}]}))

labelAndPropertySetSpecificationIsOrColon :: Phantoms.TTerm Grammar.LabelAndPropertySetSpecification -> Phantoms.TTerm (Maybe Grammar.IsOrColon)
labelAndPropertySetSpecificationIsOrColon x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
        Core.projectionField = (Core.Name "isOrColon")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

labelAndPropertySetSpecificationLabelSet :: Phantoms.TTerm Grammar.LabelAndPropertySetSpecification -> Phantoms.TTerm (Maybe Grammar.LabelSetSpecification)
labelAndPropertySetSpecificationLabelSet x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
        Core.projectionField = (Core.Name "labelSet")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

labelAndPropertySetSpecificationPropertySpecification :: Phantoms.TTerm Grammar.LabelAndPropertySetSpecification -> Phantoms.TTerm (Maybe Grammar.ElementPropertySpecification)
labelAndPropertySetSpecificationPropertySpecification x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
        Core.projectionField = (Core.Name "propertySpecification")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

labelAndPropertySetSpecificationWithIsOrColon :: Phantoms.TTerm Grammar.LabelAndPropertySetSpecification -> Phantoms.TTerm (Maybe Grammar.IsOrColon) -> Phantoms.TTerm Grammar.LabelAndPropertySetSpecification
labelAndPropertySetSpecificationWithIsOrColon original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "labelSet"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
              Core.projectionField = (Core.Name "labelSet")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "propertySpecification"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
              Core.projectionField = (Core.Name "propertySpecification")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

labelAndPropertySetSpecificationWithLabelSet :: Phantoms.TTerm Grammar.LabelAndPropertySetSpecification -> Phantoms.TTerm (Maybe Grammar.LabelSetSpecification) -> Phantoms.TTerm Grammar.LabelAndPropertySetSpecification
labelAndPropertySetSpecificationWithLabelSet original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
              Core.projectionField = (Core.Name "isOrColon")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "labelSet"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "propertySpecification"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
              Core.projectionField = (Core.Name "propertySpecification")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

labelAndPropertySetSpecificationWithPropertySpecification :: Phantoms.TTerm Grammar.LabelAndPropertySetSpecification -> Phantoms.TTerm (Maybe Grammar.ElementPropertySpecification) -> Phantoms.TTerm Grammar.LabelAndPropertySetSpecification
labelAndPropertySetSpecificationWithPropertySpecification original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
              Core.projectionField = (Core.Name "isOrColon")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "labelSet"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LabelAndPropertySetSpecification"),
              Core.projectionField = (Core.Name "labelSet")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "propertySpecification"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

labelExpressionConjunction :: Phantoms.TTerm Grammar.ConjunctionLabelExpression -> Phantoms.TTerm Grammar.LabelExpression
labelExpressionConjunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LabelExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "conjunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

labelExpressionDisjunction :: Phantoms.TTerm Grammar.DisjunctionLabelExpression -> Phantoms.TTerm Grammar.LabelExpression
labelExpressionDisjunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LabelExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "disjunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

labelExpressionName :: Phantoms.TTerm Grammar.LabelName -> Phantoms.TTerm Grammar.LabelExpression
labelExpressionName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LabelExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "name"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

labelExpressionNegation :: Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.LabelExpression
labelExpressionNegation x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LabelExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "negation"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

labelExpressionParenthesized :: Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.LabelExpression
labelExpressionParenthesized x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LabelExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parenthesized"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

labelExpressionWildcard :: Phantoms.TTerm Grammar.LabelExpression
labelExpressionWildcard =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LabelExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "wildcard"),
        Core.fieldTerm = Core.TermUnit}}))

labelSetPhraseIsOrColonWithLabels :: Phantoms.TTerm Grammar.IsOrColonWithLabels -> Phantoms.TTerm Grammar.LabelSetPhrase
labelSetPhraseIsOrColonWithLabels x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LabelSetPhrase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "isOrColonWithLabels"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

labelSetPhraseMultipleLabels :: Phantoms.TTerm Grammar.LabelSetSpecification -> Phantoms.TTerm Grammar.LabelSetPhrase
labelSetPhraseMultipleLabels x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LabelSetPhrase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "multipleLabels"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

labelSetPhraseSingleLabel :: Phantoms.TTerm Grammar.LabelName -> Phantoms.TTerm Grammar.LabelSetPhrase
labelSetPhraseSingleLabel x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LabelSetPhrase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "singleLabel"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

labeledPredicate :: Phantoms.TTerm Grammar.ElementVariableReference -> Phantoms.TTerm Grammar.LabeledPredicatePart2 -> Phantoms.TTerm Grammar.LabeledPredicate
labeledPredicate elementVariableReference labeledPart =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LabeledPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "elementVariableReference"),
          Core.fieldTerm = (Phantoms.unTTerm elementVariableReference)},
        Core.Field {
          Core.fieldName = (Core.Name "labeledPart"),
          Core.fieldTerm = (Phantoms.unTTerm labeledPart)}]}))

labeledPredicateElementVariableReference :: Phantoms.TTerm Grammar.LabeledPredicate -> Phantoms.TTerm Grammar.ElementVariableReference
labeledPredicateElementVariableReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.LabeledPredicate"),
        Core.projectionField = (Core.Name "elementVariableReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

labeledPredicateLabeledPart :: Phantoms.TTerm Grammar.LabeledPredicate -> Phantoms.TTerm Grammar.LabeledPredicatePart2
labeledPredicateLabeledPart x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.LabeledPredicate"),
        Core.projectionField = (Core.Name "labeledPart")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

labeledPredicatePart2 :: Phantoms.TTerm Grammar.IsLabeledOrColon -> Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.LabeledPredicatePart2
labeledPredicatePart2 isLabeledOrColon labelExpression =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LabeledPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isLabeledOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm isLabeledOrColon)},
        Core.Field {
          Core.fieldName = (Core.Name "labelExpression"),
          Core.fieldTerm = (Phantoms.unTTerm labelExpression)}]}))

labeledPredicatePart2IsLabeledOrColon :: Phantoms.TTerm Grammar.LabeledPredicatePart2 -> Phantoms.TTerm Grammar.IsLabeledOrColon
labeledPredicatePart2IsLabeledOrColon x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.LabeledPredicatePart2"),
        Core.projectionField = (Core.Name "isLabeledOrColon")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

labeledPredicatePart2LabelExpression :: Phantoms.TTerm Grammar.LabeledPredicatePart2 -> Phantoms.TTerm Grammar.LabelExpression
labeledPredicatePart2LabelExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.LabeledPredicatePart2"),
        Core.projectionField = (Core.Name "labelExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

labeledPredicatePart2WithIsLabeledOrColon :: Phantoms.TTerm Grammar.LabeledPredicatePart2 -> Phantoms.TTerm Grammar.IsLabeledOrColon -> Phantoms.TTerm Grammar.LabeledPredicatePart2
labeledPredicatePart2WithIsLabeledOrColon original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LabeledPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isLabeledOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "labelExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LabeledPredicatePart2"),
              Core.projectionField = (Core.Name "labelExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

labeledPredicatePart2WithLabelExpression :: Phantoms.TTerm Grammar.LabeledPredicatePart2 -> Phantoms.TTerm Grammar.LabelExpression -> Phantoms.TTerm Grammar.LabeledPredicatePart2
labeledPredicatePart2WithLabelExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LabeledPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "isLabeledOrColon"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LabeledPredicatePart2"),
              Core.projectionField = (Core.Name "isLabeledOrColon")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "labelExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

labeledPredicateWithElementVariableReference :: Phantoms.TTerm Grammar.LabeledPredicate -> Phantoms.TTerm Grammar.ElementVariableReference -> Phantoms.TTerm Grammar.LabeledPredicate
labeledPredicateWithElementVariableReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LabeledPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "elementVariableReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "labeledPart"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LabeledPredicate"),
              Core.projectionField = (Core.Name "labeledPart")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

labeledPredicateWithLabeledPart :: Phantoms.TTerm Grammar.LabeledPredicate -> Phantoms.TTerm Grammar.LabeledPredicatePart2 -> Phantoms.TTerm Grammar.LabeledPredicate
labeledPredicateWithLabeledPart original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LabeledPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "elementVariableReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LabeledPredicate"),
              Core.projectionField = (Core.Name "elementVariableReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "labeledPart"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

lengthExpressionByte :: Phantoms.TTerm Grammar.ByteLengthExpression -> Phantoms.TTerm Grammar.LengthExpression
lengthExpressionByte x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LengthExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "byte"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

lengthExpressionChar :: Phantoms.TTerm Grammar.CharLengthExpression -> Phantoms.TTerm Grammar.LengthExpression
lengthExpressionChar x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LengthExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "char"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

lengthExpressionPath :: Phantoms.TTerm Grammar.PathLengthExpression -> Phantoms.TTerm Grammar.LengthExpression
lengthExpressionPath x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LengthExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "path"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

letValueExpression :: Phantoms.TTerm Grammar.LetVariableDefinitionList -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.LetValueExpression
letValueExpression letVariables valueExpression =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LetValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "letVariables"),
          Core.fieldTerm = (Phantoms.unTTerm letVariables)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)}]}))

letValueExpressionLetVariables :: Phantoms.TTerm Grammar.LetValueExpression -> Phantoms.TTerm Grammar.LetVariableDefinitionList
letValueExpressionLetVariables x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.LetValueExpression"),
        Core.projectionField = (Core.Name "letVariables")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

letValueExpressionValueExpression :: Phantoms.TTerm Grammar.LetValueExpression -> Phantoms.TTerm Grammar.ValueExpression
letValueExpressionValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.LetValueExpression"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

letValueExpressionWithLetVariables :: Phantoms.TTerm Grammar.LetValueExpression -> Phantoms.TTerm Grammar.LetVariableDefinitionList -> Phantoms.TTerm Grammar.LetValueExpression
letValueExpressionWithLetVariables original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LetValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "letVariables"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LetValueExpression"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

letValueExpressionWithValueExpression :: Phantoms.TTerm Grammar.LetValueExpression -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.LetValueExpression
letValueExpressionWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LetValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "letVariables"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.LetValueExpression"),
              Core.projectionField = (Core.Name "letVariables")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

letVariableDefinitionBindingEqualsValue :: Phantoms.TTerm Grammar.BindingEqualsValue -> Phantoms.TTerm Grammar.LetVariableDefinition
letVariableDefinitionBindingEqualsValue x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LetVariableDefinition"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "bindingEqualsValue"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

letVariableDefinitionValueVariable :: Phantoms.TTerm Grammar.ValueVariableDefinition -> Phantoms.TTerm Grammar.LetVariableDefinition
letVariableDefinitionValueVariable x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LetVariableDefinition"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "valueVariable"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

linearDataModifyingStatementAmbient :: Phantoms.TTerm Grammar.AmbientLinearDataModifyingStatement -> Phantoms.TTerm Grammar.LinearDataModifyingStatement
linearDataModifyingStatementAmbient x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LinearDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "ambient"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

linearDataModifyingStatementFocused :: Phantoms.TTerm Grammar.FocusedLinearDataModifyingStatement -> Phantoms.TTerm Grammar.LinearDataModifyingStatement
linearDataModifyingStatementFocused x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LinearDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "focused"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

linearQueryStatementAmbient :: Phantoms.TTerm Grammar.AmbientLinearQueryStatement -> Phantoms.TTerm Grammar.LinearQueryStatement
linearQueryStatementAmbient x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LinearQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "ambient"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

linearQueryStatementFocused :: Phantoms.TTerm Grammar.FocusedLinearQueryStatement -> Phantoms.TTerm Grammar.LinearQueryStatement
linearQueryStatementFocused x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LinearQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "focused"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

listValueConstructorByEnumeration :: Phantoms.TTerm (Maybe Grammar.ListValueTypeName) -> Phantoms.TTerm (Maybe Grammar.ListElementList) -> Phantoms.TTerm Grammar.ListValueConstructorByEnumeration
listValueConstructorByEnumeration listValueTypeName elements =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueConstructorByEnumeration"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "listValueTypeName"),
          Core.fieldTerm = (Phantoms.unTTerm listValueTypeName)},
        Core.Field {
          Core.fieldName = (Core.Name "elements"),
          Core.fieldTerm = (Phantoms.unTTerm elements)}]}))

listValueConstructorByEnumerationElements :: Phantoms.TTerm Grammar.ListValueConstructorByEnumeration -> Phantoms.TTerm (Maybe Grammar.ListElementList)
listValueConstructorByEnumerationElements x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueConstructorByEnumeration"),
        Core.projectionField = (Core.Name "elements")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueConstructorByEnumerationListValueTypeName :: Phantoms.TTerm Grammar.ListValueConstructorByEnumeration -> Phantoms.TTerm (Maybe Grammar.ListValueTypeName)
listValueConstructorByEnumerationListValueTypeName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueConstructorByEnumeration"),
        Core.projectionField = (Core.Name "listValueTypeName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueConstructorByEnumerationWithElements :: Phantoms.TTerm Grammar.ListValueConstructorByEnumeration -> Phantoms.TTerm (Maybe Grammar.ListElementList) -> Phantoms.TTerm Grammar.ListValueConstructorByEnumeration
listValueConstructorByEnumerationWithElements original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueConstructorByEnumeration"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "listValueTypeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueConstructorByEnumeration"),
              Core.projectionField = (Core.Name "listValueTypeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "elements"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

listValueConstructorByEnumerationWithListValueTypeName :: Phantoms.TTerm Grammar.ListValueConstructorByEnumeration -> Phantoms.TTerm (Maybe Grammar.ListValueTypeName) -> Phantoms.TTerm Grammar.ListValueConstructorByEnumeration
listValueConstructorByEnumerationWithListValueTypeName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueConstructorByEnumeration"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "listValueTypeName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "elements"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueConstructorByEnumeration"),
              Core.projectionField = (Core.Name "elements")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

listValueFunctionElements :: Phantoms.TTerm Grammar.ElementsFunction -> Phantoms.TTerm Grammar.ListValueFunction
listValueFunctionElements x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ListValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "elements"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

listValueFunctionTrim :: Phantoms.TTerm Grammar.TrimListFunction -> Phantoms.TTerm Grammar.ListValueFunction
listValueFunctionTrim x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ListValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "trim"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

listValueTypeAlt1 :: Phantoms.TTerm Grammar.ListValueTypeName -> Phantoms.TTerm Grammar.ValueType -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ListValueTypeAlt1
listValueTypeAlt1 typeName valueType maxLength notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm typeName)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm valueType)},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm maxLength)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

listValueTypeAlt1MaxLength :: Phantoms.TTerm Grammar.ListValueTypeAlt1 -> Phantoms.TTerm (Maybe Grammar.MaxLength)
listValueTypeAlt1MaxLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
        Core.projectionField = (Core.Name "maxLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeAlt1NotNull :: Phantoms.TTerm Grammar.ListValueTypeAlt1 -> Phantoms.TTerm Bool
listValueTypeAlt1NotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeAlt1TypeName :: Phantoms.TTerm Grammar.ListValueTypeAlt1 -> Phantoms.TTerm Grammar.ListValueTypeName
listValueTypeAlt1TypeName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
        Core.projectionField = (Core.Name "typeName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeAlt1ValueType :: Phantoms.TTerm Grammar.ListValueTypeAlt1 -> Phantoms.TTerm Grammar.ValueType
listValueTypeAlt1ValueType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
        Core.projectionField = (Core.Name "valueType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeAlt1WithMaxLength :: Phantoms.TTerm Grammar.ListValueTypeAlt1 -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Grammar.ListValueTypeAlt1
listValueTypeAlt1WithMaxLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

listValueTypeAlt1WithNotNull :: Phantoms.TTerm Grammar.ListValueTypeAlt1 -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ListValueTypeAlt1
listValueTypeAlt1WithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

listValueTypeAlt1WithTypeName :: Phantoms.TTerm Grammar.ListValueTypeAlt1 -> Phantoms.TTerm Grammar.ListValueTypeName -> Phantoms.TTerm Grammar.ListValueTypeAlt1
listValueTypeAlt1WithTypeName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

listValueTypeAlt1WithValueType :: Phantoms.TTerm Grammar.ListValueTypeAlt1 -> Phantoms.TTerm Grammar.ValueType -> Phantoms.TTerm Grammar.ListValueTypeAlt1
listValueTypeAlt1WithValueType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt1"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

listValueTypeAlt2 :: Phantoms.TTerm Grammar.ValueType -> Phantoms.TTerm Grammar.ListValueTypeName -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ListValueTypeAlt2
listValueTypeAlt2 valueType typeName maxLength notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm valueType)},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm typeName)},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm maxLength)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

listValueTypeAlt2MaxLength :: Phantoms.TTerm Grammar.ListValueTypeAlt2 -> Phantoms.TTerm (Maybe Grammar.MaxLength)
listValueTypeAlt2MaxLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
        Core.projectionField = (Core.Name "maxLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeAlt2NotNull :: Phantoms.TTerm Grammar.ListValueTypeAlt2 -> Phantoms.TTerm Bool
listValueTypeAlt2NotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeAlt2TypeName :: Phantoms.TTerm Grammar.ListValueTypeAlt2 -> Phantoms.TTerm Grammar.ListValueTypeName
listValueTypeAlt2TypeName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
        Core.projectionField = (Core.Name "typeName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeAlt2ValueType :: Phantoms.TTerm Grammar.ListValueTypeAlt2 -> Phantoms.TTerm Grammar.ValueType
listValueTypeAlt2ValueType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
        Core.projectionField = (Core.Name "valueType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeAlt2WithMaxLength :: Phantoms.TTerm Grammar.ListValueTypeAlt2 -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Grammar.ListValueTypeAlt2
listValueTypeAlt2WithMaxLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

listValueTypeAlt2WithNotNull :: Phantoms.TTerm Grammar.ListValueTypeAlt2 -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ListValueTypeAlt2
listValueTypeAlt2WithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

listValueTypeAlt2WithTypeName :: Phantoms.TTerm Grammar.ListValueTypeAlt2 -> Phantoms.TTerm Grammar.ListValueTypeName -> Phantoms.TTerm Grammar.ListValueTypeAlt2
listValueTypeAlt2WithTypeName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

listValueTypeAlt2WithValueType :: Phantoms.TTerm Grammar.ListValueTypeAlt2 -> Phantoms.TTerm Grammar.ValueType -> Phantoms.TTerm Grammar.ListValueTypeAlt2
listValueTypeAlt2WithValueType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt2"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

listValueTypeAlt3 :: Phantoms.TTerm Grammar.ListValueTypeName -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ListValueTypeAlt3
listValueTypeAlt3 typeName maxLength notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm typeName)},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm maxLength)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

listValueTypeAlt3MaxLength :: Phantoms.TTerm Grammar.ListValueTypeAlt3 -> Phantoms.TTerm (Maybe Grammar.MaxLength)
listValueTypeAlt3MaxLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
        Core.projectionField = (Core.Name "maxLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeAlt3NotNull :: Phantoms.TTerm Grammar.ListValueTypeAlt3 -> Phantoms.TTerm Bool
listValueTypeAlt3NotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeAlt3TypeName :: Phantoms.TTerm Grammar.ListValueTypeAlt3 -> Phantoms.TTerm Grammar.ListValueTypeName
listValueTypeAlt3TypeName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
        Core.projectionField = (Core.Name "typeName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeAlt3WithMaxLength :: Phantoms.TTerm Grammar.ListValueTypeAlt3 -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Grammar.ListValueTypeAlt3
listValueTypeAlt3WithMaxLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

listValueTypeAlt3WithNotNull :: Phantoms.TTerm Grammar.ListValueTypeAlt3 -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ListValueTypeAlt3
listValueTypeAlt3WithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

listValueTypeAlt3WithTypeName :: Phantoms.TTerm Grammar.ListValueTypeAlt3 -> Phantoms.TTerm Grammar.ListValueTypeName -> Phantoms.TTerm Grammar.ListValueTypeAlt3
listValueTypeAlt3WithTypeName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeAlt3"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

listValueTypeName :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ListValueTypeNameSynonym -> Phantoms.TTerm Grammar.ListValueTypeName
listValueTypeName group synonym =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "group"),
          Core.fieldTerm = (Phantoms.unTTerm group)},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Phantoms.unTTerm synonym)}]}))

listValueTypeNameGroup :: Phantoms.TTerm Grammar.ListValueTypeName -> Phantoms.TTerm Bool
listValueTypeNameGroup x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeName"),
        Core.projectionField = (Core.Name "group")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeNameSynonym :: Phantoms.TTerm Grammar.ListValueTypeName -> Phantoms.TTerm Grammar.ListValueTypeNameSynonym
listValueTypeNameSynonym x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeName"),
        Core.projectionField = (Core.Name "synonym")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

listValueTypeNameSynonymArray :: Phantoms.TTerm Grammar.ListValueTypeNameSynonym
listValueTypeNameSynonymArray =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ListValueTypeNameSynonym"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "array"),
        Core.fieldTerm = Core.TermUnit}}))

listValueTypeNameSynonymList :: Phantoms.TTerm Grammar.ListValueTypeNameSynonym
listValueTypeNameSynonymList =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ListValueTypeNameSynonym"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "list"),
        Core.fieldTerm = Core.TermUnit}}))

listValueTypeNameWithGroup :: Phantoms.TTerm Grammar.ListValueTypeName -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ListValueTypeName
listValueTypeNameWithGroup original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "group"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeName"),
              Core.projectionField = (Core.Name "synonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

listValueTypeNameWithSynonym :: Phantoms.TTerm Grammar.ListValueTypeName -> Phantoms.TTerm Grammar.ListValueTypeNameSynonym -> Phantoms.TTerm Grammar.ListValueTypeName
listValueTypeNameWithSynonym original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ListValueTypeName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "group"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ListValueTypeName"),
              Core.projectionField = (Core.Name "group")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

localDatetimeType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.LocalDatetimeType
localDatetimeType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LocalDatetimeType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

localDatetimeTypeChoiceLocalDatetime :: Phantoms.TTerm Grammar.LocalDatetimeType -> Phantoms.TTerm Grammar.LocalDatetimeTypeChoice
localDatetimeTypeChoiceLocalDatetime x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LocalDatetimeTypeChoice"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "localDatetime"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

localDatetimeTypeChoiceTimestampWithoutTimeZone :: Phantoms.TTerm Grammar.TimestampWithoutTimeZoneType -> Phantoms.TTerm Grammar.LocalDatetimeTypeChoice
localDatetimeTypeChoiceTimestampWithoutTimeZone x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LocalDatetimeTypeChoice"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "timestampWithoutTimeZone"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

localDatetimeTypeNotNull :: Phantoms.TTerm Grammar.LocalDatetimeType -> Phantoms.TTerm Bool
localDatetimeTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.LocalDatetimeType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

localDatetimeTypeWithNotNull :: Phantoms.TTerm Grammar.LocalDatetimeType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.LocalDatetimeType
localDatetimeTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LocalDatetimeType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

localTimeType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.LocalTimeType
localTimeType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LocalTimeType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

localTimeTypeChoiceLocalTime :: Phantoms.TTerm Grammar.LocalTimeType -> Phantoms.TTerm Grammar.LocalTimeTypeChoice
localTimeTypeChoiceLocalTime x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LocalTimeTypeChoice"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "localTime"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

localTimeTypeChoiceTimeWithoutTimeZone :: Phantoms.TTerm Grammar.TimeWithoutTimeZoneType -> Phantoms.TTerm Grammar.LocalTimeTypeChoice
localTimeTypeChoiceTimeWithoutTimeZone x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LocalTimeTypeChoice"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "timeWithoutTimeZone"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

localTimeTypeNotNull :: Phantoms.TTerm Grammar.LocalTimeType -> Phantoms.TTerm Bool
localTimeTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.LocalTimeType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

localTimeTypeWithNotNull :: Phantoms.TTerm Grammar.LocalTimeType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.LocalTimeType
localTimeTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.LocalTimeType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

localdatetimeFunctionLocalDatetimeWithParams :: Phantoms.TTerm (Maybe Grammar.DatetimeFunctionParameters) -> Phantoms.TTerm Grammar.LocaldatetimeFunction
localdatetimeFunctionLocalDatetimeWithParams x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LocaldatetimeFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "localDatetimeWithParams"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

localdatetimeFunctionLocalTimestamp :: Phantoms.TTerm Grammar.LocaldatetimeFunction
localdatetimeFunctionLocalTimestamp =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.LocaldatetimeFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "localTimestamp"),
        Core.fieldTerm = Core.TermUnit}}))

matchModeDifferentEdges :: Phantoms.TTerm Grammar.DifferentEdgesMatchMode -> Phantoms.TTerm Grammar.MatchMode
matchModeDifferentEdges x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.MatchMode"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "differentEdges"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

matchModeRepeatableElements :: Phantoms.TTerm Grammar.RepeatableElementsMatchMode -> Phantoms.TTerm Grammar.MatchMode
matchModeRepeatableElements x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.MatchMode"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "repeatableElements"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

matchStatementOptional :: Phantoms.TTerm Grammar.OptionalMatchStatement -> Phantoms.TTerm Grammar.MatchStatement
matchStatementOptional x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.MatchStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "optional"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

matchStatementSimple :: Phantoms.TTerm Grammar.SimpleMatchStatement -> Phantoms.TTerm Grammar.MatchStatement
matchStatementSimple x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.MatchStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "simple"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

modulusExpression :: Phantoms.TTerm Grammar.NumericValueExpressionDividend -> Phantoms.TTerm Grammar.NumericValueExpressionDivisor -> Phantoms.TTerm Grammar.ModulusExpression
modulusExpression dividend divisor =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ModulusExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "dividend"),
          Core.fieldTerm = (Phantoms.unTTerm dividend)},
        Core.Field {
          Core.fieldName = (Core.Name "divisor"),
          Core.fieldTerm = (Phantoms.unTTerm divisor)}]}))

modulusExpressionDividend :: Phantoms.TTerm Grammar.ModulusExpression -> Phantoms.TTerm Grammar.NumericValueExpressionDividend
modulusExpressionDividend x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ModulusExpression"),
        Core.projectionField = (Core.Name "dividend")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

modulusExpressionDivisor :: Phantoms.TTerm Grammar.ModulusExpression -> Phantoms.TTerm Grammar.NumericValueExpressionDivisor
modulusExpressionDivisor x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ModulusExpression"),
        Core.projectionField = (Core.Name "divisor")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

modulusExpressionWithDividend :: Phantoms.TTerm Grammar.ModulusExpression -> Phantoms.TTerm Grammar.NumericValueExpressionDividend -> Phantoms.TTerm Grammar.ModulusExpression
modulusExpressionWithDividend original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ModulusExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "dividend"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "divisor"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ModulusExpression"),
              Core.projectionField = (Core.Name "divisor")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

modulusExpressionWithDivisor :: Phantoms.TTerm Grammar.ModulusExpression -> Phantoms.TTerm Grammar.NumericValueExpressionDivisor -> Phantoms.TTerm Grammar.ModulusExpression
modulusExpressionWithDivisor original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ModulusExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "dividend"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ModulusExpression"),
              Core.projectionField = (Core.Name "dividend")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "divisor"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

mulDivNumericValueExpression :: Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.MultDivOperator -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.MulDivNumericValueExpression
mulDivNumericValueExpression left operator right =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm left)},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Phantoms.unTTerm operator)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm right)}]}))

mulDivNumericValueExpressionLeft :: Phantoms.TTerm Grammar.MulDivNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression
mulDivNumericValueExpressionLeft x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
        Core.projectionField = (Core.Name "left")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

mulDivNumericValueExpressionOperator :: Phantoms.TTerm Grammar.MulDivNumericValueExpression -> Phantoms.TTerm Grammar.MultDivOperator
mulDivNumericValueExpressionOperator x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
        Core.projectionField = (Core.Name "operator")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

mulDivNumericValueExpressionRight :: Phantoms.TTerm Grammar.MulDivNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression
mulDivNumericValueExpressionRight x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
        Core.projectionField = (Core.Name "right")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

mulDivNumericValueExpressionWithLeft :: Phantoms.TTerm Grammar.MulDivNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.MulDivNumericValueExpression
mulDivNumericValueExpressionWithLeft original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
              Core.projectionField = (Core.Name "operator")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

mulDivNumericValueExpressionWithOperator :: Phantoms.TTerm Grammar.MulDivNumericValueExpression -> Phantoms.TTerm Grammar.MultDivOperator -> Phantoms.TTerm Grammar.MulDivNumericValueExpression
mulDivNumericValueExpressionWithOperator original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

mulDivNumericValueExpressionWithRight :: Phantoms.TTerm Grammar.MulDivNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.MulDivNumericValueExpression
mulDivNumericValueExpressionWithRight original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MulDivNumericValueExpression"),
              Core.projectionField = (Core.Name "operator")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

multDivExpr :: Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.MultDivOperator -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.MultDivExpr
multDivExpr left operator right =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm left)},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Phantoms.unTTerm operator)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm right)}]}))

multDivExprLeft :: Phantoms.TTerm Grammar.MultDivExpr -> Phantoms.TTerm Grammar.ValueExpression
multDivExprLeft x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
        Core.projectionField = (Core.Name "left")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

multDivExprOperator :: Phantoms.TTerm Grammar.MultDivExpr -> Phantoms.TTerm Grammar.MultDivOperator
multDivExprOperator x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
        Core.projectionField = (Core.Name "operator")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

multDivExprRight :: Phantoms.TTerm Grammar.MultDivExpr -> Phantoms.TTerm Grammar.ValueExpression
multDivExprRight x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
        Core.projectionField = (Core.Name "right")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

multDivExprWithLeft :: Phantoms.TTerm Grammar.MultDivExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.MultDivExpr
multDivExprWithLeft original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
              Core.projectionField = (Core.Name "operator")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

multDivExprWithOperator :: Phantoms.TTerm Grammar.MultDivExpr -> Phantoms.TTerm Grammar.MultDivOperator -> Phantoms.TTerm Grammar.MultDivExpr
multDivExprWithOperator original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

multDivExprWithRight :: Phantoms.TTerm Grammar.MultDivExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.MultDivExpr
multDivExprWithRight original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "operator"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.MultDivExpr"),
              Core.projectionField = (Core.Name "operator")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

multDivOperatorDivide :: Phantoms.TTerm Grammar.MultDivOperator
multDivOperatorDivide =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.MultDivOperator"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "divide"),
        Core.fieldTerm = Core.TermUnit}}))

multDivOperatorMultiply :: Phantoms.TTerm Grammar.MultDivOperator
multDivOperatorMultiply =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.MultDivOperator"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "multiply"),
        Core.fieldTerm = Core.TermUnit}}))

namedProcedureCall :: Phantoms.TTerm Grammar.ProcedureReference -> Phantoms.TTerm (Maybe Grammar.ProcedureArgumentList) -> Phantoms.TTerm (Maybe Grammar.YieldClause) -> Phantoms.TTerm Grammar.NamedProcedureCall
namedProcedureCall reference arguments yield =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "reference"),
          Core.fieldTerm = (Phantoms.unTTerm reference)},
        Core.Field {
          Core.fieldName = (Core.Name "arguments"),
          Core.fieldTerm = (Phantoms.unTTerm arguments)},
        Core.Field {
          Core.fieldName = (Core.Name "yield"),
          Core.fieldTerm = (Phantoms.unTTerm yield)}]}))

namedProcedureCallArguments :: Phantoms.TTerm Grammar.NamedProcedureCall -> Phantoms.TTerm (Maybe Grammar.ProcedureArgumentList)
namedProcedureCallArguments x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
        Core.projectionField = (Core.Name "arguments")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

namedProcedureCallReference :: Phantoms.TTerm Grammar.NamedProcedureCall -> Phantoms.TTerm Grammar.ProcedureReference
namedProcedureCallReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
        Core.projectionField = (Core.Name "reference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

namedProcedureCallWithArguments :: Phantoms.TTerm Grammar.NamedProcedureCall -> Phantoms.TTerm (Maybe Grammar.ProcedureArgumentList) -> Phantoms.TTerm Grammar.NamedProcedureCall
namedProcedureCallWithArguments original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "reference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
              Core.projectionField = (Core.Name "reference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "arguments"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "yield"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
              Core.projectionField = (Core.Name "yield")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

namedProcedureCallWithReference :: Phantoms.TTerm Grammar.NamedProcedureCall -> Phantoms.TTerm Grammar.ProcedureReference -> Phantoms.TTerm Grammar.NamedProcedureCall
namedProcedureCallWithReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "reference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "arguments"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
              Core.projectionField = (Core.Name "arguments")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "yield"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
              Core.projectionField = (Core.Name "yield")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

namedProcedureCallWithYield :: Phantoms.TTerm Grammar.NamedProcedureCall -> Phantoms.TTerm (Maybe Grammar.YieldClause) -> Phantoms.TTerm Grammar.NamedProcedureCall
namedProcedureCallWithYield original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "reference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
              Core.projectionField = (Core.Name "reference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "arguments"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
              Core.projectionField = (Core.Name "arguments")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "yield"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

namedProcedureCallYield :: Phantoms.TTerm Grammar.NamedProcedureCall -> Phantoms.TTerm (Maybe Grammar.YieldClause)
namedProcedureCallYield x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NamedProcedureCall"),
        Core.projectionField = (Core.Name "yield")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nextStatement :: Phantoms.TTerm (Maybe Grammar.YieldClause) -> Phantoms.TTerm Grammar.Statement -> Phantoms.TTerm Grammar.NextStatement
nextStatement yieldClause statement =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NextStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "yieldClause"),
          Core.fieldTerm = (Phantoms.unTTerm yieldClause)},
        Core.Field {
          Core.fieldName = (Core.Name "statement"),
          Core.fieldTerm = (Phantoms.unTTerm statement)}]}))

nextStatementStatement :: Phantoms.TTerm Grammar.NextStatement -> Phantoms.TTerm Grammar.Statement
nextStatementStatement x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NextStatement"),
        Core.projectionField = (Core.Name "statement")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nextStatementWithStatement :: Phantoms.TTerm Grammar.NextStatement -> Phantoms.TTerm Grammar.Statement -> Phantoms.TTerm Grammar.NextStatement
nextStatementWithStatement original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NextStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "yieldClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NextStatement"),
              Core.projectionField = (Core.Name "yieldClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "statement"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

nextStatementWithYieldClause :: Phantoms.TTerm Grammar.NextStatement -> Phantoms.TTerm (Maybe Grammar.YieldClause) -> Phantoms.TTerm Grammar.NextStatement
nextStatementWithYieldClause original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NextStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "yieldClause"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "statement"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NextStatement"),
              Core.projectionField = (Core.Name "statement")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

nextStatementYieldClause :: Phantoms.TTerm Grammar.NextStatement -> Phantoms.TTerm (Maybe Grammar.YieldClause)
nextStatementYieldClause x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NextStatement"),
        Core.projectionField = (Core.Name "yieldClause")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeKeyLabelSetWithContent :: Phantoms.TTerm Grammar.NodeTypeKeyLabelSet -> Phantoms.TTerm (Maybe Grammar.NodeTypeImpliedContent) -> Phantoms.TTerm Grammar.NodeKeyLabelSetWithContent
nodeKeyLabelSetWithContent keyLabelSet impliedContent =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeKeyLabelSetWithContent"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "keyLabelSet"),
          Core.fieldTerm = (Phantoms.unTTerm keyLabelSet)},
        Core.Field {
          Core.fieldName = (Core.Name "impliedContent"),
          Core.fieldTerm = (Phantoms.unTTerm impliedContent)}]}))

nodeKeyLabelSetWithContentImpliedContent :: Phantoms.TTerm Grammar.NodeKeyLabelSetWithContent -> Phantoms.TTerm (Maybe Grammar.NodeTypeImpliedContent)
nodeKeyLabelSetWithContentImpliedContent x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeKeyLabelSetWithContent"),
        Core.projectionField = (Core.Name "impliedContent")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeKeyLabelSetWithContentKeyLabelSet :: Phantoms.TTerm Grammar.NodeKeyLabelSetWithContent -> Phantoms.TTerm Grammar.NodeTypeKeyLabelSet
nodeKeyLabelSetWithContentKeyLabelSet x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeKeyLabelSetWithContent"),
        Core.projectionField = (Core.Name "keyLabelSet")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeKeyLabelSetWithContentWithImpliedContent :: Phantoms.TTerm Grammar.NodeKeyLabelSetWithContent -> Phantoms.TTerm (Maybe Grammar.NodeTypeImpliedContent) -> Phantoms.TTerm Grammar.NodeKeyLabelSetWithContent
nodeKeyLabelSetWithContentWithImpliedContent original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeKeyLabelSetWithContent"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "keyLabelSet"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeKeyLabelSetWithContent"),
              Core.projectionField = (Core.Name "keyLabelSet")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "impliedContent"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

nodeKeyLabelSetWithContentWithKeyLabelSet :: Phantoms.TTerm Grammar.NodeKeyLabelSetWithContent -> Phantoms.TTerm Grammar.NodeTypeKeyLabelSet -> Phantoms.TTerm Grammar.NodeKeyLabelSetWithContent
nodeKeyLabelSetWithContentWithKeyLabelSet original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeKeyLabelSetWithContent"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "keyLabelSet"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "impliedContent"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeKeyLabelSetWithContent"),
              Core.projectionField = (Core.Name "impliedContent")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

nodeLabelSetWithProperties :: Phantoms.TTerm Grammar.NodeTypeLabelSet -> Phantoms.TTerm Grammar.NodeTypePropertyTypes -> Phantoms.TTerm Grammar.NodeLabelSetWithProperties
nodeLabelSetWithProperties labelSet propertyTypes =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeLabelSetWithProperties"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "labelSet"),
          Core.fieldTerm = (Phantoms.unTTerm labelSet)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyTypes"),
          Core.fieldTerm = (Phantoms.unTTerm propertyTypes)}]}))

nodeLabelSetWithPropertiesLabelSet :: Phantoms.TTerm Grammar.NodeLabelSetWithProperties -> Phantoms.TTerm Grammar.NodeTypeLabelSet
nodeLabelSetWithPropertiesLabelSet x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeLabelSetWithProperties"),
        Core.projectionField = (Core.Name "labelSet")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeLabelSetWithPropertiesPropertyTypes :: Phantoms.TTerm Grammar.NodeLabelSetWithProperties -> Phantoms.TTerm Grammar.NodeTypePropertyTypes
nodeLabelSetWithPropertiesPropertyTypes x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeLabelSetWithProperties"),
        Core.projectionField = (Core.Name "propertyTypes")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeLabelSetWithPropertiesWithLabelSet :: Phantoms.TTerm Grammar.NodeLabelSetWithProperties -> Phantoms.TTerm Grammar.NodeTypeLabelSet -> Phantoms.TTerm Grammar.NodeLabelSetWithProperties
nodeLabelSetWithPropertiesWithLabelSet original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeLabelSetWithProperties"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "labelSet"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyTypes"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeLabelSetWithProperties"),
              Core.projectionField = (Core.Name "propertyTypes")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

nodeLabelSetWithPropertiesWithPropertyTypes :: Phantoms.TTerm Grammar.NodeLabelSetWithProperties -> Phantoms.TTerm Grammar.NodeTypePropertyTypes -> Phantoms.TTerm Grammar.NodeLabelSetWithProperties
nodeLabelSetWithPropertiesWithPropertyTypes original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeLabelSetWithProperties"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "labelSet"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeLabelSetWithProperties"),
              Core.projectionField = (Core.Name "labelSet")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "propertyTypes"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

nodeReferenceValueTypeClosed :: Phantoms.TTerm Grammar.ClosedNodeReferenceValueType -> Phantoms.TTerm Grammar.NodeReferenceValueType
nodeReferenceValueTypeClosed x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeReferenceValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "closed"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nodeReferenceValueTypeOpen :: Phantoms.TTerm Grammar.OpenNodeReferenceValueType -> Phantoms.TTerm Grammar.NodeReferenceValueType
nodeReferenceValueTypeOpen x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeReferenceValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "open"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nodeSynonymAndTypeName :: Phantoms.TTerm Grammar.NodeSynonym -> Phantoms.TTerm (Maybe Grammar.NodeTypeName) -> Phantoms.TTerm Grammar.NodeSynonymAndTypeName
nodeSynonymAndTypeName nodeSynonym typeName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeSynonymAndTypeName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "nodeSynonym"),
          Core.fieldTerm = (Phantoms.unTTerm nodeSynonym)},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm typeName)}]}))

nodeSynonymAndTypeNameNodeSynonym :: Phantoms.TTerm Grammar.NodeSynonymAndTypeName -> Phantoms.TTerm Grammar.NodeSynonym
nodeSynonymAndTypeNameNodeSynonym x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeSynonymAndTypeName"),
        Core.projectionField = (Core.Name "nodeSynonym")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeSynonymAndTypeNameTypeName :: Phantoms.TTerm Grammar.NodeSynonymAndTypeName -> Phantoms.TTerm (Maybe Grammar.NodeTypeName)
nodeSynonymAndTypeNameTypeName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeSynonymAndTypeName"),
        Core.projectionField = (Core.Name "typeName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeSynonymAndTypeNameWithNodeSynonym :: Phantoms.TTerm Grammar.NodeSynonymAndTypeName -> Phantoms.TTerm Grammar.NodeSynonym -> Phantoms.TTerm Grammar.NodeSynonymAndTypeName
nodeSynonymAndTypeNameWithNodeSynonym original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeSynonymAndTypeName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "nodeSynonym"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeSynonymAndTypeName"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

nodeSynonymAndTypeNameWithTypeName :: Phantoms.TTerm Grammar.NodeSynonymAndTypeName -> Phantoms.TTerm (Maybe Grammar.NodeTypeName) -> Phantoms.TTerm Grammar.NodeSynonymAndTypeName
nodeSynonymAndTypeNameWithTypeName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeSynonymAndTypeName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "nodeSynonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeSynonymAndTypeName"),
              Core.projectionField = (Core.Name "nodeSynonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

nodeSynonymNode :: Phantoms.TTerm Grammar.NodeSynonym
nodeSynonymNode =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeSynonym"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "node"),
        Core.fieldTerm = Core.TermUnit}}))

nodeSynonymVertex :: Phantoms.TTerm Grammar.NodeSynonym
nodeSynonymVertex =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeSynonym"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "vertex"),
        Core.fieldTerm = Core.TermUnit}}))

nodeTypeFillerImpliedContent :: Phantoms.TTerm Grammar.NodeTypeImpliedContent -> Phantoms.TTerm Grammar.NodeTypeFiller
nodeTypeFillerImpliedContent x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeTypeFiller"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "impliedContent"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nodeTypeFillerKeyLabelSet :: Phantoms.TTerm Grammar.NodeKeyLabelSetWithContent -> Phantoms.TTerm Grammar.NodeTypeFiller
nodeTypeFillerKeyLabelSet x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeTypeFiller"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "keyLabelSet"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nodeTypeImpliedContentLabelSet :: Phantoms.TTerm Grammar.NodeTypeLabelSet -> Phantoms.TTerm Grammar.NodeTypeImpliedContent
nodeTypeImpliedContentLabelSet x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeTypeImpliedContent"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "labelSet"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nodeTypeImpliedContentLabelSetWithProperties :: Phantoms.TTerm Grammar.NodeLabelSetWithProperties -> Phantoms.TTerm Grammar.NodeTypeImpliedContent
nodeTypeImpliedContentLabelSetWithProperties x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeTypeImpliedContent"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "labelSetWithProperties"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nodeTypeImpliedContentPropertyTypes :: Phantoms.TTerm Grammar.NodeTypePropertyTypes -> Phantoms.TTerm Grammar.NodeTypeImpliedContent
nodeTypeImpliedContentPropertyTypes x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeTypeImpliedContent"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "propertyTypes"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nodeTypeNameWithFiller :: Phantoms.TTerm Grammar.NodeTypeName -> Phantoms.TTerm (Maybe Grammar.NodeTypeFiller) -> Phantoms.TTerm Grammar.NodeTypeNameWithFiller
nodeTypeNameWithFiller typeName filler =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeTypeNameWithFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm typeName)},
        Core.Field {
          Core.fieldName = (Core.Name "filler"),
          Core.fieldTerm = (Phantoms.unTTerm filler)}]}))

nodeTypeNameWithFillerFiller :: Phantoms.TTerm Grammar.NodeTypeNameWithFiller -> Phantoms.TTerm (Maybe Grammar.NodeTypeFiller)
nodeTypeNameWithFillerFiller x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypeNameWithFiller"),
        Core.projectionField = (Core.Name "filler")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeTypeNameWithFillerTypeName :: Phantoms.TTerm Grammar.NodeTypeNameWithFiller -> Phantoms.TTerm Grammar.NodeTypeName
nodeTypeNameWithFillerTypeName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypeNameWithFiller"),
        Core.projectionField = (Core.Name "typeName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeTypeNameWithFillerWithFiller :: Phantoms.TTerm Grammar.NodeTypeNameWithFiller -> Phantoms.TTerm (Maybe Grammar.NodeTypeFiller) -> Phantoms.TTerm Grammar.NodeTypeNameWithFiller
nodeTypeNameWithFillerWithFiller original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeTypeNameWithFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypeNameWithFiller"),
              Core.projectionField = (Core.Name "typeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "filler"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

nodeTypeNameWithFillerWithTypeName :: Phantoms.TTerm Grammar.NodeTypeNameWithFiller -> Phantoms.TTerm Grammar.NodeTypeName -> Phantoms.TTerm Grammar.NodeTypeNameWithFiller
nodeTypeNameWithFillerWithTypeName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeTypeNameWithFiller"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typeName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "filler"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypeNameWithFiller"),
              Core.projectionField = (Core.Name "filler")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

nodeTypePattern :: Phantoms.TTerm (Maybe Grammar.NodeSynonymAndTypeName) -> Phantoms.TTerm (Maybe Grammar.LocalNodeTypeAlias) -> Phantoms.TTerm (Maybe Grammar.NodeTypeFiller) -> Phantoms.TTerm Grammar.NodeTypePattern
nodeTypePattern synonymAndTypeName alias filler =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "synonymAndTypeName"),
          Core.fieldTerm = (Phantoms.unTTerm synonymAndTypeName)},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm alias)},
        Core.Field {
          Core.fieldName = (Core.Name "filler"),
          Core.fieldTerm = (Phantoms.unTTerm filler)}]}))

nodeTypePatternAlias :: Phantoms.TTerm Grammar.NodeTypePattern -> Phantoms.TTerm (Maybe Grammar.LocalNodeTypeAlias)
nodeTypePatternAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
        Core.projectionField = (Core.Name "alias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeTypePatternFiller :: Phantoms.TTerm Grammar.NodeTypePattern -> Phantoms.TTerm (Maybe Grammar.NodeTypeFiller)
nodeTypePatternFiller x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
        Core.projectionField = (Core.Name "filler")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeTypePatternSynonymAndTypeName :: Phantoms.TTerm Grammar.NodeTypePattern -> Phantoms.TTerm (Maybe Grammar.NodeSynonymAndTypeName)
nodeTypePatternSynonymAndTypeName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
        Core.projectionField = (Core.Name "synonymAndTypeName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeTypePatternWithAlias :: Phantoms.TTerm Grammar.NodeTypePattern -> Phantoms.TTerm (Maybe Grammar.LocalNodeTypeAlias) -> Phantoms.TTerm Grammar.NodeTypePattern
nodeTypePatternWithAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "synonymAndTypeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
              Core.projectionField = (Core.Name "synonymAndTypeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "filler"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
              Core.projectionField = (Core.Name "filler")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

nodeTypePatternWithFiller :: Phantoms.TTerm Grammar.NodeTypePattern -> Phantoms.TTerm (Maybe Grammar.NodeTypeFiller) -> Phantoms.TTerm Grammar.NodeTypePattern
nodeTypePatternWithFiller original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "synonymAndTypeName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
              Core.projectionField = (Core.Name "synonymAndTypeName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
              Core.projectionField = (Core.Name "alias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "filler"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

nodeTypePatternWithSynonymAndTypeName :: Phantoms.TTerm Grammar.NodeTypePattern -> Phantoms.TTerm (Maybe Grammar.NodeSynonymAndTypeName) -> Phantoms.TTerm Grammar.NodeTypePattern
nodeTypePatternWithSynonymAndTypeName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "synonymAndTypeName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
              Core.projectionField = (Core.Name "alias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "filler"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePattern"),
              Core.projectionField = (Core.Name "filler")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

nodeTypePhrase :: Phantoms.TTerm Grammar.NodeSynonym -> Phantoms.TTerm Grammar.NodeTypePhraseFiller -> Phantoms.TTerm (Maybe Grammar.LocalNodeTypeAlias) -> Phantoms.TTerm Grammar.NodeTypePhrase
nodeTypePhrase synonym typePhraseFiller alias =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Phantoms.unTTerm synonym)},
        Core.Field {
          Core.fieldName = (Core.Name "typePhraseFiller"),
          Core.fieldTerm = (Phantoms.unTTerm typePhraseFiller)},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm alias)}]}))

nodeTypePhraseAlias :: Phantoms.TTerm Grammar.NodeTypePhrase -> Phantoms.TTerm (Maybe Grammar.LocalNodeTypeAlias)
nodeTypePhraseAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
        Core.projectionField = (Core.Name "alias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeTypePhraseFillerFillerOnly :: Phantoms.TTerm Grammar.NodeTypeFiller -> Phantoms.TTerm Grammar.NodeTypePhraseFiller
nodeTypePhraseFillerFillerOnly x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeTypePhraseFiller"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "fillerOnly"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nodeTypePhraseFillerTypeName :: Phantoms.TTerm Grammar.NodeTypeNameWithFiller -> Phantoms.TTerm Grammar.NodeTypePhraseFiller
nodeTypePhraseFillerTypeName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeTypePhraseFiller"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "typeName"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nodeTypePhraseSynonym :: Phantoms.TTerm Grammar.NodeTypePhrase -> Phantoms.TTerm Grammar.NodeSynonym
nodeTypePhraseSynonym x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
        Core.projectionField = (Core.Name "synonym")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeTypePhraseTypePhraseFiller :: Phantoms.TTerm Grammar.NodeTypePhrase -> Phantoms.TTerm Grammar.NodeTypePhraseFiller
nodeTypePhraseTypePhraseFiller x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
        Core.projectionField = (Core.Name "typePhraseFiller")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nodeTypePhraseWithAlias :: Phantoms.TTerm Grammar.NodeTypePhrase -> Phantoms.TTerm (Maybe Grammar.LocalNodeTypeAlias) -> Phantoms.TTerm Grammar.NodeTypePhrase
nodeTypePhraseWithAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
              Core.projectionField = (Core.Name "synonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typePhraseFiller"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
              Core.projectionField = (Core.Name "typePhraseFiller")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

nodeTypePhraseWithSynonym :: Phantoms.TTerm Grammar.NodeTypePhrase -> Phantoms.TTerm Grammar.NodeSynonym -> Phantoms.TTerm Grammar.NodeTypePhrase
nodeTypePhraseWithSynonym original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "typePhraseFiller"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
              Core.projectionField = (Core.Name "typePhraseFiller")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
              Core.projectionField = (Core.Name "alias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

nodeTypePhraseWithTypePhraseFiller :: Phantoms.TTerm Grammar.NodeTypePhrase -> Phantoms.TTerm Grammar.NodeTypePhraseFiller -> Phantoms.TTerm Grammar.NodeTypePhrase
nodeTypePhraseWithTypePhraseFiller original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
              Core.projectionField = (Core.Name "synonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typePhraseFiller"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NodeTypePhrase"),
              Core.projectionField = (Core.Name "alias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

nodeTypeSpecificationPattern :: Phantoms.TTerm Grammar.NodeTypePattern -> Phantoms.TTerm Grammar.NodeTypeSpecification
nodeTypeSpecificationPattern x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeTypeSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pattern"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nodeTypeSpecificationPhrase :: Phantoms.TTerm Grammar.NodeTypePhrase -> Phantoms.TTerm Grammar.NodeTypeSpecification
nodeTypeSpecificationPhrase x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NodeTypeSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "phrase"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonNegativeIntegerSpecificationDynamicParameterSpecification :: Phantoms.TTerm Grammar.DynamicParameterSpecification -> Phantoms.TTerm Grammar.NonNegativeIntegerSpecification
nonNegativeIntegerSpecificationDynamicParameterSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonNegativeIntegerSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "dynamicParameterSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonNegativeIntegerSpecificationUnsignedInteger :: Phantoms.TTerm Grammar.UnsignedInteger -> Phantoms.TTerm Grammar.NonNegativeIntegerSpecification
nonNegativeIntegerSpecificationUnsignedInteger x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonNegativeIntegerSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "unsignedInteger"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonParenthesizedPrimaryValueExpressionBindingVariable :: Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpression
nonParenthesizedPrimaryValueExpressionBindingVariable x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "bindingVariable"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonParenthesizedPrimaryValueExpressionSpecial :: Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpressionSpecialCase -> Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpression
nonParenthesizedPrimaryValueExpressionSpecial x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "special"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonParenthesizedPrimaryValueExpressionSpecialCaseAggregateFunction :: Phantoms.TTerm Grammar.AggregateFunction -> Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpressionSpecialCase
nonParenthesizedPrimaryValueExpressionSpecialCaseAggregateFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpressionSpecialCase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "aggregateFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonParenthesizedPrimaryValueExpressionSpecialCaseCaseExpression :: Phantoms.TTerm Grammar.CaseExpression -> Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpressionSpecialCase
nonParenthesizedPrimaryValueExpressionSpecialCaseCaseExpression x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpressionSpecialCase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "caseExpression"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonParenthesizedPrimaryValueExpressionSpecialCaseCastSpecification :: Phantoms.TTerm Grammar.CastSpecification -> Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpressionSpecialCase
nonParenthesizedPrimaryValueExpressionSpecialCaseCastSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpressionSpecialCase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "castSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonParenthesizedPrimaryValueExpressionSpecialCaseElementIdFunction :: Phantoms.TTerm Grammar.ElementIdFunction -> Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpressionSpecialCase
nonParenthesizedPrimaryValueExpressionSpecialCaseElementIdFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpressionSpecialCase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "elementIdFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonParenthesizedPrimaryValueExpressionSpecialCaseLetValueExpression :: Phantoms.TTerm Grammar.LetValueExpression -> Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpressionSpecialCase
nonParenthesizedPrimaryValueExpressionSpecialCaseLetValueExpression x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpressionSpecialCase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "letValueExpression"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonParenthesizedPrimaryValueExpressionSpecialCasePathValueConstructor :: Phantoms.TTerm Grammar.PathValueConstructor -> Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpressionSpecialCase
nonParenthesizedPrimaryValueExpressionSpecialCasePathValueConstructor x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpressionSpecialCase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pathValueConstructor"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonParenthesizedPrimaryValueExpressionSpecialCasePropertyReference :: Phantoms.TTerm Grammar.PropertyReference -> Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpressionSpecialCase
nonParenthesizedPrimaryValueExpressionSpecialCasePropertyReference x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpressionSpecialCase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "propertyReference"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonParenthesizedPrimaryValueExpressionSpecialCaseUnsignedValueSpecification :: Phantoms.TTerm Grammar.UnsignedValueSpecification -> Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpressionSpecialCase
nonParenthesizedPrimaryValueExpressionSpecialCaseUnsignedValueSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpressionSpecialCase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "unsignedValueSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

nonParenthesizedPrimaryValueExpressionSpecialCaseValueQueryExpression :: Phantoms.TTerm Grammar.ValueQueryExpression -> Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpressionSpecialCase
nonParenthesizedPrimaryValueExpressionSpecialCaseValueQueryExpression x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpressionSpecialCase"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "valueQueryExpression"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

normalFormNfc :: Phantoms.TTerm Grammar.NormalForm
normalFormNfc =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NormalForm"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nfc"),
        Core.fieldTerm = Core.TermUnit}}))

normalFormNfd :: Phantoms.TTerm Grammar.NormalForm
normalFormNfd =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NormalForm"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nfd"),
        Core.fieldTerm = Core.TermUnit}}))

normalFormNfkc :: Phantoms.TTerm Grammar.NormalForm
normalFormNfkc =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NormalForm"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nfkc"),
        Core.fieldTerm = Core.TermUnit}}))

normalFormNfkd :: Phantoms.TTerm Grammar.NormalForm
normalFormNfkd =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NormalForm"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nfkd"),
        Core.fieldTerm = Core.TermUnit}}))

normalizeCharacterString :: Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm (Maybe Grammar.NormalForm) -> Phantoms.TTerm Grammar.NormalizeCharacterString
normalizeCharacterString valueExpression normalForm =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NormalizeCharacterString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "normalForm"),
          Core.fieldTerm = (Phantoms.unTTerm normalForm)}]}))

normalizeCharacterStringNormalForm :: Phantoms.TTerm Grammar.NormalizeCharacterString -> Phantoms.TTerm (Maybe Grammar.NormalForm)
normalizeCharacterStringNormalForm x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizeCharacterString"),
        Core.projectionField = (Core.Name "normalForm")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

normalizeCharacterStringValueExpression :: Phantoms.TTerm Grammar.NormalizeCharacterString -> Phantoms.TTerm Grammar.ValueExpression
normalizeCharacterStringValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizeCharacterString"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

normalizeCharacterStringWithNormalForm :: Phantoms.TTerm Grammar.NormalizeCharacterString -> Phantoms.TTerm (Maybe Grammar.NormalForm) -> Phantoms.TTerm Grammar.NormalizeCharacterString
normalizeCharacterStringWithNormalForm original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NormalizeCharacterString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizeCharacterString"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "normalForm"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

normalizeCharacterStringWithValueExpression :: Phantoms.TTerm Grammar.NormalizeCharacterString -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.NormalizeCharacterString
normalizeCharacterStringWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NormalizeCharacterString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "normalForm"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizeCharacterString"),
              Core.projectionField = (Core.Name "normalForm")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

normalizedPredicateExpr :: Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.NormalizedPredicatePart2 -> Phantoms.TTerm Grammar.NormalizedPredicateExpr
normalizedPredicateExpr valueExpression normalizedPredicate =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NormalizedPredicateExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "normalizedPredicate"),
          Core.fieldTerm = (Phantoms.unTTerm normalizedPredicate)}]}))

normalizedPredicateExprNormalizedPredicate :: Phantoms.TTerm Grammar.NormalizedPredicateExpr -> Phantoms.TTerm Grammar.NormalizedPredicatePart2
normalizedPredicateExprNormalizedPredicate x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizedPredicateExpr"),
        Core.projectionField = (Core.Name "normalizedPredicate")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

normalizedPredicateExprValueExpression :: Phantoms.TTerm Grammar.NormalizedPredicateExpr -> Phantoms.TTerm Grammar.ValueExpression
normalizedPredicateExprValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizedPredicateExpr"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

normalizedPredicateExprWithNormalizedPredicate :: Phantoms.TTerm Grammar.NormalizedPredicateExpr -> Phantoms.TTerm Grammar.NormalizedPredicatePart2 -> Phantoms.TTerm Grammar.NormalizedPredicateExpr
normalizedPredicateExprWithNormalizedPredicate original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NormalizedPredicateExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizedPredicateExpr"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "normalizedPredicate"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

normalizedPredicateExprWithValueExpression :: Phantoms.TTerm Grammar.NormalizedPredicateExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.NormalizedPredicateExpr
normalizedPredicateExprWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NormalizedPredicateExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "normalizedPredicate"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizedPredicateExpr"),
              Core.projectionField = (Core.Name "normalizedPredicate")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

normalizedPredicatePart2 :: Phantoms.TTerm Bool -> Phantoms.TTerm (Maybe Grammar.NormalForm) -> Phantoms.TTerm Grammar.NormalizedPredicatePart2
normalizedPredicatePart2 not normalForm =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NormalizedPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm not)},
        Core.Field {
          Core.fieldName = (Core.Name "normalForm"),
          Core.fieldTerm = (Phantoms.unTTerm normalForm)}]}))

normalizedPredicatePart2NormalForm :: Phantoms.TTerm Grammar.NormalizedPredicatePart2 -> Phantoms.TTerm (Maybe Grammar.NormalForm)
normalizedPredicatePart2NormalForm x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizedPredicatePart2"),
        Core.projectionField = (Core.Name "normalForm")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

normalizedPredicatePart2Not :: Phantoms.TTerm Grammar.NormalizedPredicatePart2 -> Phantoms.TTerm Bool
normalizedPredicatePart2Not x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizedPredicatePart2"),
        Core.projectionField = (Core.Name "not")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

normalizedPredicatePart2WithNormalForm :: Phantoms.TTerm Grammar.NormalizedPredicatePart2 -> Phantoms.TTerm (Maybe Grammar.NormalForm) -> Phantoms.TTerm Grammar.NormalizedPredicatePart2
normalizedPredicatePart2WithNormalForm original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NormalizedPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizedPredicatePart2"),
              Core.projectionField = (Core.Name "not")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "normalForm"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

normalizedPredicatePart2WithNot :: Phantoms.TTerm Grammar.NormalizedPredicatePart2 -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.NormalizedPredicatePart2
normalizedPredicatePart2WithNot original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NormalizedPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "normalForm"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NormalizedPredicatePart2"),
              Core.projectionField = (Core.Name "normalForm")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

nullIfAbbreviation :: Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.NullIfAbbreviation
nullIfAbbreviation first second =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NullIfAbbreviation"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "first"),
          Core.fieldTerm = (Phantoms.unTTerm first)},
        Core.Field {
          Core.fieldName = (Core.Name "second"),
          Core.fieldTerm = (Phantoms.unTTerm second)}]}))

nullIfAbbreviationFirst :: Phantoms.TTerm Grammar.NullIfAbbreviation -> Phantoms.TTerm Grammar.ValueExpression
nullIfAbbreviationFirst x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NullIfAbbreviation"),
        Core.projectionField = (Core.Name "first")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nullIfAbbreviationSecond :: Phantoms.TTerm Grammar.NullIfAbbreviation -> Phantoms.TTerm Grammar.ValueExpression
nullIfAbbreviationSecond x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NullIfAbbreviation"),
        Core.projectionField = (Core.Name "second")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nullIfAbbreviationWithFirst :: Phantoms.TTerm Grammar.NullIfAbbreviation -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.NullIfAbbreviation
nullIfAbbreviationWithFirst original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NullIfAbbreviation"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "first"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "second"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NullIfAbbreviation"),
              Core.projectionField = (Core.Name "second")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

nullIfAbbreviationWithSecond :: Phantoms.TTerm Grammar.NullIfAbbreviation -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.NullIfAbbreviation
nullIfAbbreviationWithSecond original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NullIfAbbreviation"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "first"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NullIfAbbreviation"),
              Core.projectionField = (Core.Name "first")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "second"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

nullOrderingNullsFirst :: Phantoms.TTerm Grammar.NullOrdering
nullOrderingNullsFirst =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NullOrdering"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nullsFirst"),
        Core.fieldTerm = Core.TermUnit}}))

nullOrderingNullsLast :: Phantoms.TTerm Grammar.NullOrdering
nullOrderingNullsLast =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NullOrdering"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nullsLast"),
        Core.fieldTerm = Core.TermUnit}}))

nullPredicate :: Phantoms.TTerm Grammar.PrimaryValueExpression -> Phantoms.TTerm Grammar.NullPredicatePart2 -> Phantoms.TTerm Grammar.NullPredicate
nullPredicate valueExpression nullPart =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NullPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "nullPart"),
          Core.fieldTerm = (Phantoms.unTTerm nullPart)}]}))

nullPredicateNullPart :: Phantoms.TTerm Grammar.NullPredicate -> Phantoms.TTerm Grammar.NullPredicatePart2
nullPredicateNullPart x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NullPredicate"),
        Core.projectionField = (Core.Name "nullPart")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nullPredicatePart2 :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.NullPredicatePart2
nullPredicatePart2 not =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NullPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm not)}]}))

nullPredicatePart2Not :: Phantoms.TTerm Grammar.NullPredicatePart2 -> Phantoms.TTerm Bool
nullPredicatePart2Not x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NullPredicatePart2"),
        Core.projectionField = (Core.Name "not")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nullPredicatePart2WithNot :: Phantoms.TTerm Grammar.NullPredicatePart2 -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.NullPredicatePart2
nullPredicatePart2WithNot original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NullPredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

nullPredicateValueExpression :: Phantoms.TTerm Grammar.NullPredicate -> Phantoms.TTerm Grammar.PrimaryValueExpression
nullPredicateValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.NullPredicate"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

nullPredicateWithNullPart :: Phantoms.TTerm Grammar.NullPredicate -> Phantoms.TTerm Grammar.NullPredicatePart2 -> Phantoms.TTerm Grammar.NullPredicate
nullPredicateWithNullPart original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NullPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NullPredicate"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nullPart"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

nullPredicateWithValueExpression :: Phantoms.TTerm Grammar.NullPredicate -> Phantoms.TTerm Grammar.PrimaryValueExpression -> Phantoms.TTerm Grammar.NullPredicate
nullPredicateWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.NullPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "nullPart"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.NullPredicate"),
              Core.projectionField = (Core.Name "nullPart")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

numericTypeApproximate :: Phantoms.TTerm Grammar.ApproximateNumericType -> Phantoms.TTerm Grammar.NumericType
numericTypeApproximate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "approximate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericTypeExact :: Phantoms.TTerm Grammar.ExactNumericType -> Phantoms.TTerm Grammar.NumericType
numericTypeExact x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "exact"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueExpressionAdditionOrSubtraction :: Phantoms.TTerm Grammar.AddSubNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression
numericValueExpressionAdditionOrSubtraction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "additionOrSubtraction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueExpressionFunction :: Phantoms.TTerm Grammar.NumericValueFunction -> Phantoms.TTerm Grammar.NumericValueExpression
numericValueExpressionFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "function"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueExpressionMultiplicationOrDivision :: Phantoms.TTerm Grammar.MulDivNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression
numericValueExpressionMultiplicationOrDivision x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "multiplicationOrDivision"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueExpressionPrimary :: Phantoms.TTerm Grammar.PrimaryValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression
numericValueExpressionPrimary x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "primary"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueExpressionSigned :: Phantoms.TTerm Grammar.SignedNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression
numericValueExpressionSigned x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "signed"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionAbsoluteValue :: Phantoms.TTerm Grammar.AbsoluteValueExpression -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionAbsoluteValue x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "absoluteValue"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionCardinality :: Phantoms.TTerm Grammar.CardinalityExpression -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionCardinality x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "cardinality"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionCeiling :: Phantoms.TTerm Grammar.CeilingFunction -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionCeiling x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "ceiling"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionCommonLogarithm :: Phantoms.TTerm Grammar.CommonLogarithm -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionCommonLogarithm x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "commonLogarithm"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionExponential :: Phantoms.TTerm Grammar.ExponentialFunction -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionExponential x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "exponential"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionFloor :: Phantoms.TTerm Grammar.FloorFunction -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionFloor x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "floor"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionLength :: Phantoms.TTerm Grammar.LengthExpression -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionLength x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "length"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionLogarithm :: Phantoms.TTerm Grammar.GeneralLogarithmFunction -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionLogarithm x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "logarithm"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionModulus :: Phantoms.TTerm Grammar.ModulusExpression -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionModulus x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "modulus"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionNaturalLogarithm :: Phantoms.TTerm Grammar.NaturalLogarithm -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionNaturalLogarithm x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "naturalLogarithm"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionPower :: Phantoms.TTerm Grammar.PowerFunction -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionPower x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "power"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionSquareRoot :: Phantoms.TTerm Grammar.SquareRoot -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionSquareRoot x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "squareRoot"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

numericValueFunctionTrigonometric :: Phantoms.TTerm Grammar.TrigonometricFunction -> Phantoms.TTerm Grammar.NumericValueFunction
numericValueFunctionTrigonometric x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.NumericValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "trigonometric"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

objectExpressionPrimaryNonParenthesized :: Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpressionSpecialCase -> Phantoms.TTerm Grammar.ObjectExpressionPrimary
objectExpressionPrimaryNonParenthesized x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ObjectExpressionPrimary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nonParenthesized"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

objectExpressionPrimaryParenthesized :: Phantoms.TTerm Grammar.ParenthesizedValueExpression -> Phantoms.TTerm Grammar.ObjectExpressionPrimary
objectExpressionPrimaryParenthesized x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ObjectExpressionPrimary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parenthesized"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

objectExpressionPrimaryVariable :: Phantoms.TTerm Grammar.PrimaryValueExpression -> Phantoms.TTerm Grammar.ObjectExpressionPrimary
objectExpressionPrimaryVariable x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ObjectExpressionPrimary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "variable"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

ofGraphTypeLikeGraph :: Phantoms.TTerm Grammar.GraphTypeLikeGraph -> Phantoms.TTerm Grammar.OfGraphType
ofGraphTypeLikeGraph x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OfGraphType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "likeGraph"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

ofGraphTypeNested :: Phantoms.TTerm Grammar.TypedNestedGraphTypeSpecification -> Phantoms.TTerm Grammar.OfGraphType
ofGraphTypeNested x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OfGraphType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nested"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

ofGraphTypeReference :: Phantoms.TTerm Grammar.TypedGraphTypeReference -> Phantoms.TTerm Grammar.OfGraphType
ofGraphTypeReference x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OfGraphType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "reference"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

offsetAndOptionalLimit :: Phantoms.TTerm Grammar.OffsetClause -> Phantoms.TTerm (Maybe Grammar.LimitClause) -> Phantoms.TTerm Grammar.OffsetAndOptionalLimit
offsetAndOptionalLimit offset limit =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OffsetAndOptionalLimit"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Phantoms.unTTerm offset)},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Phantoms.unTTerm limit)}]}))

offsetAndOptionalLimitLimit :: Phantoms.TTerm Grammar.OffsetAndOptionalLimit -> Phantoms.TTerm (Maybe Grammar.LimitClause)
offsetAndOptionalLimitLimit x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OffsetAndOptionalLimit"),
        Core.projectionField = (Core.Name "limit")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

offsetAndOptionalLimitOffset :: Phantoms.TTerm Grammar.OffsetAndOptionalLimit -> Phantoms.TTerm Grammar.OffsetClause
offsetAndOptionalLimitOffset x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OffsetAndOptionalLimit"),
        Core.projectionField = (Core.Name "offset")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

offsetAndOptionalLimitWithLimit :: Phantoms.TTerm Grammar.OffsetAndOptionalLimit -> Phantoms.TTerm (Maybe Grammar.LimitClause) -> Phantoms.TTerm Grammar.OffsetAndOptionalLimit
offsetAndOptionalLimitWithLimit original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OffsetAndOptionalLimit"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OffsetAndOptionalLimit"),
              Core.projectionField = (Core.Name "offset")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

offsetAndOptionalLimitWithOffset :: Phantoms.TTerm Grammar.OffsetAndOptionalLimit -> Phantoms.TTerm Grammar.OffsetClause -> Phantoms.TTerm Grammar.OffsetAndOptionalLimit
offsetAndOptionalLimitWithOffset original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OffsetAndOptionalLimit"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OffsetAndOptionalLimit"),
              Core.projectionField = (Core.Name "limit")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

offsetClause :: Phantoms.TTerm Grammar.OffsetSynonym -> Phantoms.TTerm Grammar.NonNegativeIntegerSpecification -> Phantoms.TTerm Grammar.OffsetClause
offsetClause synonym value =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OffsetClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Phantoms.unTTerm synonym)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm value)}]}))

offsetClauseSynonym :: Phantoms.TTerm Grammar.OffsetClause -> Phantoms.TTerm Grammar.OffsetSynonym
offsetClauseSynonym x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OffsetClause"),
        Core.projectionField = (Core.Name "synonym")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

offsetClauseValue :: Phantoms.TTerm Grammar.OffsetClause -> Phantoms.TTerm Grammar.NonNegativeIntegerSpecification
offsetClauseValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OffsetClause"),
        Core.projectionField = (Core.Name "value")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

offsetClauseWithSynonym :: Phantoms.TTerm Grammar.OffsetClause -> Phantoms.TTerm Grammar.OffsetSynonym -> Phantoms.TTerm Grammar.OffsetClause
offsetClauseWithSynonym original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OffsetClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OffsetClause"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

offsetClauseWithValue :: Phantoms.TTerm Grammar.OffsetClause -> Phantoms.TTerm Grammar.NonNegativeIntegerSpecification -> Phantoms.TTerm Grammar.OffsetClause
offsetClauseWithValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OffsetClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "synonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OffsetClause"),
              Core.projectionField = (Core.Name "synonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

offsetSynonymOffset :: Phantoms.TTerm Grammar.OffsetSynonym
offsetSynonymOffset =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OffsetSynonym"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "offset"),
        Core.fieldTerm = Core.TermUnit}}))

offsetSynonymSkipReservedWord :: Phantoms.TTerm Grammar.OffsetSynonym
offsetSynonymSkipReservedWord =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OffsetSynonym"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "skipReservedWord"),
        Core.fieldTerm = Core.TermUnit}}))

openDynamicUnionType :: Phantoms.TTerm Bool -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenDynamicUnionType
openDynamicUnionType value notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenDynamicUnionType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm value)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

openDynamicUnionTypeNotNull :: Phantoms.TTerm Grammar.OpenDynamicUnionType -> Phantoms.TTerm Bool
openDynamicUnionTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenDynamicUnionType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openDynamicUnionTypeValue :: Phantoms.TTerm Grammar.OpenDynamicUnionType -> Phantoms.TTerm Bool
openDynamicUnionTypeValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenDynamicUnionType"),
        Core.projectionField = (Core.Name "value")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openDynamicUnionTypeWithNotNull :: Phantoms.TTerm Grammar.OpenDynamicUnionType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenDynamicUnionType
openDynamicUnionTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenDynamicUnionType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenDynamicUnionType"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

openDynamicUnionTypeWithValue :: Phantoms.TTerm Grammar.OpenDynamicUnionType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenDynamicUnionType
openDynamicUnionTypeWithValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenDynamicUnionType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenDynamicUnionType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

openEdgeReferenceValueType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.EdgeSynonym -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenEdgeReferenceValueType
openEdgeReferenceValueType any edgeSynonym notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Phantoms.unTTerm any)},
        Core.Field {
          Core.fieldName = (Core.Name "edgeSynonym"),
          Core.fieldTerm = (Phantoms.unTTerm edgeSynonym)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

openEdgeReferenceValueTypeAny :: Phantoms.TTerm Grammar.OpenEdgeReferenceValueType -> Phantoms.TTerm Bool
openEdgeReferenceValueTypeAny x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
        Core.projectionField = (Core.Name "any")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openEdgeReferenceValueTypeEdgeSynonym :: Phantoms.TTerm Grammar.OpenEdgeReferenceValueType -> Phantoms.TTerm Grammar.EdgeSynonym
openEdgeReferenceValueTypeEdgeSynonym x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
        Core.projectionField = (Core.Name "edgeSynonym")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openEdgeReferenceValueTypeNotNull :: Phantoms.TTerm Grammar.OpenEdgeReferenceValueType -> Phantoms.TTerm Bool
openEdgeReferenceValueTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openEdgeReferenceValueTypeWithAny :: Phantoms.TTerm Grammar.OpenEdgeReferenceValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenEdgeReferenceValueType
openEdgeReferenceValueTypeWithAny original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "edgeSynonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
              Core.projectionField = (Core.Name "edgeSynonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

openEdgeReferenceValueTypeWithEdgeSynonym :: Phantoms.TTerm Grammar.OpenEdgeReferenceValueType -> Phantoms.TTerm Grammar.EdgeSynonym -> Phantoms.TTerm Grammar.OpenEdgeReferenceValueType
openEdgeReferenceValueTypeWithEdgeSynonym original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
              Core.projectionField = (Core.Name "any")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "edgeSynonym"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

openEdgeReferenceValueTypeWithNotNull :: Phantoms.TTerm Grammar.OpenEdgeReferenceValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenEdgeReferenceValueType
openEdgeReferenceValueTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
              Core.projectionField = (Core.Name "any")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "edgeSynonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenEdgeReferenceValueType"),
              Core.projectionField = (Core.Name "edgeSynonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

openGraphReferenceValueType :: Phantoms.TTerm (Maybe Bool) -> Phantoms.TTerm Bool -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenGraphReferenceValueType
openGraphReferenceValueType any property notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Phantoms.unTTerm any)},
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Phantoms.unTTerm property)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

openGraphReferenceValueTypeAny :: Phantoms.TTerm Grammar.OpenGraphReferenceValueType -> Phantoms.TTerm (Maybe Bool)
openGraphReferenceValueTypeAny x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
        Core.projectionField = (Core.Name "any")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openGraphReferenceValueTypeNotNull :: Phantoms.TTerm Grammar.OpenGraphReferenceValueType -> Phantoms.TTerm Bool
openGraphReferenceValueTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openGraphReferenceValueTypeProperty :: Phantoms.TTerm Grammar.OpenGraphReferenceValueType -> Phantoms.TTerm Bool
openGraphReferenceValueTypeProperty x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
        Core.projectionField = (Core.Name "property")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openGraphReferenceValueTypeWithAny :: Phantoms.TTerm Grammar.OpenGraphReferenceValueType -> Phantoms.TTerm (Maybe Bool) -> Phantoms.TTerm Grammar.OpenGraphReferenceValueType
openGraphReferenceValueTypeWithAny original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
              Core.projectionField = (Core.Name "property")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

openGraphReferenceValueTypeWithNotNull :: Phantoms.TTerm Grammar.OpenGraphReferenceValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenGraphReferenceValueType
openGraphReferenceValueTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
              Core.projectionField = (Core.Name "any")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
              Core.projectionField = (Core.Name "property")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

openGraphReferenceValueTypeWithProperty :: Phantoms.TTerm Grammar.OpenGraphReferenceValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenGraphReferenceValueType
openGraphReferenceValueTypeWithProperty original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
              Core.projectionField = (Core.Name "any")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "property"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphReferenceValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

openGraphType :: Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenGraphType
openGraphType typed graph =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenGraphType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm typed)},
        Core.Field {
          Core.fieldName = (Core.Name "graph"),
          Core.fieldTerm = (Phantoms.unTTerm graph)}]}))

openGraphTypeGraph :: Phantoms.TTerm Grammar.OpenGraphType -> Phantoms.TTerm Bool
openGraphTypeGraph x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphType"),
        Core.projectionField = (Core.Name "graph")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openGraphTypeTyped :: Phantoms.TTerm Grammar.OpenGraphType -> Phantoms.TTerm (Maybe Grammar.Typed)
openGraphTypeTyped x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphType"),
        Core.projectionField = (Core.Name "typed")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openGraphTypeWithGraph :: Phantoms.TTerm Grammar.OpenGraphType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenGraphType
openGraphTypeWithGraph original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenGraphType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphType"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "graph"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

openGraphTypeWithTyped :: Phantoms.TTerm Grammar.OpenGraphType -> Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.OpenGraphType
openGraphTypeWithTyped original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenGraphType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "graph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenGraphType"),
              Core.projectionField = (Core.Name "graph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

openNodeReferenceValueType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.NodeSynonym -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenNodeReferenceValueType
openNodeReferenceValueType any nodeSynonym notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Phantoms.unTTerm any)},
        Core.Field {
          Core.fieldName = (Core.Name "nodeSynonym"),
          Core.fieldTerm = (Phantoms.unTTerm nodeSynonym)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

openNodeReferenceValueTypeAny :: Phantoms.TTerm Grammar.OpenNodeReferenceValueType -> Phantoms.TTerm Bool
openNodeReferenceValueTypeAny x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
        Core.projectionField = (Core.Name "any")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openNodeReferenceValueTypeNodeSynonym :: Phantoms.TTerm Grammar.OpenNodeReferenceValueType -> Phantoms.TTerm Grammar.NodeSynonym
openNodeReferenceValueTypeNodeSynonym x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
        Core.projectionField = (Core.Name "nodeSynonym")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openNodeReferenceValueTypeNotNull :: Phantoms.TTerm Grammar.OpenNodeReferenceValueType -> Phantoms.TTerm Bool
openNodeReferenceValueTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

openNodeReferenceValueTypeWithAny :: Phantoms.TTerm Grammar.OpenNodeReferenceValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenNodeReferenceValueType
openNodeReferenceValueTypeWithAny original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "nodeSynonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
              Core.projectionField = (Core.Name "nodeSynonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

openNodeReferenceValueTypeWithNodeSynonym :: Phantoms.TTerm Grammar.OpenNodeReferenceValueType -> Phantoms.TTerm Grammar.NodeSynonym -> Phantoms.TTerm Grammar.OpenNodeReferenceValueType
openNodeReferenceValueTypeWithNodeSynonym original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
              Core.projectionField = (Core.Name "any")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nodeSynonym"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

openNodeReferenceValueTypeWithNotNull :: Phantoms.TTerm Grammar.OpenNodeReferenceValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.OpenNodeReferenceValueType
openNodeReferenceValueTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "any"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
              Core.projectionField = (Core.Name "any")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nodeSynonym"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OpenNodeReferenceValueType"),
              Core.projectionField = (Core.Name "nodeSynonym")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

optTypedBindingTableInitializer :: Phantoms.TTerm (Maybe Grammar.TypedBindingTableReferenceValueType) -> Phantoms.TTerm Grammar.BindingTableInitializer -> Phantoms.TTerm Grammar.OptTypedBindingTableInitializer
optTypedBindingTableInitializer type_ initializer =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OptTypedBindingTableInitializer"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm type_)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm initializer)}]}))

optTypedBindingTableInitializerInitializer :: Phantoms.TTerm Grammar.OptTypedBindingTableInitializer -> Phantoms.TTerm Grammar.BindingTableInitializer
optTypedBindingTableInitializerInitializer x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedBindingTableInitializer"),
        Core.projectionField = (Core.Name "initializer")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

optTypedBindingTableInitializerType :: Phantoms.TTerm Grammar.OptTypedBindingTableInitializer -> Phantoms.TTerm (Maybe Grammar.TypedBindingTableReferenceValueType)
optTypedBindingTableInitializerType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedBindingTableInitializer"),
        Core.projectionField = (Core.Name "type")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

optTypedBindingTableInitializerWithInitializer :: Phantoms.TTerm Grammar.OptTypedBindingTableInitializer -> Phantoms.TTerm Grammar.BindingTableInitializer -> Phantoms.TTerm Grammar.OptTypedBindingTableInitializer
optTypedBindingTableInitializerWithInitializer original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OptTypedBindingTableInitializer"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedBindingTableInitializer"),
              Core.projectionField = (Core.Name "type")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

optTypedBindingTableInitializerWithType :: Phantoms.TTerm Grammar.OptTypedBindingTableInitializer -> Phantoms.TTerm (Maybe Grammar.TypedBindingTableReferenceValueType) -> Phantoms.TTerm Grammar.OptTypedBindingTableInitializer
optTypedBindingTableInitializerWithType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OptTypedBindingTableInitializer"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedBindingTableInitializer"),
              Core.projectionField = (Core.Name "initializer")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

optTypedGraphInitializer :: Phantoms.TTerm (Maybe Grammar.TypedGraphReferenceValueType) -> Phantoms.TTerm Grammar.GraphInitializer -> Phantoms.TTerm Grammar.OptTypedGraphInitializer
optTypedGraphInitializer type_ initializer =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OptTypedGraphInitializer"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm type_)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm initializer)}]}))

optTypedGraphInitializerInitializer :: Phantoms.TTerm Grammar.OptTypedGraphInitializer -> Phantoms.TTerm Grammar.GraphInitializer
optTypedGraphInitializerInitializer x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedGraphInitializer"),
        Core.projectionField = (Core.Name "initializer")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

optTypedGraphInitializerType :: Phantoms.TTerm Grammar.OptTypedGraphInitializer -> Phantoms.TTerm (Maybe Grammar.TypedGraphReferenceValueType)
optTypedGraphInitializerType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedGraphInitializer"),
        Core.projectionField = (Core.Name "type")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

optTypedGraphInitializerWithInitializer :: Phantoms.TTerm Grammar.OptTypedGraphInitializer -> Phantoms.TTerm Grammar.GraphInitializer -> Phantoms.TTerm Grammar.OptTypedGraphInitializer
optTypedGraphInitializerWithInitializer original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OptTypedGraphInitializer"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedGraphInitializer"),
              Core.projectionField = (Core.Name "type")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

optTypedGraphInitializerWithType :: Phantoms.TTerm Grammar.OptTypedGraphInitializer -> Phantoms.TTerm (Maybe Grammar.TypedGraphReferenceValueType) -> Phantoms.TTerm Grammar.OptTypedGraphInitializer
optTypedGraphInitializerWithType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OptTypedGraphInitializer"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedGraphInitializer"),
              Core.projectionField = (Core.Name "initializer")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

optTypedValueInitializer :: Phantoms.TTerm (Maybe Grammar.TypedValueType) -> Phantoms.TTerm Grammar.ValueInitializer -> Phantoms.TTerm Grammar.OptTypedValueInitializer
optTypedValueInitializer type_ initializer =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OptTypedValueInitializer"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm type_)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm initializer)}]}))

optTypedValueInitializerInitializer :: Phantoms.TTerm Grammar.OptTypedValueInitializer -> Phantoms.TTerm Grammar.ValueInitializer
optTypedValueInitializerInitializer x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedValueInitializer"),
        Core.projectionField = (Core.Name "initializer")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

optTypedValueInitializerType :: Phantoms.TTerm Grammar.OptTypedValueInitializer -> Phantoms.TTerm (Maybe Grammar.TypedValueType)
optTypedValueInitializerType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedValueInitializer"),
        Core.projectionField = (Core.Name "type")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

optTypedValueInitializerWithInitializer :: Phantoms.TTerm Grammar.OptTypedValueInitializer -> Phantoms.TTerm Grammar.ValueInitializer -> Phantoms.TTerm Grammar.OptTypedValueInitializer
optTypedValueInitializerWithInitializer original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OptTypedValueInitializer"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedValueInitializer"),
              Core.projectionField = (Core.Name "type")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

optTypedValueInitializerWithType :: Phantoms.TTerm Grammar.OptTypedValueInitializer -> Phantoms.TTerm (Maybe Grammar.TypedValueType) -> Phantoms.TTerm Grammar.OptTypedValueInitializer
optTypedValueInitializerWithType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OptTypedValueInitializer"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "type"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OptTypedValueInitializer"),
              Core.projectionField = (Core.Name "initializer")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

optionalOperandBraceBlock :: Phantoms.TTerm Grammar.MatchStatementBlock -> Phantoms.TTerm Grammar.OptionalOperand
optionalOperandBraceBlock x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OptionalOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "braceBlock"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

optionalOperandParenBlock :: Phantoms.TTerm Grammar.MatchStatementBlock -> Phantoms.TTerm Grammar.OptionalOperand
optionalOperandParenBlock x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OptionalOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parenBlock"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

optionalOperandSimple :: Phantoms.TTerm Grammar.SimpleMatchStatement -> Phantoms.TTerm Grammar.OptionalOperand
optionalOperandSimple x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OptionalOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "simple"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

orderByAndOptionalOffsetAndLimit :: Phantoms.TTerm Grammar.OrderByClause -> Phantoms.TTerm (Maybe Grammar.OffsetClause) -> Phantoms.TTerm (Maybe Grammar.LimitClause) -> Phantoms.TTerm Grammar.OrderByAndOptionalOffsetAndLimit
orderByAndOptionalOffsetAndLimit orderBy offset limit =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Phantoms.unTTerm orderBy)},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Phantoms.unTTerm offset)},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Phantoms.unTTerm limit)}]}))

orderByAndOptionalOffsetAndLimitLimit :: Phantoms.TTerm Grammar.OrderByAndOptionalOffsetAndLimit -> Phantoms.TTerm (Maybe Grammar.LimitClause)
orderByAndOptionalOffsetAndLimitLimit x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
        Core.projectionField = (Core.Name "limit")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

orderByAndOptionalOffsetAndLimitOffset :: Phantoms.TTerm Grammar.OrderByAndOptionalOffsetAndLimit -> Phantoms.TTerm (Maybe Grammar.OffsetClause)
orderByAndOptionalOffsetAndLimitOffset x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
        Core.projectionField = (Core.Name "offset")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

orderByAndOptionalOffsetAndLimitOrderBy :: Phantoms.TTerm Grammar.OrderByAndOptionalOffsetAndLimit -> Phantoms.TTerm Grammar.OrderByClause
orderByAndOptionalOffsetAndLimitOrderBy x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
        Core.projectionField = (Core.Name "orderBy")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

orderByAndOptionalOffsetAndLimitWithLimit :: Phantoms.TTerm Grammar.OrderByAndOptionalOffsetAndLimit -> Phantoms.TTerm (Maybe Grammar.LimitClause) -> Phantoms.TTerm Grammar.OrderByAndOptionalOffsetAndLimit
orderByAndOptionalOffsetAndLimitWithLimit original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
              Core.projectionField = (Core.Name "orderBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
              Core.projectionField = (Core.Name "offset")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

orderByAndOptionalOffsetAndLimitWithOffset :: Phantoms.TTerm Grammar.OrderByAndOptionalOffsetAndLimit -> Phantoms.TTerm (Maybe Grammar.OffsetClause) -> Phantoms.TTerm Grammar.OrderByAndOptionalOffsetAndLimit
orderByAndOptionalOffsetAndLimitWithOffset original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
              Core.projectionField = (Core.Name "orderBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
              Core.projectionField = (Core.Name "limit")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

orderByAndOptionalOffsetAndLimitWithOrderBy :: Phantoms.TTerm Grammar.OrderByAndOptionalOffsetAndLimit -> Phantoms.TTerm Grammar.OrderByClause -> Phantoms.TTerm Grammar.OrderByAndOptionalOffsetAndLimit
orderByAndOptionalOffsetAndLimitWithOrderBy original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
              Core.projectionField = (Core.Name "offset")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"),
              Core.projectionField = (Core.Name "limit")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

orderByAndPageStatementLimitOnly :: Phantoms.TTerm Grammar.LimitClause -> Phantoms.TTerm Grammar.OrderByAndPageStatement
orderByAndPageStatementLimitOnly x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OrderByAndPageStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "limitOnly"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

orderByAndPageStatementOffsetAndOptionalLimit :: Phantoms.TTerm Grammar.OffsetAndOptionalLimit -> Phantoms.TTerm Grammar.OrderByAndPageStatement
orderByAndPageStatementOffsetAndOptionalLimit x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OrderByAndPageStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "offsetAndOptionalLimit"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

orderByAndPageStatementOrderByAndOptionalOffsetAndLimit :: Phantoms.TTerm Grammar.OrderByAndOptionalOffsetAndLimit -> Phantoms.TTerm Grammar.OrderByAndPageStatement
orderByAndPageStatementOrderByAndOptionalOffsetAndLimit x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OrderByAndPageStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "orderByAndOptionalOffsetAndLimit"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

orderingSpecificationAscending :: Phantoms.TTerm Grammar.OrderingSpecification
orderingSpecificationAscending =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OrderingSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "ascending"),
        Core.fieldTerm = Core.TermUnit}}))

orderingSpecificationDescending :: Phantoms.TTerm Grammar.OrderingSpecification
orderingSpecificationDescending =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OrderingSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "descending"),
        Core.fieldTerm = Core.TermUnit}}))

ordinalityOrOffsetTypeOffset :: Phantoms.TTerm Grammar.OrdinalityOrOffsetType
ordinalityOrOffsetTypeOffset =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OrdinalityOrOffsetType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "offset"),
        Core.fieldTerm = Core.TermUnit}}))

ordinalityOrOffsetTypeOrdinality :: Phantoms.TTerm Grammar.OrdinalityOrOffsetType
ordinalityOrOffsetTypeOrdinality =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.OrdinalityOrOffsetType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "ordinality"),
        Core.fieldTerm = Core.TermUnit}}))

parameterSessionSpecification :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SessionParameterSpecification -> Phantoms.TTerm Grammar.ParameterSessionSpecification
parameterSessionSpecification parameter sessionParameterSpecification =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParameterSessionSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parameter"),
          Core.fieldTerm = (Phantoms.unTTerm parameter)},
        Core.Field {
          Core.fieldName = (Core.Name "sessionParameterSpecification"),
          Core.fieldTerm = (Phantoms.unTTerm sessionParameterSpecification)}]}))

parameterSessionSpecificationParameter :: Phantoms.TTerm Grammar.ParameterSessionSpecification -> Phantoms.TTerm Bool
parameterSessionSpecificationParameter x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ParameterSessionSpecification"),
        Core.projectionField = (Core.Name "parameter")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

parameterSessionSpecificationSessionParameterSpecification :: Phantoms.TTerm Grammar.ParameterSessionSpecification -> Phantoms.TTerm Grammar.SessionParameterSpecification
parameterSessionSpecificationSessionParameterSpecification x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ParameterSessionSpecification"),
        Core.projectionField = (Core.Name "sessionParameterSpecification")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

parameterSessionSpecificationWithParameter :: Phantoms.TTerm Grammar.ParameterSessionSpecification -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ParameterSessionSpecification
parameterSessionSpecificationWithParameter original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParameterSessionSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parameter"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "sessionParameterSpecification"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParameterSessionSpecification"),
              Core.projectionField = (Core.Name "sessionParameterSpecification")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

parameterSessionSpecificationWithSessionParameterSpecification :: Phantoms.TTerm Grammar.ParameterSessionSpecification -> Phantoms.TTerm Grammar.SessionParameterSpecification -> Phantoms.TTerm Grammar.ParameterSessionSpecification
parameterSessionSpecificationWithSessionParameterSpecification original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParameterSessionSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parameter"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParameterSessionSpecification"),
              Core.projectionField = (Core.Name "parameter")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "sessionParameterSpecification"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

parametersOrCharacteristicsCharacteristics :: Phantoms.TTerm Grammar.ParametersOrCharacteristics
parametersOrCharacteristicsCharacteristics =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ParametersOrCharacteristics"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "characteristics"),
        Core.fieldTerm = Core.TermUnit}}))

parametersOrCharacteristicsParameters :: Phantoms.TTerm Grammar.ParametersOrCharacteristics
parametersOrCharacteristicsParameters =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ParametersOrCharacteristics"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parameters"),
        Core.fieldTerm = Core.TermUnit}}))

parentAndGraphName :: Phantoms.TTerm Grammar.CatalogObjectParentReference -> Phantoms.TTerm Grammar.GraphName -> Phantoms.TTerm Grammar.ParentAndGraphName
parentAndGraphName parentReference graphName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParentAndGraphName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Phantoms.unTTerm parentReference)},
        Core.Field {
          Core.fieldName = (Core.Name "graphName"),
          Core.fieldTerm = (Phantoms.unTTerm graphName)}]}))

parentAndGraphNameGraphName :: Phantoms.TTerm Grammar.ParentAndGraphName -> Phantoms.TTerm Grammar.GraphName
parentAndGraphNameGraphName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ParentAndGraphName"),
        Core.projectionField = (Core.Name "graphName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

parentAndGraphNameParentReference :: Phantoms.TTerm Grammar.ParentAndGraphName -> Phantoms.TTerm Grammar.CatalogObjectParentReference
parentAndGraphNameParentReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ParentAndGraphName"),
        Core.projectionField = (Core.Name "parentReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

parentAndGraphNameWithGraphName :: Phantoms.TTerm Grammar.ParentAndGraphName -> Phantoms.TTerm Grammar.GraphName -> Phantoms.TTerm Grammar.ParentAndGraphName
parentAndGraphNameWithGraphName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParentAndGraphName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParentAndGraphName"),
              Core.projectionField = (Core.Name "parentReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "graphName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

parentAndGraphNameWithParentReference :: Phantoms.TTerm Grammar.ParentAndGraphName -> Phantoms.TTerm Grammar.CatalogObjectParentReference -> Phantoms.TTerm Grammar.ParentAndGraphName
parentAndGraphNameWithParentReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParentAndGraphName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "graphName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParentAndGraphName"),
              Core.projectionField = (Core.Name "graphName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

parentAndTableName :: Phantoms.TTerm Grammar.CatalogObjectParentReference -> Phantoms.TTerm Grammar.BindingTableName -> Phantoms.TTerm Grammar.ParentAndTableName
parentAndTableName parentReference tableName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParentAndTableName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Phantoms.unTTerm parentReference)},
        Core.Field {
          Core.fieldName = (Core.Name "tableName"),
          Core.fieldTerm = (Phantoms.unTTerm tableName)}]}))

parentAndTableNameParentReference :: Phantoms.TTerm Grammar.ParentAndTableName -> Phantoms.TTerm Grammar.CatalogObjectParentReference
parentAndTableNameParentReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ParentAndTableName"),
        Core.projectionField = (Core.Name "parentReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

parentAndTableNameTableName :: Phantoms.TTerm Grammar.ParentAndTableName -> Phantoms.TTerm Grammar.BindingTableName
parentAndTableNameTableName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ParentAndTableName"),
        Core.projectionField = (Core.Name "tableName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

parentAndTableNameWithParentReference :: Phantoms.TTerm Grammar.ParentAndTableName -> Phantoms.TTerm Grammar.CatalogObjectParentReference -> Phantoms.TTerm Grammar.ParentAndTableName
parentAndTableNameWithParentReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParentAndTableName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "tableName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParentAndTableName"),
              Core.projectionField = (Core.Name "tableName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

parentAndTableNameWithTableName :: Phantoms.TTerm Grammar.ParentAndTableName -> Phantoms.TTerm Grammar.BindingTableName -> Phantoms.TTerm Grammar.ParentAndTableName
parentAndTableNameWithTableName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParentAndTableName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParentAndTableName"),
              Core.projectionField = (Core.Name "parentReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "tableName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

parenthesizedPathPatternExpression :: Phantoms.TTerm (Maybe Grammar.SubpathVariableDeclaration) -> Phantoms.TTerm (Maybe Grammar.PathModePrefix) -> Phantoms.TTerm Grammar.PathPatternExpression -> Phantoms.TTerm (Maybe Grammar.ParenthesizedPathPatternWhereClause) -> Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression
parenthesizedPathPatternExpression subpathDeclaration pathMode expression whereClause =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "subpathDeclaration"),
          Core.fieldTerm = (Phantoms.unTTerm subpathDeclaration)},
        Core.Field {
          Core.fieldName = (Core.Name "pathMode"),
          Core.fieldTerm = (Phantoms.unTTerm pathMode)},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Phantoms.unTTerm expression)},
        Core.Field {
          Core.fieldName = (Core.Name "whereClause"),
          Core.fieldTerm = (Phantoms.unTTerm whereClause)}]}))

parenthesizedPathPatternExpressionExpression :: Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression -> Phantoms.TTerm Grammar.PathPatternExpression
parenthesizedPathPatternExpressionExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
        Core.projectionField = (Core.Name "expression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

parenthesizedPathPatternExpressionPathMode :: Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression -> Phantoms.TTerm (Maybe Grammar.PathModePrefix)
parenthesizedPathPatternExpressionPathMode x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
        Core.projectionField = (Core.Name "pathMode")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

parenthesizedPathPatternExpressionSubpathDeclaration :: Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression -> Phantoms.TTerm (Maybe Grammar.SubpathVariableDeclaration)
parenthesizedPathPatternExpressionSubpathDeclaration x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
        Core.projectionField = (Core.Name "subpathDeclaration")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

parenthesizedPathPatternExpressionWhereClause :: Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression -> Phantoms.TTerm (Maybe Grammar.ParenthesizedPathPatternWhereClause)
parenthesizedPathPatternExpressionWhereClause x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
        Core.projectionField = (Core.Name "whereClause")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

parenthesizedPathPatternExpressionWithExpression :: Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression -> Phantoms.TTerm Grammar.PathPatternExpression -> Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression
parenthesizedPathPatternExpressionWithExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "subpathDeclaration"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "subpathDeclaration")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "pathMode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "pathMode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "whereClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "whereClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

parenthesizedPathPatternExpressionWithPathMode :: Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression -> Phantoms.TTerm (Maybe Grammar.PathModePrefix) -> Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression
parenthesizedPathPatternExpressionWithPathMode original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "subpathDeclaration"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "subpathDeclaration")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "pathMode"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "expression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "whereClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "whereClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

parenthesizedPathPatternExpressionWithSubpathDeclaration :: Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression -> Phantoms.TTerm (Maybe Grammar.SubpathVariableDeclaration) -> Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression
parenthesizedPathPatternExpressionWithSubpathDeclaration original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "subpathDeclaration"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "pathMode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "pathMode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "expression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "whereClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "whereClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

parenthesizedPathPatternExpressionWithWhereClause :: Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression -> Phantoms.TTerm (Maybe Grammar.ParenthesizedPathPatternWhereClause) -> Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression
parenthesizedPathPatternExpressionWithWhereClause original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "subpathDeclaration"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "subpathDeclaration")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "pathMode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "pathMode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"),
              Core.projectionField = (Core.Name "expression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "whereClause"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

pathElementList :: Phantoms.TTerm Grammar.PathElementListStart -> Phantoms.TTerm [Grammar.PathElementListStep] -> Phantoms.TTerm Grammar.PathElementList
pathElementList start steps =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathElementList"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "start"),
          Core.fieldTerm = (Phantoms.unTTerm start)},
        Core.Field {
          Core.fieldName = (Core.Name "steps"),
          Core.fieldTerm = (Phantoms.unTTerm steps)}]}))

pathElementListStart :: Phantoms.TTerm Grammar.PathElementList -> Phantoms.TTerm Grammar.PathElementListStart
pathElementListStart x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PathElementList"),
        Core.projectionField = (Core.Name "start")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

pathElementListStep :: Phantoms.TTerm Grammar.EdgeReferenceValueExpression -> Phantoms.TTerm Grammar.NodeReferenceValueExpression -> Phantoms.TTerm Grammar.PathElementListStep
pathElementListStep edgeReference nodeReference =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathElementListStep"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "edgeReference"),
          Core.fieldTerm = (Phantoms.unTTerm edgeReference)},
        Core.Field {
          Core.fieldName = (Core.Name "nodeReference"),
          Core.fieldTerm = (Phantoms.unTTerm nodeReference)}]}))

pathElementListStepEdgeReference :: Phantoms.TTerm Grammar.PathElementListStep -> Phantoms.TTerm Grammar.EdgeReferenceValueExpression
pathElementListStepEdgeReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PathElementListStep"),
        Core.projectionField = (Core.Name "edgeReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

pathElementListStepNodeReference :: Phantoms.TTerm Grammar.PathElementListStep -> Phantoms.TTerm Grammar.NodeReferenceValueExpression
pathElementListStepNodeReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PathElementListStep"),
        Core.projectionField = (Core.Name "nodeReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

pathElementListStepWithEdgeReference :: Phantoms.TTerm Grammar.PathElementListStep -> Phantoms.TTerm Grammar.EdgeReferenceValueExpression -> Phantoms.TTerm Grammar.PathElementListStep
pathElementListStepWithEdgeReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathElementListStep"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "edgeReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "nodeReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathElementListStep"),
              Core.projectionField = (Core.Name "nodeReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

pathElementListStepWithNodeReference :: Phantoms.TTerm Grammar.PathElementListStep -> Phantoms.TTerm Grammar.NodeReferenceValueExpression -> Phantoms.TTerm Grammar.PathElementListStep
pathElementListStepWithNodeReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathElementListStep"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "edgeReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathElementListStep"),
              Core.projectionField = (Core.Name "edgeReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nodeReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

pathElementListSteps :: Phantoms.TTerm Grammar.PathElementList -> Phantoms.TTerm [Grammar.PathElementListStep]
pathElementListSteps x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PathElementList"),
        Core.projectionField = (Core.Name "steps")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

pathElementListWithStart :: Phantoms.TTerm Grammar.PathElementList -> Phantoms.TTerm Grammar.PathElementListStart -> Phantoms.TTerm Grammar.PathElementList
pathElementListWithStart original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathElementList"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "start"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "steps"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathElementList"),
              Core.projectionField = (Core.Name "steps")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

pathElementListWithSteps :: Phantoms.TTerm Grammar.PathElementList -> Phantoms.TTerm [Grammar.PathElementListStep] -> Phantoms.TTerm Grammar.PathElementList
pathElementListWithSteps original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathElementList"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "start"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathElementList"),
              Core.projectionField = (Core.Name "start")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "steps"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

pathFactorPrimary :: Phantoms.TTerm Grammar.PathPrimary -> Phantoms.TTerm Grammar.PathFactor
pathFactorPrimary x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathFactor"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "primary"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathFactorQuantifiedPrimary :: Phantoms.TTerm Grammar.QuantifiedPathPrimary -> Phantoms.TTerm Grammar.PathFactor
pathFactorQuantifiedPrimary x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathFactor"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "quantifiedPrimary"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathFactorQuestionedPrimary :: Phantoms.TTerm Grammar.QuestionedPathPrimary -> Phantoms.TTerm Grammar.PathFactor
pathFactorQuestionedPrimary x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathFactor"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "questionedPrimary"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathModeAcyclic :: Phantoms.TTerm Grammar.PathMode
pathModeAcyclic =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathMode"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "acyclic"),
        Core.fieldTerm = Core.TermUnit}}))

pathModePrefix :: Phantoms.TTerm Grammar.PathMode -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.PathModePrefix
pathModePrefix mode orPaths =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathModePrefix"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm mode)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm orPaths)}]}))

pathModePrefixMode :: Phantoms.TTerm Grammar.PathModePrefix -> Phantoms.TTerm Grammar.PathMode
pathModePrefixMode x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PathModePrefix"),
        Core.projectionField = (Core.Name "mode")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

pathModePrefixOrPaths :: Phantoms.TTerm Grammar.PathModePrefix -> Phantoms.TTerm (Maybe Grammar.PathOrPaths)
pathModePrefixOrPaths x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PathModePrefix"),
        Core.projectionField = (Core.Name "orPaths")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

pathModePrefixWithMode :: Phantoms.TTerm Grammar.PathModePrefix -> Phantoms.TTerm Grammar.PathMode -> Phantoms.TTerm Grammar.PathModePrefix
pathModePrefixWithMode original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathModePrefix"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathModePrefix"),
              Core.projectionField = (Core.Name "orPaths")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

pathModePrefixWithOrPaths :: Phantoms.TTerm Grammar.PathModePrefix -> Phantoms.TTerm (Maybe Grammar.PathOrPaths) -> Phantoms.TTerm Grammar.PathModePrefix
pathModePrefixWithOrPaths original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathModePrefix"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "mode"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathModePrefix"),
              Core.projectionField = (Core.Name "mode")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orPaths"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

pathModeSimple :: Phantoms.TTerm Grammar.PathMode
pathModeSimple =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathMode"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "simple"),
        Core.fieldTerm = Core.TermUnit}}))

pathModeTrail :: Phantoms.TTerm Grammar.PathMode
pathModeTrail =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathMode"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "trail"),
        Core.fieldTerm = Core.TermUnit}}))

pathModeWalk :: Phantoms.TTerm Grammar.PathMode
pathModeWalk =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathMode"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "walk"),
        Core.fieldTerm = Core.TermUnit}}))

pathOrPathsPath :: Phantoms.TTerm Grammar.PathOrPaths
pathOrPathsPath =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathOrPaths"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "path"),
        Core.fieldTerm = Core.TermUnit}}))

pathOrPathsPaths :: Phantoms.TTerm Grammar.PathOrPaths
pathOrPathsPaths =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathOrPaths"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "paths"),
        Core.fieldTerm = Core.TermUnit}}))

pathPattern :: Phantoms.TTerm (Maybe Grammar.PathVariableDeclaration) -> Phantoms.TTerm (Maybe Grammar.PathPatternPrefix) -> Phantoms.TTerm Grammar.PathPatternExpression -> Phantoms.TTerm Grammar.PathPattern
pathPattern variableDeclaration prefix expression =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variableDeclaration"),
          Core.fieldTerm = (Phantoms.unTTerm variableDeclaration)},
        Core.Field {
          Core.fieldName = (Core.Name "prefix"),
          Core.fieldTerm = (Phantoms.unTTerm prefix)},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Phantoms.unTTerm expression)}]}))

pathPatternExpression :: Phantoms.TTerm Grammar.PathPattern -> Phantoms.TTerm Grammar.PathPatternExpression
pathPatternExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PathPattern"),
        Core.projectionField = (Core.Name "expression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

pathPatternExpressionMultisetAlternation :: Phantoms.TTerm [Grammar.PathTerm] -> Phantoms.TTerm Grammar.PathPatternExpression
pathPatternExpressionMultisetAlternation x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathPatternExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "multisetAlternation"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathPatternExpressionPatternUnion :: Phantoms.TTerm [Grammar.PathTerm] -> Phantoms.TTerm Grammar.PathPatternExpression
pathPatternExpressionPatternUnion x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathPatternExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "patternUnion"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathPatternExpressionTerm :: Phantoms.TTerm Grammar.PathTerm -> Phantoms.TTerm Grammar.PathPatternExpression
pathPatternExpressionTerm x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathPatternExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "term"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathPatternPrefix :: Phantoms.TTerm Grammar.PathPattern -> Phantoms.TTerm (Maybe Grammar.PathPatternPrefix)
pathPatternPrefix x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PathPattern"),
        Core.projectionField = (Core.Name "prefix")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

pathPatternPrefixModePrefix :: Phantoms.TTerm Grammar.PathModePrefix -> Phantoms.TTerm Grammar.PathPatternPrefix
pathPatternPrefixModePrefix x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathPatternPrefix"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "modePrefix"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathPatternPrefixSearchPrefix :: Phantoms.TTerm Grammar.PathSearchPrefix -> Phantoms.TTerm Grammar.PathPatternPrefix
pathPatternPrefixSearchPrefix x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathPatternPrefix"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "searchPrefix"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathPatternVariableDeclaration :: Phantoms.TTerm Grammar.PathPattern -> Phantoms.TTerm (Maybe Grammar.PathVariableDeclaration)
pathPatternVariableDeclaration x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PathPattern"),
        Core.projectionField = (Core.Name "variableDeclaration")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

pathPatternWithExpression :: Phantoms.TTerm Grammar.PathPattern -> Phantoms.TTerm Grammar.PathPatternExpression -> Phantoms.TTerm Grammar.PathPattern
pathPatternWithExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variableDeclaration"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathPattern"),
              Core.projectionField = (Core.Name "variableDeclaration")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "prefix"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathPattern"),
              Core.projectionField = (Core.Name "prefix")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

pathPatternWithPrefix :: Phantoms.TTerm Grammar.PathPattern -> Phantoms.TTerm (Maybe Grammar.PathPatternPrefix) -> Phantoms.TTerm Grammar.PathPattern
pathPatternWithPrefix original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variableDeclaration"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathPattern"),
              Core.projectionField = (Core.Name "variableDeclaration")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "prefix"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathPattern"),
              Core.projectionField = (Core.Name "expression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

pathPatternWithVariableDeclaration :: Phantoms.TTerm Grammar.PathPattern -> Phantoms.TTerm (Maybe Grammar.PathVariableDeclaration) -> Phantoms.TTerm Grammar.PathPattern
pathPatternWithVariableDeclaration original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathPattern"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variableDeclaration"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "prefix"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathPattern"),
              Core.projectionField = (Core.Name "prefix")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PathPattern"),
              Core.projectionField = (Core.Name "expression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

pathPrimaryElementPattern :: Phantoms.TTerm Grammar.ElementPattern -> Phantoms.TTerm Grammar.PathPrimary
pathPrimaryElementPattern x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathPrimary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "elementPattern"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathPrimaryParenthesizedExpression :: Phantoms.TTerm Grammar.ParenthesizedPathPatternExpression -> Phantoms.TTerm Grammar.PathPrimary
pathPrimaryParenthesizedExpression x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathPrimary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parenthesizedExpression"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathPrimarySimplifiedExpression :: Phantoms.TTerm Grammar.SimplifiedPathPatternExpression -> Phantoms.TTerm Grammar.PathPrimary
pathPrimarySimplifiedExpression x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathPrimary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "simplifiedExpression"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathSearchPrefixAll :: Phantoms.TTerm Grammar.AllPathSearch -> Phantoms.TTerm Grammar.PathSearchPrefix
pathSearchPrefixAll x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathSearchPrefix"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "all"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathSearchPrefixAny :: Phantoms.TTerm Grammar.AnyPathSearch -> Phantoms.TTerm Grammar.PathSearchPrefix
pathSearchPrefixAny x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathSearchPrefix"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "any"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathSearchPrefixShortest :: Phantoms.TTerm Grammar.ShortestPathSearch -> Phantoms.TTerm Grammar.PathSearchPrefix
pathSearchPrefixShortest x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PathSearchPrefix"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "shortest"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

pathValueType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.PathValueType
pathValueType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

pathValueTypeNotNull :: Phantoms.TTerm Grammar.PathValueType -> Phantoms.TTerm Bool
pathValueTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PathValueType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

pathValueTypeWithNotNull :: Phantoms.TTerm Grammar.PathValueType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.PathValueType
pathValueTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PathValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

powerFunction :: Phantoms.TTerm Grammar.NumericValueExpressionBase -> Phantoms.TTerm Grammar.NumericValueExpressionExponent -> Phantoms.TTerm Grammar.PowerFunction
powerFunction base exponent =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PowerFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "base"),
          Core.fieldTerm = (Phantoms.unTTerm base)},
        Core.Field {
          Core.fieldName = (Core.Name "exponent"),
          Core.fieldTerm = (Phantoms.unTTerm exponent)}]}))

powerFunctionBase :: Phantoms.TTerm Grammar.PowerFunction -> Phantoms.TTerm Grammar.NumericValueExpressionBase
powerFunctionBase x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PowerFunction"),
        Core.projectionField = (Core.Name "base")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

powerFunctionExponent :: Phantoms.TTerm Grammar.PowerFunction -> Phantoms.TTerm Grammar.NumericValueExpressionExponent
powerFunctionExponent x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PowerFunction"),
        Core.projectionField = (Core.Name "exponent")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

powerFunctionWithBase :: Phantoms.TTerm Grammar.PowerFunction -> Phantoms.TTerm Grammar.NumericValueExpressionBase -> Phantoms.TTerm Grammar.PowerFunction
powerFunctionWithBase original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PowerFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "base"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "exponent"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PowerFunction"),
              Core.projectionField = (Core.Name "exponent")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

powerFunctionWithExponent :: Phantoms.TTerm Grammar.PowerFunction -> Phantoms.TTerm Grammar.NumericValueExpressionExponent -> Phantoms.TTerm Grammar.PowerFunction
powerFunctionWithExponent original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PowerFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "base"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PowerFunction"),
              Core.projectionField = (Core.Name "base")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "exponent"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

precisionAndScale :: Phantoms.TTerm Grammar.Precision -> Phantoms.TTerm (Maybe Grammar.Scale) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.PrecisionAndScale
precisionAndScale precision scale notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Phantoms.unTTerm precision)},
        Core.Field {
          Core.fieldName = (Core.Name "scale"),
          Core.fieldTerm = (Phantoms.unTTerm scale)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

precisionAndScaleNotNull :: Phantoms.TTerm Grammar.PrecisionAndScale -> Phantoms.TTerm Bool
precisionAndScaleNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

precisionAndScalePrecision :: Phantoms.TTerm Grammar.PrecisionAndScale -> Phantoms.TTerm Grammar.Precision
precisionAndScalePrecision x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
        Core.projectionField = (Core.Name "precision")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

precisionAndScaleScale :: Phantoms.TTerm Grammar.PrecisionAndScale -> Phantoms.TTerm (Maybe Grammar.Scale)
precisionAndScaleScale x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
        Core.projectionField = (Core.Name "scale")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

precisionAndScaleWithNotNull :: Phantoms.TTerm Grammar.PrecisionAndScale -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.PrecisionAndScale
precisionAndScaleWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
              Core.projectionField = (Core.Name "precision")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "scale"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
              Core.projectionField = (Core.Name "scale")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

precisionAndScaleWithPrecision :: Phantoms.TTerm Grammar.PrecisionAndScale -> Phantoms.TTerm Grammar.Precision -> Phantoms.TTerm Grammar.PrecisionAndScale
precisionAndScaleWithPrecision original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "scale"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
              Core.projectionField = (Core.Name "scale")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

precisionAndScaleWithScale :: Phantoms.TTerm Grammar.PrecisionAndScale -> Phantoms.TTerm (Maybe Grammar.Scale) -> Phantoms.TTerm Grammar.PrecisionAndScale
precisionAndScaleWithScale original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
              Core.projectionField = (Core.Name "precision")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "scale"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PrecisionAndScale"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

predefinedSchemaReferenceCurrentSchema :: Phantoms.TTerm Grammar.PredefinedSchemaReference
predefinedSchemaReferenceCurrentSchema =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PredefinedSchemaReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "currentSchema"),
        Core.fieldTerm = Core.TermUnit}}))

predefinedSchemaReferenceHomeSchema :: Phantoms.TTerm Grammar.PredefinedSchemaReference
predefinedSchemaReferenceHomeSchema =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PredefinedSchemaReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "homeSchema"),
        Core.fieldTerm = Core.TermUnit}}))

predefinedSchemaReferencePeriod :: Phantoms.TTerm Grammar.PredefinedSchemaReference
predefinedSchemaReferencePeriod =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PredefinedSchemaReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "period"),
        Core.fieldTerm = Core.TermUnit}}))

predefinedTypeBooleanType :: Phantoms.TTerm Grammar.BooleanType -> Phantoms.TTerm Grammar.PredefinedType
predefinedTypeBooleanType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PredefinedType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "booleanType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predefinedTypeByteStringType :: Phantoms.TTerm Grammar.ByteStringType -> Phantoms.TTerm Grammar.PredefinedType
predefinedTypeByteStringType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PredefinedType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "byteStringType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predefinedTypeCharacterStringType :: Phantoms.TTerm Grammar.CharacterStringType -> Phantoms.TTerm Grammar.PredefinedType
predefinedTypeCharacterStringType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PredefinedType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "characterStringType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predefinedTypeImmaterialValueType :: Phantoms.TTerm Grammar.ImmaterialValueType -> Phantoms.TTerm Grammar.PredefinedType
predefinedTypeImmaterialValueType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PredefinedType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "immaterialValueType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predefinedTypeNumericType :: Phantoms.TTerm Grammar.NumericType -> Phantoms.TTerm Grammar.PredefinedType
predefinedTypeNumericType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PredefinedType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "numericType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predefinedTypeReferenceValueType :: Phantoms.TTerm Grammar.ReferenceValueType -> Phantoms.TTerm Grammar.PredefinedType
predefinedTypeReferenceValueType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PredefinedType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "referenceValueType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predefinedTypeTemporalType :: Phantoms.TTerm Grammar.TemporalType -> Phantoms.TTerm Grammar.PredefinedType
predefinedTypeTemporalType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PredefinedType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "temporalType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predicateAllDifferentPredicate :: Phantoms.TTerm Grammar.AllDifferentPredicate -> Phantoms.TTerm Grammar.Predicate
predicateAllDifferentPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Predicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "allDifferentPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predicateDirectedPredicate :: Phantoms.TTerm Grammar.DirectedPredicate -> Phantoms.TTerm Grammar.Predicate
predicateDirectedPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Predicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "directedPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predicateExistsPredicate :: Phantoms.TTerm Grammar.ExistsPredicate -> Phantoms.TTerm Grammar.Predicate
predicateExistsPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Predicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "existsPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predicateLabeledPredicate :: Phantoms.TTerm Grammar.LabeledPredicate -> Phantoms.TTerm Grammar.Predicate
predicateLabeledPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Predicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "labeledPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predicateNullPredicate :: Phantoms.TTerm Grammar.NullPredicate -> Phantoms.TTerm Grammar.Predicate
predicateNullPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Predicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nullPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predicatePropertyExistsPredicate :: Phantoms.TTerm Grammar.PropertyExistsPredicate -> Phantoms.TTerm Grammar.Predicate
predicatePropertyExistsPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Predicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "propertyExistsPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predicateSamePredicate :: Phantoms.TTerm Grammar.SamePredicate -> Phantoms.TTerm Grammar.Predicate
predicateSamePredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Predicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "samePredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predicateSourceDestinationPredicate :: Phantoms.TTerm Grammar.SourceDestinationPredicate -> Phantoms.TTerm Grammar.Predicate
predicateSourceDestinationPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Predicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "sourceDestinationPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

predicateValueTypePredicate :: Phantoms.TTerm Grammar.ValueTypePredicate -> Phantoms.TTerm Grammar.Predicate
predicateValueTypePredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Predicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "valueTypePredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primaryValueExpressionAggregateFunction :: Phantoms.TTerm Grammar.AggregateFunction -> Phantoms.TTerm Grammar.PrimaryValueExpression
primaryValueExpressionAggregateFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "aggregateFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primaryValueExpressionBindingVariableReference :: Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm Grammar.PrimaryValueExpression
primaryValueExpressionBindingVariableReference x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "bindingVariableReference"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primaryValueExpressionCaseExpression :: Phantoms.TTerm Grammar.CaseExpression -> Phantoms.TTerm Grammar.PrimaryValueExpression
primaryValueExpressionCaseExpression x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "caseExpression"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primaryValueExpressionCastSpecification :: Phantoms.TTerm Grammar.CastSpecification -> Phantoms.TTerm Grammar.PrimaryValueExpression
primaryValueExpressionCastSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "castSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primaryValueExpressionElementIdFunction :: Phantoms.TTerm Grammar.ElementIdFunction -> Phantoms.TTerm Grammar.PrimaryValueExpression
primaryValueExpressionElementIdFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "elementIdFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primaryValueExpressionLetValueExpression :: Phantoms.TTerm Grammar.LetValueExpression -> Phantoms.TTerm Grammar.PrimaryValueExpression
primaryValueExpressionLetValueExpression x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "letValueExpression"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primaryValueExpressionParenthesized :: Phantoms.TTerm Grammar.ParenthesizedValueExpression -> Phantoms.TTerm Grammar.PrimaryValueExpression
primaryValueExpressionParenthesized x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parenthesized"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primaryValueExpressionPathValueConstructor :: Phantoms.TTerm Grammar.PathValueConstructor -> Phantoms.TTerm Grammar.PrimaryValueExpression
primaryValueExpressionPathValueConstructor x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pathValueConstructor"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primaryValueExpressionPropertyReference :: Phantoms.TTerm Grammar.PropertyReference -> Phantoms.TTerm Grammar.PrimaryValueExpression
primaryValueExpressionPropertyReference x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "propertyReference"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primaryValueExpressionUnsignedValueSpecification :: Phantoms.TTerm Grammar.UnsignedValueSpecification -> Phantoms.TTerm Grammar.PrimaryValueExpression
primaryValueExpressionUnsignedValueSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "unsignedValueSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primaryValueExpressionValueQueryExpression :: Phantoms.TTerm Grammar.ValueQueryExpression -> Phantoms.TTerm Grammar.PrimaryValueExpression
primaryValueExpressionValueQueryExpression x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimaryValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "valueQueryExpression"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveCatalogModifyingStatementCreateGraph :: Phantoms.TTerm Grammar.CreateGraphStatement -> Phantoms.TTerm Grammar.PrimitiveCatalogModifyingStatement
primitiveCatalogModifyingStatementCreateGraph x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveCatalogModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "createGraph"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveCatalogModifyingStatementCreateGraphType :: Phantoms.TTerm Grammar.CreateGraphTypeStatement -> Phantoms.TTerm Grammar.PrimitiveCatalogModifyingStatement
primitiveCatalogModifyingStatementCreateGraphType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveCatalogModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "createGraphType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveCatalogModifyingStatementCreateSchema :: Phantoms.TTerm Grammar.CreateSchemaStatement -> Phantoms.TTerm Grammar.PrimitiveCatalogModifyingStatement
primitiveCatalogModifyingStatementCreateSchema x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveCatalogModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "createSchema"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveCatalogModifyingStatementDropGraph :: Phantoms.TTerm Grammar.DropGraphStatement -> Phantoms.TTerm Grammar.PrimitiveCatalogModifyingStatement
primitiveCatalogModifyingStatementDropGraph x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveCatalogModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "dropGraph"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveCatalogModifyingStatementDropGraphType :: Phantoms.TTerm Grammar.DropGraphTypeStatement -> Phantoms.TTerm Grammar.PrimitiveCatalogModifyingStatement
primitiveCatalogModifyingStatementDropGraphType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveCatalogModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "dropGraphType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveCatalogModifyingStatementDropSchema :: Phantoms.TTerm Grammar.DropSchemaStatement -> Phantoms.TTerm Grammar.PrimitiveCatalogModifyingStatement
primitiveCatalogModifyingStatementDropSchema x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveCatalogModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "dropSchema"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveDataModifyingStatementDelete :: Phantoms.TTerm Grammar.DeleteStatement -> Phantoms.TTerm Grammar.PrimitiveDataModifyingStatement
primitiveDataModifyingStatementDelete x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "delete"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveDataModifyingStatementInsert :: Phantoms.TTerm Grammar.InsertStatement -> Phantoms.TTerm Grammar.PrimitiveDataModifyingStatement
primitiveDataModifyingStatementInsert x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "insert"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveDataModifyingStatementRemove :: Phantoms.TTerm Grammar.RemoveStatement -> Phantoms.TTerm Grammar.PrimitiveDataModifyingStatement
primitiveDataModifyingStatementRemove x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "remove"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveDataModifyingStatementSet :: Phantoms.TTerm Grammar.SetStatement -> Phantoms.TTerm Grammar.PrimitiveDataModifyingStatement
primitiveDataModifyingStatementSet x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "set"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveQueryStatementFilter :: Phantoms.TTerm Grammar.FilterStatement -> Phantoms.TTerm Grammar.PrimitiveQueryStatement
primitiveQueryStatementFilter x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "filter"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveQueryStatementFor :: Phantoms.TTerm Grammar.ForStatement -> Phantoms.TTerm Grammar.PrimitiveQueryStatement
primitiveQueryStatementFor x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "for"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveQueryStatementLet :: Phantoms.TTerm Grammar.LetStatement -> Phantoms.TTerm Grammar.PrimitiveQueryStatement
primitiveQueryStatementLet x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "let"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveQueryStatementMatch :: Phantoms.TTerm Grammar.MatchStatement -> Phantoms.TTerm Grammar.PrimitiveQueryStatement
primitiveQueryStatementMatch x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "match"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveQueryStatementOrderByAndPage :: Phantoms.TTerm Grammar.OrderByAndPageStatement -> Phantoms.TTerm Grammar.PrimitiveQueryStatement
primitiveQueryStatementOrderByAndPage x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "orderByAndPage"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

primitiveResultStatementFinish :: Phantoms.TTerm Grammar.PrimitiveResultStatement
primitiveResultStatementFinish =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveResultStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "finish"),
        Core.fieldTerm = Core.TermUnit}}))

primitiveResultStatementReturnAndOptionalOrderBy :: Phantoms.TTerm Grammar.ReturnAndOptionalOrderByAndPage -> Phantoms.TTerm Grammar.PrimitiveResultStatement
primitiveResultStatementReturnAndOptionalOrderBy x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.PrimitiveResultStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "returnAndOptionalOrderBy"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

procedureAndMaybeEnd :: Phantoms.TTerm Grammar.ProcedureSpecification -> Phantoms.TTerm (Maybe Grammar.EndTransactionCommand) -> Phantoms.TTerm Grammar.ProcedureAndMaybeEnd
procedureAndMaybeEnd procedure end =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ProcedureAndMaybeEnd"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "procedure"),
          Core.fieldTerm = (Phantoms.unTTerm procedure)},
        Core.Field {
          Core.fieldName = (Core.Name "end"),
          Core.fieldTerm = (Phantoms.unTTerm end)}]}))

procedureAndMaybeEndEnd :: Phantoms.TTerm Grammar.ProcedureAndMaybeEnd -> Phantoms.TTerm (Maybe Grammar.EndTransactionCommand)
procedureAndMaybeEndEnd x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureAndMaybeEnd"),
        Core.projectionField = (Core.Name "end")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

procedureAndMaybeEndProcedure :: Phantoms.TTerm Grammar.ProcedureAndMaybeEnd -> Phantoms.TTerm Grammar.ProcedureSpecification
procedureAndMaybeEndProcedure x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureAndMaybeEnd"),
        Core.projectionField = (Core.Name "procedure")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

procedureAndMaybeEndWithEnd :: Phantoms.TTerm Grammar.ProcedureAndMaybeEnd -> Phantoms.TTerm (Maybe Grammar.EndTransactionCommand) -> Phantoms.TTerm Grammar.ProcedureAndMaybeEnd
procedureAndMaybeEndWithEnd original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ProcedureAndMaybeEnd"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "procedure"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureAndMaybeEnd"),
              Core.projectionField = (Core.Name "procedure")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "end"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

procedureAndMaybeEndWithProcedure :: Phantoms.TTerm Grammar.ProcedureAndMaybeEnd -> Phantoms.TTerm Grammar.ProcedureSpecification -> Phantoms.TTerm Grammar.ProcedureAndMaybeEnd
procedureAndMaybeEndWithProcedure original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ProcedureAndMaybeEnd"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "procedure"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "end"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureAndMaybeEnd"),
              Core.projectionField = (Core.Name "end")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

procedureBody :: Phantoms.TTerm (Maybe Grammar.AtSchemaClause) -> Phantoms.TTerm (Maybe Grammar.BindingVariableDefinitionBlock) -> Phantoms.TTerm Grammar.StatementBlock -> Phantoms.TTerm Grammar.ProcedureBody
procedureBody atSchema bindings statements =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "atSchema"),
          Core.fieldTerm = (Phantoms.unTTerm atSchema)},
        Core.Field {
          Core.fieldName = (Core.Name "bindings"),
          Core.fieldTerm = (Phantoms.unTTerm bindings)},
        Core.Field {
          Core.fieldName = (Core.Name "statements"),
          Core.fieldTerm = (Phantoms.unTTerm statements)}]}))

procedureBodyAtSchema :: Phantoms.TTerm Grammar.ProcedureBody -> Phantoms.TTerm (Maybe Grammar.AtSchemaClause)
procedureBodyAtSchema x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
        Core.projectionField = (Core.Name "atSchema")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

procedureBodyBindings :: Phantoms.TTerm Grammar.ProcedureBody -> Phantoms.TTerm (Maybe Grammar.BindingVariableDefinitionBlock)
procedureBodyBindings x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
        Core.projectionField = (Core.Name "bindings")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

procedureBodyStatements :: Phantoms.TTerm Grammar.ProcedureBody -> Phantoms.TTerm Grammar.StatementBlock
procedureBodyStatements x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
        Core.projectionField = (Core.Name "statements")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

procedureBodyWithAtSchema :: Phantoms.TTerm Grammar.ProcedureBody -> Phantoms.TTerm (Maybe Grammar.AtSchemaClause) -> Phantoms.TTerm Grammar.ProcedureBody
procedureBodyWithAtSchema original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "atSchema"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "bindings"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
              Core.projectionField = (Core.Name "bindings")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "statements"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
              Core.projectionField = (Core.Name "statements")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

procedureBodyWithBindings :: Phantoms.TTerm Grammar.ProcedureBody -> Phantoms.TTerm (Maybe Grammar.BindingVariableDefinitionBlock) -> Phantoms.TTerm Grammar.ProcedureBody
procedureBodyWithBindings original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "atSchema"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
              Core.projectionField = (Core.Name "atSchema")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "bindings"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "statements"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
              Core.projectionField = (Core.Name "statements")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

procedureBodyWithStatements :: Phantoms.TTerm Grammar.ProcedureBody -> Phantoms.TTerm Grammar.StatementBlock -> Phantoms.TTerm Grammar.ProcedureBody
procedureBodyWithStatements original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "atSchema"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
              Core.projectionField = (Core.Name "atSchema")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "bindings"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ProcedureBody"),
              Core.projectionField = (Core.Name "bindings")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "statements"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

procedureCallInline :: Phantoms.TTerm Grammar.InlineProcedureCall -> Phantoms.TTerm Grammar.ProcedureCall
procedureCallInline x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ProcedureCall"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "inline"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

procedureCallNamed :: Phantoms.TTerm Grammar.NamedProcedureCall -> Phantoms.TTerm Grammar.ProcedureCall
procedureCallNamed x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ProcedureCall"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "named"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

procedureReferenceParameterSpecification :: Phantoms.TTerm Grammar.ReferenceParameterSpecification -> Phantoms.TTerm Grammar.ProcedureReference
procedureReferenceParameterSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ProcedureReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parameterSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

procedureReferenceParentAndProcedureName :: Phantoms.TTerm Grammar.CatalogProcedureParentAndName -> Phantoms.TTerm Grammar.ProcedureReference
procedureReferenceParentAndProcedureName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ProcedureReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parentAndProcedureName"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

programActivitySession :: Phantoms.TTerm Grammar.SessionActivity -> Phantoms.TTerm Grammar.ProgramActivity
programActivitySession x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ProgramActivity"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "session"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

programActivityTransaction :: Phantoms.TTerm Grammar.TransactionActivity -> Phantoms.TTerm Grammar.ProgramActivity
programActivityTransaction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ProgramActivity"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "transaction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

propertyExistsPredicate :: Phantoms.TTerm Grammar.ElementVariableReference -> Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm Grammar.PropertyExistsPredicate
propertyExistsPredicate elementVariableReference propertyName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyExistsPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "elementVariableReference"),
          Core.fieldTerm = (Phantoms.unTTerm elementVariableReference)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Phantoms.unTTerm propertyName)}]}))

propertyExistsPredicateElementVariableReference :: Phantoms.TTerm Grammar.PropertyExistsPredicate -> Phantoms.TTerm Grammar.ElementVariableReference
propertyExistsPredicateElementVariableReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyExistsPredicate"),
        Core.projectionField = (Core.Name "elementVariableReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

propertyExistsPredicatePropertyName :: Phantoms.TTerm Grammar.PropertyExistsPredicate -> Phantoms.TTerm Grammar.PropertyName
propertyExistsPredicatePropertyName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyExistsPredicate"),
        Core.projectionField = (Core.Name "propertyName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

propertyExistsPredicateWithElementVariableReference :: Phantoms.TTerm Grammar.PropertyExistsPredicate -> Phantoms.TTerm Grammar.ElementVariableReference -> Phantoms.TTerm Grammar.PropertyExistsPredicate
propertyExistsPredicateWithElementVariableReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyExistsPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "elementVariableReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyExistsPredicate"),
              Core.projectionField = (Core.Name "propertyName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

propertyExistsPredicateWithPropertyName :: Phantoms.TTerm Grammar.PropertyExistsPredicate -> Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm Grammar.PropertyExistsPredicate
propertyExistsPredicateWithPropertyName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyExistsPredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "elementVariableReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyExistsPredicate"),
              Core.projectionField = (Core.Name "elementVariableReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

propertyKeyValuePair :: Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.PropertyKeyValuePair
propertyKeyValuePair name value =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyKeyValuePair"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Phantoms.unTTerm name)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm value)}]}))

propertyKeyValuePairName :: Phantoms.TTerm Grammar.PropertyKeyValuePair -> Phantoms.TTerm Grammar.PropertyName
propertyKeyValuePairName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyKeyValuePair"),
        Core.projectionField = (Core.Name "name")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

propertyKeyValuePairValue :: Phantoms.TTerm Grammar.PropertyKeyValuePair -> Phantoms.TTerm Grammar.ValueExpression
propertyKeyValuePairValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyKeyValuePair"),
        Core.projectionField = (Core.Name "value")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

propertyKeyValuePairWithName :: Phantoms.TTerm Grammar.PropertyKeyValuePair -> Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm Grammar.PropertyKeyValuePair
propertyKeyValuePairWithName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyKeyValuePair"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyKeyValuePair"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

propertyKeyValuePairWithValue :: Phantoms.TTerm Grammar.PropertyKeyValuePair -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.PropertyKeyValuePair
propertyKeyValuePairWithValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyKeyValuePair"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyKeyValuePair"),
              Core.projectionField = (Core.Name "name")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

propertyReference :: Phantoms.TTerm Grammar.PrimaryValueExpression -> Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm Grammar.PropertyReference
propertyReference valueExpression propertyName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyReference"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Phantoms.unTTerm propertyName)}]}))

propertyReferencePropertyName :: Phantoms.TTerm Grammar.PropertyReference -> Phantoms.TTerm Grammar.PropertyName
propertyReferencePropertyName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyReference"),
        Core.projectionField = (Core.Name "propertyName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

propertyReferenceValueExpression :: Phantoms.TTerm Grammar.PropertyReference -> Phantoms.TTerm Grammar.PrimaryValueExpression
propertyReferenceValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyReference"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

propertyReferenceWithPropertyName :: Phantoms.TTerm Grammar.PropertyReference -> Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm Grammar.PropertyReference
propertyReferenceWithPropertyName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyReference"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyReference"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

propertyReferenceWithValueExpression :: Phantoms.TTerm Grammar.PropertyReference -> Phantoms.TTerm Grammar.PrimaryValueExpression -> Phantoms.TTerm Grammar.PropertyReference
propertyReferenceWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyReference"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyReference"),
              Core.projectionField = (Core.Name "propertyName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

propertyType :: Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.PropertyValueType -> Phantoms.TTerm Grammar.PropertyType
propertyType name typed valueType =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Phantoms.unTTerm name)},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm typed)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm valueType)}]}))

propertyTypeName :: Phantoms.TTerm Grammar.PropertyType -> Phantoms.TTerm Grammar.PropertyName
propertyTypeName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyType"),
        Core.projectionField = (Core.Name "name")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

propertyTypeTyped :: Phantoms.TTerm Grammar.PropertyType -> Phantoms.TTerm (Maybe Grammar.Typed)
propertyTypeTyped x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyType"),
        Core.projectionField = (Core.Name "typed")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

propertyTypeValueType :: Phantoms.TTerm Grammar.PropertyType -> Phantoms.TTerm Grammar.PropertyValueType
propertyTypeValueType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyType"),
        Core.projectionField = (Core.Name "valueType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

propertyTypeWithName :: Phantoms.TTerm Grammar.PropertyType -> Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm Grammar.PropertyType
propertyTypeWithName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyType"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyType"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

propertyTypeWithTyped :: Phantoms.TTerm Grammar.PropertyType -> Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.PropertyType
propertyTypeWithTyped original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyType"),
              Core.projectionField = (Core.Name "name")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyType"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

propertyTypeWithValueType :: Phantoms.TTerm Grammar.PropertyType -> Phantoms.TTerm Grammar.PropertyValueType -> Phantoms.TTerm Grammar.PropertyType
propertyTypeWithValueType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.PropertyType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyType"),
              Core.projectionField = (Core.Name "name")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.PropertyType"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

quantifiedPathPrimary :: Phantoms.TTerm Grammar.PathPrimary -> Phantoms.TTerm Grammar.GraphPatternQuantifier -> Phantoms.TTerm Grammar.QuantifiedPathPrimary
quantifiedPathPrimary primary quantifier =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.QuantifiedPathPrimary"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "primary"),
          Core.fieldTerm = (Phantoms.unTTerm primary)},
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Phantoms.unTTerm quantifier)}]}))

quantifiedPathPrimaryPrimary :: Phantoms.TTerm Grammar.QuantifiedPathPrimary -> Phantoms.TTerm Grammar.PathPrimary
quantifiedPathPrimaryPrimary x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.QuantifiedPathPrimary"),
        Core.projectionField = (Core.Name "primary")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

quantifiedPathPrimaryQuantifier :: Phantoms.TTerm Grammar.QuantifiedPathPrimary -> Phantoms.TTerm Grammar.GraphPatternQuantifier
quantifiedPathPrimaryQuantifier x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.QuantifiedPathPrimary"),
        Core.projectionField = (Core.Name "quantifier")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

quantifiedPathPrimaryWithPrimary :: Phantoms.TTerm Grammar.QuantifiedPathPrimary -> Phantoms.TTerm Grammar.PathPrimary -> Phantoms.TTerm Grammar.QuantifiedPathPrimary
quantifiedPathPrimaryWithPrimary original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.QuantifiedPathPrimary"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "primary"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.QuantifiedPathPrimary"),
              Core.projectionField = (Core.Name "quantifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

quantifiedPathPrimaryWithQuantifier :: Phantoms.TTerm Grammar.QuantifiedPathPrimary -> Phantoms.TTerm Grammar.GraphPatternQuantifier -> Phantoms.TTerm Grammar.QuantifiedPathPrimary
quantifiedPathPrimaryWithQuantifier original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.QuantifiedPathPrimary"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "primary"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.QuantifiedPathPrimary"),
              Core.projectionField = (Core.Name "primary")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

queryConjunctionOtherwise :: Phantoms.TTerm Grammar.QueryConjunction
queryConjunctionOtherwise =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.QueryConjunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "otherwise"),
        Core.fieldTerm = Core.TermUnit}}))

queryConjunctionSetOperator :: Phantoms.TTerm Grammar.SetOperator -> Phantoms.TTerm Grammar.QueryConjunction
queryConjunctionSetOperator x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.QueryConjunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "setOperator"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

realType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.RealType
realType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RealType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

realTypeNotNull :: Phantoms.TTerm Grammar.RealType -> Phantoms.TTerm Bool
realTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.RealType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

realTypeWithNotNull :: Phantoms.TTerm Grammar.RealType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.RealType
realTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RealType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

recordTypeAnyRecord :: Phantoms.TTerm Grammar.AnyRecordType -> Phantoms.TTerm Grammar.RecordType
recordTypeAnyRecord x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.RecordType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "anyRecord"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

recordTypeSpecifiedRecord :: Phantoms.TTerm Grammar.SpecifiedRecordType -> Phantoms.TTerm Grammar.RecordType
recordTypeSpecifiedRecord x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.RecordType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "specifiedRecord"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

referenceValueTypeBindingTable :: Phantoms.TTerm Grammar.BindingTableReferenceValueType -> Phantoms.TTerm Grammar.ReferenceValueType
referenceValueTypeBindingTable x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ReferenceValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "bindingTable"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

referenceValueTypeEdge :: Phantoms.TTerm Grammar.EdgeReferenceValueType -> Phantoms.TTerm Grammar.ReferenceValueType
referenceValueTypeEdge x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ReferenceValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "edge"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

referenceValueTypeGraph :: Phantoms.TTerm Grammar.GraphReferenceValueType -> Phantoms.TTerm Grammar.ReferenceValueType
referenceValueTypeGraph x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ReferenceValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "graph"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

referenceValueTypeNode :: Phantoms.TTerm Grammar.NodeReferenceValueType -> Phantoms.TTerm Grammar.ReferenceValueType
referenceValueTypeNode x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ReferenceValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "node"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

relativeCatalogSchemaReferenceDirectoryAndSchema :: Phantoms.TTerm Grammar.RelativeDirectoryAndSchema -> Phantoms.TTerm Grammar.RelativeCatalogSchemaReference
relativeCatalogSchemaReferenceDirectoryAndSchema x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.RelativeCatalogSchemaReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "directoryAndSchema"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

relativeCatalogSchemaReferencePredefinedReference :: Phantoms.TTerm Grammar.PredefinedSchemaReference -> Phantoms.TTerm Grammar.RelativeCatalogSchemaReference
relativeCatalogSchemaReferencePredefinedReference x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.RelativeCatalogSchemaReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "predefinedReference"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

relativeDirectoryAndSchema :: Phantoms.TTerm Grammar.RelativeDirectoryPath -> Phantoms.TTerm Grammar.SchemaName -> Phantoms.TTerm Grammar.RelativeDirectoryAndSchema
relativeDirectoryAndSchema directoryPath schemaName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RelativeDirectoryAndSchema"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "directoryPath"),
          Core.fieldTerm = (Phantoms.unTTerm directoryPath)},
        Core.Field {
          Core.fieldName = (Core.Name "schemaName"),
          Core.fieldTerm = (Phantoms.unTTerm schemaName)}]}))

relativeDirectoryAndSchemaDirectoryPath :: Phantoms.TTerm Grammar.RelativeDirectoryAndSchema -> Phantoms.TTerm Grammar.RelativeDirectoryPath
relativeDirectoryAndSchemaDirectoryPath x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.RelativeDirectoryAndSchema"),
        Core.projectionField = (Core.Name "directoryPath")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

relativeDirectoryAndSchemaSchemaName :: Phantoms.TTerm Grammar.RelativeDirectoryAndSchema -> Phantoms.TTerm Grammar.SchemaName
relativeDirectoryAndSchemaSchemaName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.RelativeDirectoryAndSchema"),
        Core.projectionField = (Core.Name "schemaName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

relativeDirectoryAndSchemaWithDirectoryPath :: Phantoms.TTerm Grammar.RelativeDirectoryAndSchema -> Phantoms.TTerm Grammar.RelativeDirectoryPath -> Phantoms.TTerm Grammar.RelativeDirectoryAndSchema
relativeDirectoryAndSchemaWithDirectoryPath original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RelativeDirectoryAndSchema"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "directoryPath"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "schemaName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RelativeDirectoryAndSchema"),
              Core.projectionField = (Core.Name "schemaName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

relativeDirectoryAndSchemaWithSchemaName :: Phantoms.TTerm Grammar.RelativeDirectoryAndSchema -> Phantoms.TTerm Grammar.SchemaName -> Phantoms.TTerm Grammar.RelativeDirectoryAndSchema
relativeDirectoryAndSchemaWithSchemaName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RelativeDirectoryAndSchema"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "directoryPath"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RelativeDirectoryAndSchema"),
              Core.projectionField = (Core.Name "directoryPath")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "schemaName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

relativeDirectoryPath :: Phantoms.TTerm Int -> Phantoms.TTerm (Maybe Grammar.SimpleDirectoryPath) -> Phantoms.TTerm Grammar.RelativeDirectoryPath
relativeDirectoryPath parentDirectories simplePath =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RelativeDirectoryPath"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentDirectories"),
          Core.fieldTerm = (Phantoms.unTTerm parentDirectories)},
        Core.Field {
          Core.fieldName = (Core.Name "simplePath"),
          Core.fieldTerm = (Phantoms.unTTerm simplePath)}]}))

relativeDirectoryPathParentDirectories :: Phantoms.TTerm Grammar.RelativeDirectoryPath -> Phantoms.TTerm Int
relativeDirectoryPathParentDirectories x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.RelativeDirectoryPath"),
        Core.projectionField = (Core.Name "parentDirectories")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

relativeDirectoryPathSimplePath :: Phantoms.TTerm Grammar.RelativeDirectoryPath -> Phantoms.TTerm (Maybe Grammar.SimpleDirectoryPath)
relativeDirectoryPathSimplePath x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.RelativeDirectoryPath"),
        Core.projectionField = (Core.Name "simplePath")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

relativeDirectoryPathWithParentDirectories :: Phantoms.TTerm Grammar.RelativeDirectoryPath -> Phantoms.TTerm Int -> Phantoms.TTerm Grammar.RelativeDirectoryPath
relativeDirectoryPathWithParentDirectories original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RelativeDirectoryPath"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentDirectories"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "simplePath"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RelativeDirectoryPath"),
              Core.projectionField = (Core.Name "simplePath")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

relativeDirectoryPathWithSimplePath :: Phantoms.TTerm Grammar.RelativeDirectoryPath -> Phantoms.TTerm (Maybe Grammar.SimpleDirectoryPath) -> Phantoms.TTerm Grammar.RelativeDirectoryPath
relativeDirectoryPathWithSimplePath original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RelativeDirectoryPath"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "parentDirectories"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RelativeDirectoryPath"),
              Core.projectionField = (Core.Name "parentDirectories")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "simplePath"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

removeItemLabel :: Phantoms.TTerm Grammar.RemoveLabelItem -> Phantoms.TTerm Grammar.RemoveItem
removeItemLabel x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.RemoveItem"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "label"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

removeItemProperty :: Phantoms.TTerm Grammar.RemovePropertyItem -> Phantoms.TTerm Grammar.RemoveItem
removeItemProperty x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.RemoveItem"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "property"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

removeLabelItem :: Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm Grammar.IsOrColon -> Phantoms.TTerm Grammar.LabelName -> Phantoms.TTerm Grammar.RemoveLabelItem
removeLabelItem variable isOrColon label =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm variable)},
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm isOrColon)},
        Core.Field {
          Core.fieldName = (Core.Name "label"),
          Core.fieldTerm = (Phantoms.unTTerm label)}]}))

removeLabelItemIsOrColon :: Phantoms.TTerm Grammar.RemoveLabelItem -> Phantoms.TTerm Grammar.IsOrColon
removeLabelItemIsOrColon x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
        Core.projectionField = (Core.Name "isOrColon")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

removeLabelItemLabel :: Phantoms.TTerm Grammar.RemoveLabelItem -> Phantoms.TTerm Grammar.LabelName
removeLabelItemLabel x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
        Core.projectionField = (Core.Name "label")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

removeLabelItemVariable :: Phantoms.TTerm Grammar.RemoveLabelItem -> Phantoms.TTerm Grammar.BindingVariableReference
removeLabelItemVariable x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
        Core.projectionField = (Core.Name "variable")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

removeLabelItemWithIsOrColon :: Phantoms.TTerm Grammar.RemoveLabelItem -> Phantoms.TTerm Grammar.IsOrColon -> Phantoms.TTerm Grammar.RemoveLabelItem
removeLabelItemWithIsOrColon original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "label"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
              Core.projectionField = (Core.Name "label")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

removeLabelItemWithLabel :: Phantoms.TTerm Grammar.RemoveLabelItem -> Phantoms.TTerm Grammar.LabelName -> Phantoms.TTerm Grammar.RemoveLabelItem
removeLabelItemWithLabel original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
              Core.projectionField = (Core.Name "isOrColon")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "label"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

removeLabelItemWithVariable :: Phantoms.TTerm Grammar.RemoveLabelItem -> Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm Grammar.RemoveLabelItem
removeLabelItemWithVariable original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
              Core.projectionField = (Core.Name "isOrColon")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "label"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RemoveLabelItem"),
              Core.projectionField = (Core.Name "label")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

removePropertyItem :: Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm Grammar.RemovePropertyItem
removePropertyItem variable propertyName =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RemovePropertyItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm variable)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Phantoms.unTTerm propertyName)}]}))

removePropertyItemPropertyName :: Phantoms.TTerm Grammar.RemovePropertyItem -> Phantoms.TTerm Grammar.PropertyName
removePropertyItemPropertyName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.RemovePropertyItem"),
        Core.projectionField = (Core.Name "propertyName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

removePropertyItemVariable :: Phantoms.TTerm Grammar.RemovePropertyItem -> Phantoms.TTerm Grammar.BindingVariableReference
removePropertyItemVariable x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.RemovePropertyItem"),
        Core.projectionField = (Core.Name "variable")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

removePropertyItemWithPropertyName :: Phantoms.TTerm Grammar.RemovePropertyItem -> Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm Grammar.RemovePropertyItem
removePropertyItemWithPropertyName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RemovePropertyItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RemovePropertyItem"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

removePropertyItemWithVariable :: Phantoms.TTerm Grammar.RemovePropertyItem -> Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm Grammar.RemovePropertyItem
removePropertyItemWithVariable original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.RemovePropertyItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.RemovePropertyItem"),
              Core.projectionField = (Core.Name "propertyName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

resultNullLiteral :: Phantoms.TTerm Grammar.Result
resultNullLiteral =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Result"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nullLiteral"),
        Core.fieldTerm = Core.TermUnit}}))

resultSimple :: Phantoms.TTerm Grammar.ResultExpression -> Phantoms.TTerm Grammar.Result
resultSimple x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Result"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "simple"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

returnAndOptionalOrderByAndPage :: Phantoms.TTerm Grammar.ReturnStatement -> Phantoms.TTerm (Maybe Grammar.OrderByAndPageStatement) -> Phantoms.TTerm Grammar.ReturnAndOptionalOrderByAndPage
returnAndOptionalOrderByAndPage return orderByAndPage =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ReturnAndOptionalOrderByAndPage"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "return"),
          Core.fieldTerm = (Phantoms.unTTerm return)},
        Core.Field {
          Core.fieldName = (Core.Name "orderByAndPage"),
          Core.fieldTerm = (Phantoms.unTTerm orderByAndPage)}]}))

returnAndOptionalOrderByAndPageOrderByAndPage :: Phantoms.TTerm Grammar.ReturnAndOptionalOrderByAndPage -> Phantoms.TTerm (Maybe Grammar.OrderByAndPageStatement)
returnAndOptionalOrderByAndPageOrderByAndPage x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnAndOptionalOrderByAndPage"),
        Core.projectionField = (Core.Name "orderByAndPage")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

returnAndOptionalOrderByAndPageReturn :: Phantoms.TTerm Grammar.ReturnAndOptionalOrderByAndPage -> Phantoms.TTerm Grammar.ReturnStatement
returnAndOptionalOrderByAndPageReturn x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnAndOptionalOrderByAndPage"),
        Core.projectionField = (Core.Name "return")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

returnAndOptionalOrderByAndPageWithOrderByAndPage :: Phantoms.TTerm Grammar.ReturnAndOptionalOrderByAndPage -> Phantoms.TTerm (Maybe Grammar.OrderByAndPageStatement) -> Phantoms.TTerm Grammar.ReturnAndOptionalOrderByAndPage
returnAndOptionalOrderByAndPageWithOrderByAndPage original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ReturnAndOptionalOrderByAndPage"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "return"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnAndOptionalOrderByAndPage"),
              Core.projectionField = (Core.Name "return")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orderByAndPage"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

returnAndOptionalOrderByAndPageWithReturn :: Phantoms.TTerm Grammar.ReturnAndOptionalOrderByAndPage -> Phantoms.TTerm Grammar.ReturnStatement -> Phantoms.TTerm Grammar.ReturnAndOptionalOrderByAndPage
returnAndOptionalOrderByAndPageWithReturn original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ReturnAndOptionalOrderByAndPage"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "return"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "orderByAndPage"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnAndOptionalOrderByAndPage"),
              Core.projectionField = (Core.Name "orderByAndPage")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

returnItem :: Phantoms.TTerm Grammar.AggregatingValueExpression -> Phantoms.TTerm (Maybe Grammar.ReturnItemAlias) -> Phantoms.TTerm Grammar.ReturnItem
returnItem expression alias =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ReturnItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Phantoms.unTTerm expression)},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm alias)}]}))

returnItemAlias :: Phantoms.TTerm Grammar.ReturnItem -> Phantoms.TTerm (Maybe Grammar.ReturnItemAlias)
returnItemAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItem"),
        Core.projectionField = (Core.Name "alias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

returnItemExpression :: Phantoms.TTerm Grammar.ReturnItem -> Phantoms.TTerm Grammar.AggregatingValueExpression
returnItemExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItem"),
        Core.projectionField = (Core.Name "expression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

returnItemWithAlias :: Phantoms.TTerm Grammar.ReturnItem -> Phantoms.TTerm (Maybe Grammar.ReturnItemAlias) -> Phantoms.TTerm Grammar.ReturnItem
returnItemWithAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ReturnItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItem"),
              Core.projectionField = (Core.Name "expression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

returnItemWithExpression :: Phantoms.TTerm Grammar.ReturnItem -> Phantoms.TTerm Grammar.AggregatingValueExpression -> Phantoms.TTerm Grammar.ReturnItem
returnItemWithExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ReturnItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItem"),
              Core.projectionField = (Core.Name "alias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

returnItemsAndGroupBy :: Phantoms.TTerm (Maybe Grammar.SetQuantifier) -> Phantoms.TTerm Grammar.ReturnItems -> Phantoms.TTerm (Maybe Grammar.GroupByClause) -> Phantoms.TTerm Grammar.ReturnItemsAndGroupBy
returnItemsAndGroupBy quantifier items groupBy =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Phantoms.unTTerm quantifier)},
        Core.Field {
          Core.fieldName = (Core.Name "items"),
          Core.fieldTerm = (Phantoms.unTTerm items)},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Phantoms.unTTerm groupBy)}]}))

returnItemsAndGroupByGroupBy :: Phantoms.TTerm Grammar.ReturnItemsAndGroupBy -> Phantoms.TTerm (Maybe Grammar.GroupByClause)
returnItemsAndGroupByGroupBy x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
        Core.projectionField = (Core.Name "groupBy")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

returnItemsAndGroupByItems :: Phantoms.TTerm Grammar.ReturnItemsAndGroupBy -> Phantoms.TTerm Grammar.ReturnItems
returnItemsAndGroupByItems x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
        Core.projectionField = (Core.Name "items")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

returnItemsAndGroupByQuantifier :: Phantoms.TTerm Grammar.ReturnItemsAndGroupBy -> Phantoms.TTerm (Maybe Grammar.SetQuantifier)
returnItemsAndGroupByQuantifier x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
        Core.projectionField = (Core.Name "quantifier")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

returnItemsAndGroupByWithGroupBy :: Phantoms.TTerm Grammar.ReturnItemsAndGroupBy -> Phantoms.TTerm (Maybe Grammar.GroupByClause) -> Phantoms.TTerm Grammar.ReturnItemsAndGroupBy
returnItemsAndGroupByWithGroupBy original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
              Core.projectionField = (Core.Name "quantifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "items"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
              Core.projectionField = (Core.Name "items")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

returnItemsAndGroupByWithItems :: Phantoms.TTerm Grammar.ReturnItemsAndGroupBy -> Phantoms.TTerm Grammar.ReturnItems -> Phantoms.TTerm Grammar.ReturnItemsAndGroupBy
returnItemsAndGroupByWithItems original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
              Core.projectionField = (Core.Name "quantifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "items"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
              Core.projectionField = (Core.Name "groupBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

returnItemsAndGroupByWithQuantifier :: Phantoms.TTerm Grammar.ReturnItemsAndGroupBy -> Phantoms.TTerm (Maybe Grammar.SetQuantifier) -> Phantoms.TTerm Grammar.ReturnItemsAndGroupBy
returnItemsAndGroupByWithQuantifier original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "items"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
              Core.projectionField = (Core.Name "items")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ReturnItemsAndGroupBy"),
              Core.projectionField = (Core.Name "groupBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

returnItemsAsterisk :: Phantoms.TTerm Grammar.ReturnItems
returnItemsAsterisk =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ReturnItems"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "asterisk"),
        Core.fieldTerm = Core.TermUnit}}))

returnItemsItemList :: Phantoms.TTerm Grammar.ReturnItemList -> Phantoms.TTerm Grammar.ReturnItems
returnItemsItemList x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ReturnItems"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "itemList"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

returnStatementBodyItems :: Phantoms.TTerm Grammar.ReturnItemsAndGroupBy -> Phantoms.TTerm Grammar.ReturnStatementBody
returnStatementBodyItems x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ReturnStatementBody"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "items"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

returnStatementBodyNoBindings :: Phantoms.TTerm Grammar.ReturnStatementBody
returnStatementBodyNoBindings =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ReturnStatementBody"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "noBindings"),
        Core.fieldTerm = Core.TermUnit}}))

samePredicate :: Phantoms.TTerm [Grammar.ElementVariableReference] -> Phantoms.TTerm Grammar.SamePredicate
samePredicate references =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SamePredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "references"),
          Core.fieldTerm = (Phantoms.unTTerm references)}]}))

samePredicateReferences :: Phantoms.TTerm Grammar.SamePredicate -> Phantoms.TTerm [Grammar.ElementVariableReference]
samePredicateReferences x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SamePredicate"),
        Core.projectionField = (Core.Name "references")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

samePredicateWithReferences :: Phantoms.TTerm Grammar.SamePredicate -> Phantoms.TTerm [Grammar.ElementVariableReference] -> Phantoms.TTerm Grammar.SamePredicate
samePredicateWithReferences original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SamePredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "references"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

schemaAndObjects :: Phantoms.TTerm Grammar.SchemaReference -> Phantoms.TTerm [Grammar.ObjectName] -> Phantoms.TTerm Grammar.SchemaAndObjects
schemaAndObjects schemaReference objects =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SchemaAndObjects"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "schemaReference"),
          Core.fieldTerm = (Phantoms.unTTerm schemaReference)},
        Core.Field {
          Core.fieldName = (Core.Name "objects"),
          Core.fieldTerm = (Phantoms.unTTerm objects)}]}))

schemaAndObjectsObjects :: Phantoms.TTerm Grammar.SchemaAndObjects -> Phantoms.TTerm [Grammar.ObjectName]
schemaAndObjectsObjects x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SchemaAndObjects"),
        Core.projectionField = (Core.Name "objects")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

schemaAndObjectsSchemaReference :: Phantoms.TTerm Grammar.SchemaAndObjects -> Phantoms.TTerm Grammar.SchemaReference
schemaAndObjectsSchemaReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SchemaAndObjects"),
        Core.projectionField = (Core.Name "schemaReference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

schemaAndObjectsWithObjects :: Phantoms.TTerm Grammar.SchemaAndObjects -> Phantoms.TTerm [Grammar.ObjectName] -> Phantoms.TTerm Grammar.SchemaAndObjects
schemaAndObjectsWithObjects original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SchemaAndObjects"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "schemaReference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SchemaAndObjects"),
              Core.projectionField = (Core.Name "schemaReference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "objects"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

schemaAndObjectsWithSchemaReference :: Phantoms.TTerm Grammar.SchemaAndObjects -> Phantoms.TTerm Grammar.SchemaReference -> Phantoms.TTerm Grammar.SchemaAndObjects
schemaAndObjectsWithSchemaReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SchemaAndObjects"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "schemaReference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "objects"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SchemaAndObjects"),
              Core.projectionField = (Core.Name "objects")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

schemaReferenceAbsoluteReference :: Phantoms.TTerm Grammar.AbsoluteCatalogSchemaReference -> Phantoms.TTerm Grammar.SchemaReference
schemaReferenceAbsoluteReference x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SchemaReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "absoluteReference"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

schemaReferenceParameterSpecification :: Phantoms.TTerm Grammar.ReferenceParameterSpecification -> Phantoms.TTerm Grammar.SchemaReference
schemaReferenceParameterSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SchemaReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parameterSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

schemaReferenceRelativeReference :: Phantoms.TTerm Grammar.RelativeCatalogSchemaReference -> Phantoms.TTerm Grammar.SchemaReference
schemaReferenceRelativeReference x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SchemaReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "relativeReference"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

searchedCase :: Phantoms.TTerm [Grammar.SearchedWhenClause] -> Phantoms.TTerm (Maybe Grammar.ElseClause) -> Phantoms.TTerm Grammar.SearchedCase
searchedCase whenClauses elseClause =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SearchedCase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "whenClauses"),
          Core.fieldTerm = (Phantoms.unTTerm whenClauses)},
        Core.Field {
          Core.fieldName = (Core.Name "elseClause"),
          Core.fieldTerm = (Phantoms.unTTerm elseClause)}]}))

searchedCaseElseClause :: Phantoms.TTerm Grammar.SearchedCase -> Phantoms.TTerm (Maybe Grammar.ElseClause)
searchedCaseElseClause x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SearchedCase"),
        Core.projectionField = (Core.Name "elseClause")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

searchedCaseWhenClauses :: Phantoms.TTerm Grammar.SearchedCase -> Phantoms.TTerm [Grammar.SearchedWhenClause]
searchedCaseWhenClauses x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SearchedCase"),
        Core.projectionField = (Core.Name "whenClauses")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

searchedCaseWithElseClause :: Phantoms.TTerm Grammar.SearchedCase -> Phantoms.TTerm (Maybe Grammar.ElseClause) -> Phantoms.TTerm Grammar.SearchedCase
searchedCaseWithElseClause original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SearchedCase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "whenClauses"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SearchedCase"),
              Core.projectionField = (Core.Name "whenClauses")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "elseClause"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

searchedCaseWithWhenClauses :: Phantoms.TTerm Grammar.SearchedCase -> Phantoms.TTerm [Grammar.SearchedWhenClause] -> Phantoms.TTerm Grammar.SearchedCase
searchedCaseWithWhenClauses original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SearchedCase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "whenClauses"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "elseClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SearchedCase"),
              Core.projectionField = (Core.Name "elseClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

searchedWhenClause :: Phantoms.TTerm Grammar.SearchCondition -> Phantoms.TTerm Grammar.Result -> Phantoms.TTerm Grammar.SearchedWhenClause
searchedWhenClause searchCondition result =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SearchedWhenClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "searchCondition"),
          Core.fieldTerm = (Phantoms.unTTerm searchCondition)},
        Core.Field {
          Core.fieldName = (Core.Name "result"),
          Core.fieldTerm = (Phantoms.unTTerm result)}]}))

searchedWhenClauseResult :: Phantoms.TTerm Grammar.SearchedWhenClause -> Phantoms.TTerm Grammar.Result
searchedWhenClauseResult x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SearchedWhenClause"),
        Core.projectionField = (Core.Name "result")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

searchedWhenClauseSearchCondition :: Phantoms.TTerm Grammar.SearchedWhenClause -> Phantoms.TTerm Grammar.SearchCondition
searchedWhenClauseSearchCondition x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SearchedWhenClause"),
        Core.projectionField = (Core.Name "searchCondition")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

searchedWhenClauseWithResult :: Phantoms.TTerm Grammar.SearchedWhenClause -> Phantoms.TTerm Grammar.Result -> Phantoms.TTerm Grammar.SearchedWhenClause
searchedWhenClauseWithResult original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SearchedWhenClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "searchCondition"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SearchedWhenClause"),
              Core.projectionField = (Core.Name "searchCondition")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "result"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

searchedWhenClauseWithSearchCondition :: Phantoms.TTerm Grammar.SearchedWhenClause -> Phantoms.TTerm Grammar.SearchCondition -> Phantoms.TTerm Grammar.SearchedWhenClause
searchedWhenClauseWithSearchCondition original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SearchedWhenClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "searchCondition"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "result"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SearchedWhenClause"),
              Core.projectionField = (Core.Name "result")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

selectGraphMatch :: Phantoms.TTerm Grammar.GraphExpression -> Phantoms.TTerm Grammar.MatchStatement -> Phantoms.TTerm Grammar.SelectGraphMatch
selectGraphMatch graphExpression matchStatement =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectGraphMatch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "graphExpression"),
          Core.fieldTerm = (Phantoms.unTTerm graphExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "matchStatement"),
          Core.fieldTerm = (Phantoms.unTTerm matchStatement)}]}))

selectGraphMatchGraphExpression :: Phantoms.TTerm Grammar.SelectGraphMatch -> Phantoms.TTerm Grammar.GraphExpression
selectGraphMatchGraphExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectGraphMatch"),
        Core.projectionField = (Core.Name "graphExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectGraphMatchMatchStatement :: Phantoms.TTerm Grammar.SelectGraphMatch -> Phantoms.TTerm Grammar.MatchStatement
selectGraphMatchMatchStatement x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectGraphMatch"),
        Core.projectionField = (Core.Name "matchStatement")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectGraphMatchWithGraphExpression :: Phantoms.TTerm Grammar.SelectGraphMatch -> Phantoms.TTerm Grammar.GraphExpression -> Phantoms.TTerm Grammar.SelectGraphMatch
selectGraphMatchWithGraphExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectGraphMatch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "graphExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "matchStatement"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectGraphMatch"),
              Core.projectionField = (Core.Name "matchStatement")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

selectGraphMatchWithMatchStatement :: Phantoms.TTerm Grammar.SelectGraphMatch -> Phantoms.TTerm Grammar.MatchStatement -> Phantoms.TTerm Grammar.SelectGraphMatch
selectGraphMatchWithMatchStatement original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectGraphMatch"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "graphExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectGraphMatch"),
              Core.projectionField = (Core.Name "graphExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "matchStatement"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

selectItem :: Phantoms.TTerm Grammar.AggregatingValueExpression -> Phantoms.TTerm (Maybe Grammar.SelectItemAlias) -> Phantoms.TTerm Grammar.SelectItem
selectItem expression alias =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Phantoms.unTTerm expression)},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm alias)}]}))

selectItemAlias :: Phantoms.TTerm Grammar.SelectItem -> Phantoms.TTerm (Maybe Grammar.SelectItemAlias)
selectItemAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectItem"),
        Core.projectionField = (Core.Name "alias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectItemExpression :: Phantoms.TTerm Grammar.SelectItem -> Phantoms.TTerm Grammar.AggregatingValueExpression
selectItemExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectItem"),
        Core.projectionField = (Core.Name "expression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectItemWithAlias :: Phantoms.TTerm Grammar.SelectItem -> Phantoms.TTerm (Maybe Grammar.SelectItemAlias) -> Phantoms.TTerm Grammar.SelectItem
selectItemWithAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectItem"),
              Core.projectionField = (Core.Name "expression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

selectItemWithExpression :: Phantoms.TTerm Grammar.SelectItem -> Phantoms.TTerm Grammar.AggregatingValueExpression -> Phantoms.TTerm Grammar.SelectItem
selectItemWithExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectItem"),
              Core.projectionField = (Core.Name "alias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

selectItemsAsterisk :: Phantoms.TTerm Grammar.SelectItems
selectItemsAsterisk =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SelectItems"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "asterisk"),
        Core.fieldTerm = Core.TermUnit}}))

selectItemsItemList :: Phantoms.TTerm Grammar.SelectItemList -> Phantoms.TTerm Grammar.SelectItems
selectItemsItemList x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SelectItems"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "itemList"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

selectQuerySpecificationGraphAndNested :: Phantoms.TTerm Grammar.GraphAndNestedQuerySpecification -> Phantoms.TTerm Grammar.SelectQuerySpecification
selectQuerySpecificationGraphAndNested x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SelectQuerySpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "graphAndNested"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

selectQuerySpecificationNested :: Phantoms.TTerm Grammar.NestedQuerySpecification -> Phantoms.TTerm Grammar.SelectQuerySpecification
selectQuerySpecificationNested x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SelectQuerySpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nested"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

selectStatement :: Phantoms.TTerm (Maybe Grammar.SetQuantifier) -> Phantoms.TTerm Grammar.SelectItems -> Phantoms.TTerm (Maybe Grammar.SelectStatementBodyAndClauses) -> Phantoms.TTerm Grammar.SelectStatement
selectStatement quantifier items body =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Phantoms.unTTerm quantifier)},
        Core.Field {
          Core.fieldName = (Core.Name "items"),
          Core.fieldTerm = (Phantoms.unTTerm items)},
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Phantoms.unTTerm body)}]}))

selectStatementBody :: Phantoms.TTerm Grammar.SelectStatement -> Phantoms.TTerm (Maybe Grammar.SelectStatementBodyAndClauses)
selectStatementBody x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatement"),
        Core.projectionField = (Core.Name "body")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectStatementBodyAndClauses :: Phantoms.TTerm Grammar.SelectStatementBody -> Phantoms.TTerm (Maybe Grammar.WhereClause) -> Phantoms.TTerm (Maybe Grammar.GroupByClause) -> Phantoms.TTerm (Maybe Grammar.HavingClause) -> Phantoms.TTerm (Maybe Grammar.OrderByClause) -> Phantoms.TTerm (Maybe Grammar.OffsetClause) -> Phantoms.TTerm (Maybe Grammar.LimitClause) -> Phantoms.TTerm Grammar.SelectStatementBodyAndClauses
selectStatementBodyAndClauses body where_ groupBy having orderBy offset limit =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Phantoms.unTTerm body)},
        Core.Field {
          Core.fieldName = (Core.Name "where"),
          Core.fieldTerm = (Phantoms.unTTerm where_)},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Phantoms.unTTerm groupBy)},
        Core.Field {
          Core.fieldName = (Core.Name "having"),
          Core.fieldTerm = (Phantoms.unTTerm having)},
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Phantoms.unTTerm orderBy)},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Phantoms.unTTerm offset)},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Phantoms.unTTerm limit)}]}))

selectStatementBodyAndClausesBody :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm Grammar.SelectStatementBody
selectStatementBodyAndClausesBody x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
        Core.projectionField = (Core.Name "body")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectStatementBodyAndClausesGroupBy :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.GroupByClause)
selectStatementBodyAndClausesGroupBy x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
        Core.projectionField = (Core.Name "groupBy")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectStatementBodyAndClausesHaving :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.HavingClause)
selectStatementBodyAndClausesHaving x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
        Core.projectionField = (Core.Name "having")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectStatementBodyAndClausesLimit :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.LimitClause)
selectStatementBodyAndClausesLimit x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
        Core.projectionField = (Core.Name "limit")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectStatementBodyAndClausesOffset :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.OffsetClause)
selectStatementBodyAndClausesOffset x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
        Core.projectionField = (Core.Name "offset")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectStatementBodyAndClausesOrderBy :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.OrderByClause)
selectStatementBodyAndClausesOrderBy x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
        Core.projectionField = (Core.Name "orderBy")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectStatementBodyAndClausesWhere :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.WhereClause)
selectStatementBodyAndClausesWhere x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
        Core.projectionField = (Core.Name "where")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectStatementBodyAndClausesWithBody :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm Grammar.SelectStatementBody -> Phantoms.TTerm Grammar.SelectStatementBodyAndClauses
selectStatementBodyAndClausesWithBody original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "where"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "where")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "groupBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "having"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "having")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "orderBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "offset")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "limit")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

selectStatementBodyAndClausesWithGroupBy :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.GroupByClause) -> Phantoms.TTerm Grammar.SelectStatementBodyAndClauses
selectStatementBodyAndClausesWithGroupBy original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "body")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "where"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "where")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "having"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "having")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "orderBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "offset")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "limit")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

selectStatementBodyAndClausesWithHaving :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.HavingClause) -> Phantoms.TTerm Grammar.SelectStatementBodyAndClauses
selectStatementBodyAndClausesWithHaving original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "body")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "where"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "where")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "groupBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "having"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "orderBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "offset")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "limit")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

selectStatementBodyAndClausesWithLimit :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.LimitClause) -> Phantoms.TTerm Grammar.SelectStatementBodyAndClauses
selectStatementBodyAndClausesWithLimit original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "body")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "where"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "where")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "groupBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "having"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "having")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "orderBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "offset")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

selectStatementBodyAndClausesWithOffset :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.OffsetClause) -> Phantoms.TTerm Grammar.SelectStatementBodyAndClauses
selectStatementBodyAndClausesWithOffset original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "body")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "where"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "where")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "groupBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "having"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "having")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "orderBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "limit")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

selectStatementBodyAndClausesWithOrderBy :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.OrderByClause) -> Phantoms.TTerm Grammar.SelectStatementBodyAndClauses
selectStatementBodyAndClausesWithOrderBy original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "body")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "where"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "where")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "groupBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "having"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "having")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "offset")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "limit")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

selectStatementBodyAndClausesWithWhere :: Phantoms.TTerm Grammar.SelectStatementBodyAndClauses -> Phantoms.TTerm (Maybe Grammar.WhereClause) -> Phantoms.TTerm Grammar.SelectStatementBodyAndClauses
selectStatementBodyAndClausesWithWhere original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "body")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "where"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "groupBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "groupBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "having"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "having")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "orderBy"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "orderBy")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "offset"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "offset")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "limit"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatementBodyAndClauses"),
              Core.projectionField = (Core.Name "limit")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

selectStatementBodyGraphMatchList :: Phantoms.TTerm Grammar.SelectGraphMatchList -> Phantoms.TTerm Grammar.SelectStatementBody
selectStatementBodyGraphMatchList x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SelectStatementBody"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "graphMatchList"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

selectStatementBodyQuerySpecification :: Phantoms.TTerm Grammar.SelectQuerySpecification -> Phantoms.TTerm Grammar.SelectStatementBody
selectStatementBodyQuerySpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SelectStatementBody"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "querySpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

selectStatementItems :: Phantoms.TTerm Grammar.SelectStatement -> Phantoms.TTerm Grammar.SelectItems
selectStatementItems x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatement"),
        Core.projectionField = (Core.Name "items")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectStatementQuantifier :: Phantoms.TTerm Grammar.SelectStatement -> Phantoms.TTerm (Maybe Grammar.SetQuantifier)
selectStatementQuantifier x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatement"),
        Core.projectionField = (Core.Name "quantifier")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

selectStatementWithBody :: Phantoms.TTerm Grammar.SelectStatement -> Phantoms.TTerm (Maybe Grammar.SelectStatementBodyAndClauses) -> Phantoms.TTerm Grammar.SelectStatement
selectStatementWithBody original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatement"),
              Core.projectionField = (Core.Name "quantifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "items"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatement"),
              Core.projectionField = (Core.Name "items")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

selectStatementWithItems :: Phantoms.TTerm Grammar.SelectStatement -> Phantoms.TTerm Grammar.SelectItems -> Phantoms.TTerm Grammar.SelectStatement
selectStatementWithItems original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatement"),
              Core.projectionField = (Core.Name "quantifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "items"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatement"),
              Core.projectionField = (Core.Name "body")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

selectStatementWithQuantifier :: Phantoms.TTerm Grammar.SelectStatement -> Phantoms.TTerm (Maybe Grammar.SetQuantifier) -> Phantoms.TTerm Grammar.SelectStatement
selectStatementWithQuantifier original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SelectStatement"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "items"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatement"),
              Core.projectionField = (Core.Name "items")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "body"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SelectStatement"),
              Core.projectionField = (Core.Name "body")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

sessionActivityReset :: Phantoms.TTerm [Grammar.SessionResetCommand] -> Phantoms.TTerm Grammar.SessionActivity
sessionActivityReset x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionActivity"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "reset"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sessionActivitySetAndResetCommands :: Phantoms.TTerm Grammar.SessionSetAndResetCommands -> Phantoms.TTerm Grammar.SessionActivity
sessionActivitySetAndResetCommands x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionActivity"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "setAndResetCommands"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sessionResetArgumentsGraph :: Phantoms.TTerm Grammar.SessionResetArguments
sessionResetArgumentsGraph =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionResetArguments"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "graph"),
        Core.fieldTerm = Core.TermUnit}}))

sessionResetArgumentsParameterSessionSpecification :: Phantoms.TTerm Grammar.ParameterSessionSpecification -> Phantoms.TTerm Grammar.SessionResetArguments
sessionResetArgumentsParameterSessionSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionResetArguments"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parameterSessionSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sessionResetArgumentsParametersOrCharacteristics :: Phantoms.TTerm Grammar.AllParametersOrCharacteristics -> Phantoms.TTerm Grammar.SessionResetArguments
sessionResetArgumentsParametersOrCharacteristics x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionResetArguments"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parametersOrCharacteristics"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sessionResetArgumentsSchema :: Phantoms.TTerm Grammar.SessionResetArguments
sessionResetArgumentsSchema =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionResetArguments"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "schema"),
        Core.fieldTerm = Core.TermUnit}}))

sessionResetArgumentsTimeZone :: Phantoms.TTerm Grammar.SessionResetArguments
sessionResetArgumentsTimeZone =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionResetArguments"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "timeZone"),
        Core.fieldTerm = Core.TermUnit}}))

sessionSetAndResetCommands :: Phantoms.TTerm [Grammar.SessionSetCommand] -> Phantoms.TTerm [Grammar.SessionResetCommand] -> Phantoms.TTerm Grammar.SessionSetAndResetCommands
sessionSetAndResetCommands set reset =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetAndResetCommands"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "set"),
          Core.fieldTerm = (Phantoms.unTTerm set)},
        Core.Field {
          Core.fieldName = (Core.Name "reset"),
          Core.fieldTerm = (Phantoms.unTTerm reset)}]}))

sessionSetAndResetCommandsReset :: Phantoms.TTerm Grammar.SessionSetAndResetCommands -> Phantoms.TTerm [Grammar.SessionResetCommand]
sessionSetAndResetCommandsReset x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetAndResetCommands"),
        Core.projectionField = (Core.Name "reset")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sessionSetAndResetCommandsSet :: Phantoms.TTerm Grammar.SessionSetAndResetCommands -> Phantoms.TTerm [Grammar.SessionSetCommand]
sessionSetAndResetCommandsSet x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetAndResetCommands"),
        Core.projectionField = (Core.Name "set")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sessionSetAndResetCommandsWithReset :: Phantoms.TTerm Grammar.SessionSetAndResetCommands -> Phantoms.TTerm [Grammar.SessionResetCommand] -> Phantoms.TTerm Grammar.SessionSetAndResetCommands
sessionSetAndResetCommandsWithReset original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetAndResetCommands"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "set"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetAndResetCommands"),
              Core.projectionField = (Core.Name "set")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "reset"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

sessionSetAndResetCommandsWithSet :: Phantoms.TTerm Grammar.SessionSetAndResetCommands -> Phantoms.TTerm [Grammar.SessionSetCommand] -> Phantoms.TTerm Grammar.SessionSetAndResetCommands
sessionSetAndResetCommandsWithSet original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetAndResetCommands"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "set"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "reset"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetAndResetCommands"),
              Core.projectionField = (Core.Name "reset")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

sessionSetBindingTableParameterClause :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SessionSetParameterName -> Phantoms.TTerm Grammar.OptTypedBindingTableInitializer -> Phantoms.TTerm Grammar.SessionSetBindingTableParameterClause
sessionSetBindingTableParameterClause binding param init =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Phantoms.unTTerm binding)},
        Core.Field {
          Core.fieldName = (Core.Name "param"),
          Core.fieldTerm = (Phantoms.unTTerm param)},
        Core.Field {
          Core.fieldName = (Core.Name "init"),
          Core.fieldTerm = (Phantoms.unTTerm init)}]}))

sessionSetBindingTableParameterClauseBinding :: Phantoms.TTerm Grammar.SessionSetBindingTableParameterClause -> Phantoms.TTerm Bool
sessionSetBindingTableParameterClauseBinding x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
        Core.projectionField = (Core.Name "binding")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sessionSetBindingTableParameterClauseInit :: Phantoms.TTerm Grammar.SessionSetBindingTableParameterClause -> Phantoms.TTerm Grammar.OptTypedBindingTableInitializer
sessionSetBindingTableParameterClauseInit x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
        Core.projectionField = (Core.Name "init")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sessionSetBindingTableParameterClauseParam :: Phantoms.TTerm Grammar.SessionSetBindingTableParameterClause -> Phantoms.TTerm Grammar.SessionSetParameterName
sessionSetBindingTableParameterClauseParam x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
        Core.projectionField = (Core.Name "param")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sessionSetBindingTableParameterClauseWithBinding :: Phantoms.TTerm Grammar.SessionSetBindingTableParameterClause -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SessionSetBindingTableParameterClause
sessionSetBindingTableParameterClauseWithBinding original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "param"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
              Core.projectionField = (Core.Name "param")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "init"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
              Core.projectionField = (Core.Name "init")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

sessionSetBindingTableParameterClauseWithInit :: Phantoms.TTerm Grammar.SessionSetBindingTableParameterClause -> Phantoms.TTerm Grammar.OptTypedBindingTableInitializer -> Phantoms.TTerm Grammar.SessionSetBindingTableParameterClause
sessionSetBindingTableParameterClauseWithInit original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
              Core.projectionField = (Core.Name "binding")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "param"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
              Core.projectionField = (Core.Name "param")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "init"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

sessionSetBindingTableParameterClauseWithParam :: Phantoms.TTerm Grammar.SessionSetBindingTableParameterClause -> Phantoms.TTerm Grammar.SessionSetParameterName -> Phantoms.TTerm Grammar.SessionSetBindingTableParameterClause
sessionSetBindingTableParameterClauseWithParam original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "binding"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
              Core.projectionField = (Core.Name "binding")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "param"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "init"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"),
              Core.projectionField = (Core.Name "init")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

sessionSetCommandGraph :: Phantoms.TTerm Grammar.SessionSetGraphClause -> Phantoms.TTerm Grammar.SessionSetCommand
sessionSetCommandGraph x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionSetCommand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "graph"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sessionSetCommandParameter :: Phantoms.TTerm Grammar.SessionSetParameterClause -> Phantoms.TTerm Grammar.SessionSetCommand
sessionSetCommandParameter x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionSetCommand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parameter"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sessionSetCommandSchema :: Phantoms.TTerm Grammar.SessionSetSchemaClause -> Phantoms.TTerm Grammar.SessionSetCommand
sessionSetCommandSchema x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionSetCommand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "schema"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sessionSetCommandTimeZone :: Phantoms.TTerm Grammar.SessionSetTimeZoneClause -> Phantoms.TTerm Grammar.SessionSetCommand
sessionSetCommandTimeZone x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionSetCommand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "timeZone"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sessionSetGraphParameterClause :: Phantoms.TTerm Grammar.SessionSetParameterName -> Phantoms.TTerm Grammar.OptTypedGraphInitializer -> Phantoms.TTerm Grammar.SessionSetGraphParameterClause
sessionSetGraphParameterClause graph initializer =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetGraphParameterClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "graph"),
          Core.fieldTerm = (Phantoms.unTTerm graph)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm initializer)}]}))

sessionSetGraphParameterClauseGraph :: Phantoms.TTerm Grammar.SessionSetGraphParameterClause -> Phantoms.TTerm Grammar.SessionSetParameterName
sessionSetGraphParameterClauseGraph x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetGraphParameterClause"),
        Core.projectionField = (Core.Name "graph")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sessionSetGraphParameterClauseInitializer :: Phantoms.TTerm Grammar.SessionSetGraphParameterClause -> Phantoms.TTerm Grammar.OptTypedGraphInitializer
sessionSetGraphParameterClauseInitializer x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetGraphParameterClause"),
        Core.projectionField = (Core.Name "initializer")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sessionSetGraphParameterClauseWithGraph :: Phantoms.TTerm Grammar.SessionSetGraphParameterClause -> Phantoms.TTerm Grammar.SessionSetParameterName -> Phantoms.TTerm Grammar.SessionSetGraphParameterClause
sessionSetGraphParameterClauseWithGraph original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetGraphParameterClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "graph"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetGraphParameterClause"),
              Core.projectionField = (Core.Name "initializer")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

sessionSetGraphParameterClauseWithInitializer :: Phantoms.TTerm Grammar.SessionSetGraphParameterClause -> Phantoms.TTerm Grammar.OptTypedGraphInitializer -> Phantoms.TTerm Grammar.SessionSetGraphParameterClause
sessionSetGraphParameterClauseWithInitializer original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetGraphParameterClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "graph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetGraphParameterClause"),
              Core.projectionField = (Core.Name "graph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

sessionSetParameterClauseBindings :: Phantoms.TTerm Grammar.SessionSetBindingTableParameterClause -> Phantoms.TTerm Grammar.SessionSetParameterClause
sessionSetParameterClauseBindings x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionSetParameterClause"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "bindings"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sessionSetParameterClauseGraph :: Phantoms.TTerm Grammar.SessionSetGraphParameterClause -> Phantoms.TTerm Grammar.SessionSetParameterClause
sessionSetParameterClauseGraph x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionSetParameterClause"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "graph"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sessionSetParameterClauseValue :: Phantoms.TTerm Grammar.SessionSetValueParameterClause -> Phantoms.TTerm Grammar.SessionSetParameterClause
sessionSetParameterClauseValue x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SessionSetParameterClause"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "value"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sessionSetParameterName :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SessionParameterSpecification -> Phantoms.TTerm Grammar.SessionSetParameterName
sessionSetParameterName ifNotExists parameter =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetParameterName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifNotExists"),
          Core.fieldTerm = (Phantoms.unTTerm ifNotExists)},
        Core.Field {
          Core.fieldName = (Core.Name "parameter"),
          Core.fieldTerm = (Phantoms.unTTerm parameter)}]}))

sessionSetParameterNameIfNotExists :: Phantoms.TTerm Grammar.SessionSetParameterName -> Phantoms.TTerm Bool
sessionSetParameterNameIfNotExists x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetParameterName"),
        Core.projectionField = (Core.Name "ifNotExists")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sessionSetParameterNameParameter :: Phantoms.TTerm Grammar.SessionSetParameterName -> Phantoms.TTerm Grammar.SessionParameterSpecification
sessionSetParameterNameParameter x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetParameterName"),
        Core.projectionField = (Core.Name "parameter")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sessionSetParameterNameWithIfNotExists :: Phantoms.TTerm Grammar.SessionSetParameterName -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SessionSetParameterName
sessionSetParameterNameWithIfNotExists original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetParameterName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifNotExists"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "parameter"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetParameterName"),
              Core.projectionField = (Core.Name "parameter")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

sessionSetParameterNameWithParameter :: Phantoms.TTerm Grammar.SessionSetParameterName -> Phantoms.TTerm Grammar.SessionParameterSpecification -> Phantoms.TTerm Grammar.SessionSetParameterName
sessionSetParameterNameWithParameter original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetParameterName"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "ifNotExists"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetParameterName"),
              Core.projectionField = (Core.Name "ifNotExists")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "parameter"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

sessionSetValueParameterClause :: Phantoms.TTerm Grammar.SessionSetParameterName -> Phantoms.TTerm Grammar.OptTypedValueInitializer -> Phantoms.TTerm Grammar.SessionSetValueParameterClause
sessionSetValueParameterClause value initializer =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetValueParameterClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm value)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm initializer)}]}))

sessionSetValueParameterClauseInitializer :: Phantoms.TTerm Grammar.SessionSetValueParameterClause -> Phantoms.TTerm Grammar.OptTypedValueInitializer
sessionSetValueParameterClauseInitializer x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetValueParameterClause"),
        Core.projectionField = (Core.Name "initializer")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sessionSetValueParameterClauseValue :: Phantoms.TTerm Grammar.SessionSetValueParameterClause -> Phantoms.TTerm Grammar.SessionSetParameterName
sessionSetValueParameterClauseValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetValueParameterClause"),
        Core.projectionField = (Core.Name "value")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sessionSetValueParameterClauseWithInitializer :: Phantoms.TTerm Grammar.SessionSetValueParameterClause -> Phantoms.TTerm Grammar.OptTypedValueInitializer -> Phantoms.TTerm Grammar.SessionSetValueParameterClause
sessionSetValueParameterClauseWithInitializer original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetValueParameterClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetValueParameterClause"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

sessionSetValueParameterClauseWithValue :: Phantoms.TTerm Grammar.SessionSetValueParameterClause -> Phantoms.TTerm Grammar.SessionSetParameterName -> Phantoms.TTerm Grammar.SessionSetValueParameterClause
sessionSetValueParameterClauseWithValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SessionSetValueParameterClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SessionSetValueParameterClause"),
              Core.projectionField = (Core.Name "initializer")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

setAllPropertiesItem :: Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm (Maybe Grammar.PropertyKeyValuePairList) -> Phantoms.TTerm Grammar.SetAllPropertiesItem
setAllPropertiesItem variable properties =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetAllPropertiesItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm variable)},
        Core.Field {
          Core.fieldName = (Core.Name "properties"),
          Core.fieldTerm = (Phantoms.unTTerm properties)}]}))

setAllPropertiesItemProperties :: Phantoms.TTerm Grammar.SetAllPropertiesItem -> Phantoms.TTerm (Maybe Grammar.PropertyKeyValuePairList)
setAllPropertiesItemProperties x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SetAllPropertiesItem"),
        Core.projectionField = (Core.Name "properties")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

setAllPropertiesItemVariable :: Phantoms.TTerm Grammar.SetAllPropertiesItem -> Phantoms.TTerm Grammar.BindingVariableReference
setAllPropertiesItemVariable x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SetAllPropertiesItem"),
        Core.projectionField = (Core.Name "variable")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

setAllPropertiesItemWithProperties :: Phantoms.TTerm Grammar.SetAllPropertiesItem -> Phantoms.TTerm (Maybe Grammar.PropertyKeyValuePairList) -> Phantoms.TTerm Grammar.SetAllPropertiesItem
setAllPropertiesItemWithProperties original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetAllPropertiesItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetAllPropertiesItem"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "properties"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

setAllPropertiesItemWithVariable :: Phantoms.TTerm Grammar.SetAllPropertiesItem -> Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm Grammar.SetAllPropertiesItem
setAllPropertiesItemWithVariable original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetAllPropertiesItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "properties"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetAllPropertiesItem"),
              Core.projectionField = (Core.Name "properties")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

setItemAllProperties :: Phantoms.TTerm Grammar.SetAllPropertiesItem -> Phantoms.TTerm Grammar.SetItem
setItemAllProperties x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SetItem"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "allProperties"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

setItemLabel :: Phantoms.TTerm Grammar.SetLabelItem -> Phantoms.TTerm Grammar.SetItem
setItemLabel x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SetItem"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "label"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

setItemProperty :: Phantoms.TTerm Grammar.SetPropertyItem -> Phantoms.TTerm Grammar.SetItem
setItemProperty x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SetItem"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "property"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

setLabelItem :: Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm Grammar.IsOrColon -> Phantoms.TTerm Grammar.LabelName -> Phantoms.TTerm Grammar.SetLabelItem
setLabelItem variable isOrColon label =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm variable)},
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm isOrColon)},
        Core.Field {
          Core.fieldName = (Core.Name "label"),
          Core.fieldTerm = (Phantoms.unTTerm label)}]}))

setLabelItemIsOrColon :: Phantoms.TTerm Grammar.SetLabelItem -> Phantoms.TTerm Grammar.IsOrColon
setLabelItemIsOrColon x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
        Core.projectionField = (Core.Name "isOrColon")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

setLabelItemLabel :: Phantoms.TTerm Grammar.SetLabelItem -> Phantoms.TTerm Grammar.LabelName
setLabelItemLabel x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
        Core.projectionField = (Core.Name "label")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

setLabelItemVariable :: Phantoms.TTerm Grammar.SetLabelItem -> Phantoms.TTerm Grammar.BindingVariableReference
setLabelItemVariable x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
        Core.projectionField = (Core.Name "variable")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

setLabelItemWithIsOrColon :: Phantoms.TTerm Grammar.SetLabelItem -> Phantoms.TTerm Grammar.IsOrColon -> Phantoms.TTerm Grammar.SetLabelItem
setLabelItemWithIsOrColon original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "label"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
              Core.projectionField = (Core.Name "label")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

setLabelItemWithLabel :: Phantoms.TTerm Grammar.SetLabelItem -> Phantoms.TTerm Grammar.LabelName -> Phantoms.TTerm Grammar.SetLabelItem
setLabelItemWithLabel original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
              Core.projectionField = (Core.Name "isOrColon")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "label"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

setLabelItemWithVariable :: Phantoms.TTerm Grammar.SetLabelItem -> Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm Grammar.SetLabelItem
setLabelItemWithVariable original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "isOrColon"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
              Core.projectionField = (Core.Name "isOrColon")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "label"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetLabelItem"),
              Core.projectionField = (Core.Name "label")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

setOperator :: Phantoms.TTerm Grammar.SetOperatorType -> Phantoms.TTerm (Maybe Grammar.SetQuantifier) -> Phantoms.TTerm Grammar.SetOperator
setOperator operatorType quantifier =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetOperator"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "operatorType"),
          Core.fieldTerm = (Phantoms.unTTerm operatorType)},
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Phantoms.unTTerm quantifier)}]}))

setOperatorOperatorType :: Phantoms.TTerm Grammar.SetOperator -> Phantoms.TTerm Grammar.SetOperatorType
setOperatorOperatorType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SetOperator"),
        Core.projectionField = (Core.Name "operatorType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

setOperatorQuantifier :: Phantoms.TTerm Grammar.SetOperator -> Phantoms.TTerm (Maybe Grammar.SetQuantifier)
setOperatorQuantifier x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SetOperator"),
        Core.projectionField = (Core.Name "quantifier")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

setOperatorTypeExcept :: Phantoms.TTerm Grammar.SetOperatorType
setOperatorTypeExcept =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SetOperatorType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "except"),
        Core.fieldTerm = Core.TermUnit}}))

setOperatorTypeIntersect :: Phantoms.TTerm Grammar.SetOperatorType
setOperatorTypeIntersect =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SetOperatorType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "intersect"),
        Core.fieldTerm = Core.TermUnit}}))

setOperatorTypeUnion :: Phantoms.TTerm Grammar.SetOperatorType
setOperatorTypeUnion =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SetOperatorType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "union"),
        Core.fieldTerm = Core.TermUnit}}))

setOperatorWithOperatorType :: Phantoms.TTerm Grammar.SetOperator -> Phantoms.TTerm Grammar.SetOperatorType -> Phantoms.TTerm Grammar.SetOperator
setOperatorWithOperatorType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetOperator"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "operatorType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetOperator"),
              Core.projectionField = (Core.Name "quantifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

setOperatorWithQuantifier :: Phantoms.TTerm Grammar.SetOperator -> Phantoms.TTerm (Maybe Grammar.SetQuantifier) -> Phantoms.TTerm Grammar.SetOperator
setOperatorWithQuantifier original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetOperator"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "operatorType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetOperator"),
              Core.projectionField = (Core.Name "operatorType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

setPropertyItem :: Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.SetPropertyItem
setPropertyItem variable propertyName value =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm variable)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Phantoms.unTTerm propertyName)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm value)}]}))

setPropertyItemPropertyName :: Phantoms.TTerm Grammar.SetPropertyItem -> Phantoms.TTerm Grammar.PropertyName
setPropertyItemPropertyName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
        Core.projectionField = (Core.Name "propertyName")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

setPropertyItemValue :: Phantoms.TTerm Grammar.SetPropertyItem -> Phantoms.TTerm Grammar.ValueExpression
setPropertyItemValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
        Core.projectionField = (Core.Name "value")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

setPropertyItemVariable :: Phantoms.TTerm Grammar.SetPropertyItem -> Phantoms.TTerm Grammar.BindingVariableReference
setPropertyItemVariable x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
        Core.projectionField = (Core.Name "variable")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

setPropertyItemWithPropertyName :: Phantoms.TTerm Grammar.SetPropertyItem -> Phantoms.TTerm Grammar.PropertyName -> Phantoms.TTerm Grammar.SetPropertyItem
setPropertyItemWithPropertyName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

setPropertyItemWithValue :: Phantoms.TTerm Grammar.SetPropertyItem -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.SetPropertyItem
setPropertyItemWithValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
              Core.projectionField = (Core.Name "propertyName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

setPropertyItemWithVariable :: Phantoms.TTerm Grammar.SetPropertyItem -> Phantoms.TTerm Grammar.BindingVariableReference -> Phantoms.TTerm Grammar.SetPropertyItem
setPropertyItemWithVariable original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "propertyName"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
              Core.projectionField = (Core.Name "propertyName")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SetPropertyItem"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

setQuantifierAll :: Phantoms.TTerm Grammar.SetQuantifier
setQuantifierAll =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SetQuantifier"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "all"),
        Core.fieldTerm = Core.TermUnit}}))

setQuantifierDistinct :: Phantoms.TTerm Grammar.SetQuantifier
setQuantifierDistinct =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SetQuantifier"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "distinct"),
        Core.fieldTerm = Core.TermUnit}}))

shortestPathSearchAllShortest :: Phantoms.TTerm Grammar.AllShortestPathSearch -> Phantoms.TTerm Grammar.ShortestPathSearch
shortestPathSearchAllShortest x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ShortestPathSearch"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "allShortest"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

shortestPathSearchAnyShortest :: Phantoms.TTerm Grammar.AnyShortestPathSearch -> Phantoms.TTerm Grammar.ShortestPathSearch
shortestPathSearchAnyShortest x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ShortestPathSearch"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "anyShortest"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

shortestPathSearchCountedShortest :: Phantoms.TTerm Grammar.CountedShortestPathSearch -> Phantoms.TTerm Grammar.ShortestPathSearch
shortestPathSearchCountedShortest x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ShortestPathSearch"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "countedShortest"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

shortestPathSearchCountedShortestGroup :: Phantoms.TTerm Grammar.CountedShortestGroupSearch -> Phantoms.TTerm Grammar.ShortestPathSearch
shortestPathSearchCountedShortestGroup x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ShortestPathSearch"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "countedShortestGroup"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sideLeft :: Phantoms.TTerm Grammar.Side
sideLeft =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Side"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "left"),
        Core.fieldTerm = Core.TermUnit}}))

sideRight :: Phantoms.TTerm Grammar.Side
sideRight =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Side"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "right"),
        Core.fieldTerm = Core.TermUnit}}))

signMinus :: Phantoms.TTerm Grammar.Sign
signMinus =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Sign"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "minus"),
        Core.fieldTerm = Core.TermUnit}}))

signPlus :: Phantoms.TTerm Grammar.Sign
signPlus =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Sign"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "plus"),
        Core.fieldTerm = Core.TermUnit}}))

signedBinaryExactNumericTypeBigInt :: Phantoms.TTerm Grammar.BigIntType -> Phantoms.TTerm Grammar.SignedBinaryExactNumericType
signedBinaryExactNumericTypeBigInt x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "bigInt"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

signedBinaryExactNumericTypeInt128 :: Phantoms.TTerm Grammar.Int128Type -> Phantoms.TTerm Grammar.SignedBinaryExactNumericType
signedBinaryExactNumericTypeInt128 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "int128"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

signedBinaryExactNumericTypeInt16 :: Phantoms.TTerm Grammar.Int16Type -> Phantoms.TTerm Grammar.SignedBinaryExactNumericType
signedBinaryExactNumericTypeInt16 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "int16"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

signedBinaryExactNumericTypeInt256 :: Phantoms.TTerm Grammar.Int256Type -> Phantoms.TTerm Grammar.SignedBinaryExactNumericType
signedBinaryExactNumericTypeInt256 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "int256"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

signedBinaryExactNumericTypeInt32 :: Phantoms.TTerm Grammar.Int32Type -> Phantoms.TTerm Grammar.SignedBinaryExactNumericType
signedBinaryExactNumericTypeInt32 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "int32"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

signedBinaryExactNumericTypeInt64 :: Phantoms.TTerm Grammar.Int64Type -> Phantoms.TTerm Grammar.SignedBinaryExactNumericType
signedBinaryExactNumericTypeInt64 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "int64"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

signedBinaryExactNumericTypeInt8 :: Phantoms.TTerm Grammar.Int8Type -> Phantoms.TTerm Grammar.SignedBinaryExactNumericType
signedBinaryExactNumericTypeInt8 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "int8"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

signedBinaryExactNumericTypeIntWithPrecision :: Phantoms.TTerm Grammar.IntWithPrecision -> Phantoms.TTerm Grammar.SignedBinaryExactNumericType
signedBinaryExactNumericTypeIntWithPrecision x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "intWithPrecision"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

signedBinaryExactNumericTypeSignedVerboseType :: Phantoms.TTerm Grammar.SignedVerboseBinaryExactNumericType -> Phantoms.TTerm Grammar.SignedBinaryExactNumericType
signedBinaryExactNumericTypeSignedVerboseType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "signedVerboseType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

signedBinaryExactNumericTypeSmallInt :: Phantoms.TTerm Grammar.SmallIntType -> Phantoms.TTerm Grammar.SignedBinaryExactNumericType
signedBinaryExactNumericTypeSmallInt x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "smallInt"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

signedExpr :: Phantoms.TTerm Grammar.Sign -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.SignedExpr
signedExpr sign valueExpression =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SignedExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sign"),
          Core.fieldTerm = (Phantoms.unTTerm sign)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)}]}))

signedExprSign :: Phantoms.TTerm Grammar.SignedExpr -> Phantoms.TTerm Grammar.Sign
signedExprSign x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SignedExpr"),
        Core.projectionField = (Core.Name "sign")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

signedExprValueExpression :: Phantoms.TTerm Grammar.SignedExpr -> Phantoms.TTerm Grammar.ValueExpression
signedExprValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SignedExpr"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

signedExprWithSign :: Phantoms.TTerm Grammar.SignedExpr -> Phantoms.TTerm Grammar.Sign -> Phantoms.TTerm Grammar.SignedExpr
signedExprWithSign original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SignedExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sign"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SignedExpr"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

signedExprWithValueExpression :: Phantoms.TTerm Grammar.SignedExpr -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.SignedExpr
signedExprWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SignedExpr"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sign"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SignedExpr"),
              Core.projectionField = (Core.Name "sign")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

signedNumericValueExpression :: Phantoms.TTerm Grammar.Sign -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.SignedNumericValueExpression
signedNumericValueExpression sign expression =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SignedNumericValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sign"),
          Core.fieldTerm = (Phantoms.unTTerm sign)},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Phantoms.unTTerm expression)}]}))

signedNumericValueExpressionExpression :: Phantoms.TTerm Grammar.SignedNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression
signedNumericValueExpressionExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SignedNumericValueExpression"),
        Core.projectionField = (Core.Name "expression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

signedNumericValueExpressionSign :: Phantoms.TTerm Grammar.SignedNumericValueExpression -> Phantoms.TTerm Grammar.Sign
signedNumericValueExpressionSign x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SignedNumericValueExpression"),
        Core.projectionField = (Core.Name "sign")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

signedNumericValueExpressionWithExpression :: Phantoms.TTerm Grammar.SignedNumericValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.SignedNumericValueExpression
signedNumericValueExpressionWithExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SignedNumericValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sign"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SignedNumericValueExpression"),
              Core.projectionField = (Core.Name "sign")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

signedNumericValueExpressionWithSign :: Phantoms.TTerm Grammar.SignedNumericValueExpression -> Phantoms.TTerm Grammar.Sign -> Phantoms.TTerm Grammar.SignedNumericValueExpression
signedNumericValueExpressionWithSign original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SignedNumericValueExpression"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sign"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "expression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SignedNumericValueExpression"),
              Core.projectionField = (Core.Name "expression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

signedVerboseBinaryExactNumericType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType -> Phantoms.TTerm Grammar.SignedVerboseBinaryExactNumericType
signedVerboseBinaryExactNumericType signed verboseType =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SignedVerboseBinaryExactNumericType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "signed"),
          Core.fieldTerm = (Phantoms.unTTerm signed)},
        Core.Field {
          Core.fieldName = (Core.Name "verboseType"),
          Core.fieldTerm = (Phantoms.unTTerm verboseType)}]}))

signedVerboseBinaryExactNumericTypeSigned :: Phantoms.TTerm Grammar.SignedVerboseBinaryExactNumericType -> Phantoms.TTerm Bool
signedVerboseBinaryExactNumericTypeSigned x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SignedVerboseBinaryExactNumericType"),
        Core.projectionField = (Core.Name "signed")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

signedVerboseBinaryExactNumericTypeVerboseType :: Phantoms.TTerm Grammar.SignedVerboseBinaryExactNumericType -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType
signedVerboseBinaryExactNumericTypeVerboseType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SignedVerboseBinaryExactNumericType"),
        Core.projectionField = (Core.Name "verboseType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

signedVerboseBinaryExactNumericTypeWithSigned :: Phantoms.TTerm Grammar.SignedVerboseBinaryExactNumericType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SignedVerboseBinaryExactNumericType
signedVerboseBinaryExactNumericTypeWithSigned original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SignedVerboseBinaryExactNumericType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "signed"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "verboseType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SignedVerboseBinaryExactNumericType"),
              Core.projectionField = (Core.Name "verboseType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

signedVerboseBinaryExactNumericTypeWithVerboseType :: Phantoms.TTerm Grammar.SignedVerboseBinaryExactNumericType -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType -> Phantoms.TTerm Grammar.SignedVerboseBinaryExactNumericType
signedVerboseBinaryExactNumericTypeWithVerboseType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SignedVerboseBinaryExactNumericType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "signed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SignedVerboseBinaryExactNumericType"),
              Core.projectionField = (Core.Name "signed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "verboseType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

simpleCase :: Phantoms.TTerm Grammar.CaseOperand -> Phantoms.TTerm [Grammar.SimpleWhenClause] -> Phantoms.TTerm (Maybe Grammar.ElseClause) -> Phantoms.TTerm Grammar.SimpleCase
simpleCase caseOperand whenClauses elseClause =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimpleCase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "caseOperand"),
          Core.fieldTerm = (Phantoms.unTTerm caseOperand)},
        Core.Field {
          Core.fieldName = (Core.Name "whenClauses"),
          Core.fieldTerm = (Phantoms.unTTerm whenClauses)},
        Core.Field {
          Core.fieldName = (Core.Name "elseClause"),
          Core.fieldTerm = (Phantoms.unTTerm elseClause)}]}))

simpleCaseCaseOperand :: Phantoms.TTerm Grammar.SimpleCase -> Phantoms.TTerm Grammar.CaseOperand
simpleCaseCaseOperand x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleCase"),
        Core.projectionField = (Core.Name "caseOperand")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

simpleCaseElseClause :: Phantoms.TTerm Grammar.SimpleCase -> Phantoms.TTerm (Maybe Grammar.ElseClause)
simpleCaseElseClause x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleCase"),
        Core.projectionField = (Core.Name "elseClause")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

simpleCaseWhenClauses :: Phantoms.TTerm Grammar.SimpleCase -> Phantoms.TTerm [Grammar.SimpleWhenClause]
simpleCaseWhenClauses x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleCase"),
        Core.projectionField = (Core.Name "whenClauses")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

simpleCaseWithCaseOperand :: Phantoms.TTerm Grammar.SimpleCase -> Phantoms.TTerm Grammar.CaseOperand -> Phantoms.TTerm Grammar.SimpleCase
simpleCaseWithCaseOperand original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimpleCase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "caseOperand"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "whenClauses"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleCase"),
              Core.projectionField = (Core.Name "whenClauses")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "elseClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleCase"),
              Core.projectionField = (Core.Name "elseClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

simpleCaseWithElseClause :: Phantoms.TTerm Grammar.SimpleCase -> Phantoms.TTerm (Maybe Grammar.ElseClause) -> Phantoms.TTerm Grammar.SimpleCase
simpleCaseWithElseClause original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimpleCase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "caseOperand"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleCase"),
              Core.projectionField = (Core.Name "caseOperand")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "whenClauses"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleCase"),
              Core.projectionField = (Core.Name "whenClauses")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "elseClause"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

simpleCaseWithWhenClauses :: Phantoms.TTerm Grammar.SimpleCase -> Phantoms.TTerm [Grammar.SimpleWhenClause] -> Phantoms.TTerm Grammar.SimpleCase
simpleCaseWithWhenClauses original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimpleCase"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "caseOperand"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleCase"),
              Core.projectionField = (Core.Name "caseOperand")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "whenClauses"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "elseClause"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleCase"),
              Core.projectionField = (Core.Name "elseClause")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

simpleCatalogModifyingStatementCallProcedure :: Phantoms.TTerm Grammar.CallCatalogModifyingProcedureStatement -> Phantoms.TTerm Grammar.SimpleCatalogModifyingStatement
simpleCatalogModifyingStatementCallProcedure x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimpleCatalogModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "callProcedure"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simpleCatalogModifyingStatementPrimitive :: Phantoms.TTerm Grammar.PrimitiveCatalogModifyingStatement -> Phantoms.TTerm Grammar.SimpleCatalogModifyingStatement
simpleCatalogModifyingStatementPrimitive x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimpleCatalogModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "primitive"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simpleDataAccessingStatementModifying :: Phantoms.TTerm Grammar.SimpleDataModifyingStatement -> Phantoms.TTerm Grammar.SimpleDataAccessingStatement
simpleDataAccessingStatementModifying x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimpleDataAccessingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "modifying"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simpleDataAccessingStatementQuery :: Phantoms.TTerm Grammar.SimpleQueryStatement -> Phantoms.TTerm Grammar.SimpleDataAccessingStatement
simpleDataAccessingStatementQuery x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimpleDataAccessingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "query"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simpleDataModifyingStatementCallProcedure :: Phantoms.TTerm Grammar.CallDataModifyingProcedureStatement -> Phantoms.TTerm Grammar.SimpleDataModifyingStatement
simpleDataModifyingStatementCallProcedure x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimpleDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "callProcedure"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simpleDataModifyingStatementPrimitive :: Phantoms.TTerm Grammar.PrimitiveDataModifyingStatement -> Phantoms.TTerm Grammar.SimpleDataModifyingStatement
simpleDataModifyingStatementPrimitive x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimpleDataModifyingStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "primitive"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simpleQueryStatementCall :: Phantoms.TTerm Grammar.CallQueryStatement -> Phantoms.TTerm Grammar.SimpleQueryStatement
simpleQueryStatementCall x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimpleQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "call"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simpleQueryStatementPrimitive :: Phantoms.TTerm Grammar.PrimitiveQueryStatement -> Phantoms.TTerm Grammar.SimpleQueryStatement
simpleQueryStatementPrimitive x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimpleQueryStatement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "primitive"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simpleWhenClause :: Phantoms.TTerm Grammar.WhenOperandList -> Phantoms.TTerm Grammar.Result -> Phantoms.TTerm Grammar.SimpleWhenClause
simpleWhenClause whenOperands result =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimpleWhenClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "whenOperands"),
          Core.fieldTerm = (Phantoms.unTTerm whenOperands)},
        Core.Field {
          Core.fieldName = (Core.Name "result"),
          Core.fieldTerm = (Phantoms.unTTerm result)}]}))

simpleWhenClauseResult :: Phantoms.TTerm Grammar.SimpleWhenClause -> Phantoms.TTerm Grammar.Result
simpleWhenClauseResult x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleWhenClause"),
        Core.projectionField = (Core.Name "result")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

simpleWhenClauseWhenOperands :: Phantoms.TTerm Grammar.SimpleWhenClause -> Phantoms.TTerm Grammar.WhenOperandList
simpleWhenClauseWhenOperands x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleWhenClause"),
        Core.projectionField = (Core.Name "whenOperands")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

simpleWhenClauseWithResult :: Phantoms.TTerm Grammar.SimpleWhenClause -> Phantoms.TTerm Grammar.Result -> Phantoms.TTerm Grammar.SimpleWhenClause
simpleWhenClauseWithResult original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimpleWhenClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "whenOperands"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleWhenClause"),
              Core.projectionField = (Core.Name "whenOperands")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "result"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

simpleWhenClauseWithWhenOperands :: Phantoms.TTerm Grammar.SimpleWhenClause -> Phantoms.TTerm Grammar.WhenOperandList -> Phantoms.TTerm Grammar.SimpleWhenClause
simpleWhenClauseWithWhenOperands original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimpleWhenClause"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "whenOperands"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "result"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimpleWhenClause"),
              Core.projectionField = (Core.Name "result")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

simplifiedConcatenation :: Phantoms.TTerm Grammar.SimplifiedTerm -> Phantoms.TTerm Grammar.SimplifiedFactorLow -> Phantoms.TTerm Grammar.SimplifiedConcatenation
simplifiedConcatenation initialTerm nextFactor =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimplifiedConcatenation"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "initialTerm"),
          Core.fieldTerm = (Phantoms.unTTerm initialTerm)},
        Core.Field {
          Core.fieldName = (Core.Name "nextFactor"),
          Core.fieldTerm = (Phantoms.unTTerm nextFactor)}]}))

simplifiedConcatenationInitialTerm :: Phantoms.TTerm Grammar.SimplifiedConcatenation -> Phantoms.TTerm Grammar.SimplifiedTerm
simplifiedConcatenationInitialTerm x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedConcatenation"),
        Core.projectionField = (Core.Name "initialTerm")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

simplifiedConcatenationNextFactor :: Phantoms.TTerm Grammar.SimplifiedConcatenation -> Phantoms.TTerm Grammar.SimplifiedFactorLow
simplifiedConcatenationNextFactor x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedConcatenation"),
        Core.projectionField = (Core.Name "nextFactor")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

simplifiedConcatenationWithInitialTerm :: Phantoms.TTerm Grammar.SimplifiedConcatenation -> Phantoms.TTerm Grammar.SimplifiedTerm -> Phantoms.TTerm Grammar.SimplifiedConcatenation
simplifiedConcatenationWithInitialTerm original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimplifiedConcatenation"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "initialTerm"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "nextFactor"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedConcatenation"),
              Core.projectionField = (Core.Name "nextFactor")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

simplifiedConcatenationWithNextFactor :: Phantoms.TTerm Grammar.SimplifiedConcatenation -> Phantoms.TTerm Grammar.SimplifiedFactorLow -> Phantoms.TTerm Grammar.SimplifiedConcatenation
simplifiedConcatenationWithNextFactor original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimplifiedConcatenation"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "initialTerm"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedConcatenation"),
              Core.projectionField = (Core.Name "initialTerm")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nextFactor"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

simplifiedConjunction :: Phantoms.TTerm Grammar.SimplifiedFactorLow -> Phantoms.TTerm Grammar.SimplifiedFactorHigh -> Phantoms.TTerm Grammar.SimplifiedConjunction
simplifiedConjunction left right =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimplifiedConjunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm left)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm right)}]}))

simplifiedConjunctionLeft :: Phantoms.TTerm Grammar.SimplifiedConjunction -> Phantoms.TTerm Grammar.SimplifiedFactorLow
simplifiedConjunctionLeft x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedConjunction"),
        Core.projectionField = (Core.Name "left")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

simplifiedConjunctionRight :: Phantoms.TTerm Grammar.SimplifiedConjunction -> Phantoms.TTerm Grammar.SimplifiedFactorHigh
simplifiedConjunctionRight x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedConjunction"),
        Core.projectionField = (Core.Name "right")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

simplifiedConjunctionWithLeft :: Phantoms.TTerm Grammar.SimplifiedConjunction -> Phantoms.TTerm Grammar.SimplifiedFactorLow -> Phantoms.TTerm Grammar.SimplifiedConjunction
simplifiedConjunctionWithLeft original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimplifiedConjunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedConjunction"),
              Core.projectionField = (Core.Name "right")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

simplifiedConjunctionWithRight :: Phantoms.TTerm Grammar.SimplifiedConjunction -> Phantoms.TTerm Grammar.SimplifiedFactorHigh -> Phantoms.TTerm Grammar.SimplifiedConjunction
simplifiedConjunctionWithRight original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimplifiedConjunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "left"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedConjunction"),
              Core.projectionField = (Core.Name "left")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "right"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

simplifiedContentsMultisetAlternation :: Phantoms.TTerm Grammar.SimplifiedMultisetAlternation -> Phantoms.TTerm Grammar.SimplifiedContents
simplifiedContentsMultisetAlternation x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedContents"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "multisetAlternation"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedContentsPathUnion :: Phantoms.TTerm Grammar.SimplifiedPathUnion -> Phantoms.TTerm Grammar.SimplifiedContents
simplifiedContentsPathUnion x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedContents"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pathUnion"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedContentsTerm :: Phantoms.TTerm Grammar.SimplifiedTerm -> Phantoms.TTerm Grammar.SimplifiedContents
simplifiedContentsTerm x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedContents"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "term"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedDirectionOverrideOverrideAnyDirection :: Phantoms.TTerm Grammar.SimplifiedOverrideAnyDirection -> Phantoms.TTerm Grammar.SimplifiedDirectionOverride
simplifiedDirectionOverrideOverrideAnyDirection x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedDirectionOverride"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "overrideAnyDirection"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedDirectionOverrideOverrideLeft :: Phantoms.TTerm Grammar.SimplifiedOverrideLeft -> Phantoms.TTerm Grammar.SimplifiedDirectionOverride
simplifiedDirectionOverrideOverrideLeft x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedDirectionOverride"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "overrideLeft"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedDirectionOverrideOverrideLeftOrRight :: Phantoms.TTerm Grammar.SimplifiedOverrideLeftOrRight -> Phantoms.TTerm Grammar.SimplifiedDirectionOverride
simplifiedDirectionOverrideOverrideLeftOrRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedDirectionOverride"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "overrideLeftOrRight"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedDirectionOverrideOverrideLeftOrUndirected :: Phantoms.TTerm Grammar.SimplifiedOverrideLeftOrUndirected -> Phantoms.TTerm Grammar.SimplifiedDirectionOverride
simplifiedDirectionOverrideOverrideLeftOrUndirected x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedDirectionOverride"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "overrideLeftOrUndirected"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedDirectionOverrideOverrideRight :: Phantoms.TTerm Grammar.SimplifiedOverrideRight -> Phantoms.TTerm Grammar.SimplifiedDirectionOverride
simplifiedDirectionOverrideOverrideRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedDirectionOverride"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "overrideRight"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedDirectionOverrideOverrideUndirected :: Phantoms.TTerm Grammar.SimplifiedOverrideUndirected -> Phantoms.TTerm Grammar.SimplifiedDirectionOverride
simplifiedDirectionOverrideOverrideUndirected x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedDirectionOverride"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "overrideUndirected"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedDirectionOverrideOverrideUndirectedOrRight :: Phantoms.TTerm Grammar.SimplifiedOverrideUndirectedOrRight -> Phantoms.TTerm Grammar.SimplifiedDirectionOverride
simplifiedDirectionOverrideOverrideUndirectedOrRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedDirectionOverride"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "overrideUndirectedOrRight"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedFactorHighQuantified :: Phantoms.TTerm Grammar.SimplifiedQuantified -> Phantoms.TTerm Grammar.SimplifiedFactorHigh
simplifiedFactorHighQuantified x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedFactorHigh"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "quantified"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedFactorHighQuestioned :: Phantoms.TTerm Grammar.SimplifiedQuestioned -> Phantoms.TTerm Grammar.SimplifiedFactorHigh
simplifiedFactorHighQuestioned x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedFactorHigh"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "questioned"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedFactorHighTertiary :: Phantoms.TTerm Grammar.SimplifiedTertiary -> Phantoms.TTerm Grammar.SimplifiedFactorHigh
simplifiedFactorHighTertiary x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedFactorHigh"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "tertiary"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedFactorLowConjunction :: Phantoms.TTerm Grammar.SimplifiedConjunction -> Phantoms.TTerm Grammar.SimplifiedFactorLow
simplifiedFactorLowConjunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedFactorLow"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "conjunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedFactorLowFactorHigh :: Phantoms.TTerm Grammar.SimplifiedFactorHigh -> Phantoms.TTerm Grammar.SimplifiedFactorLow
simplifiedFactorLowFactorHigh x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedFactorLow"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "factorHigh"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedPathPatternExpressionAnyDirection :: Phantoms.TTerm Grammar.SimplifiedDefaultingAnyDirection -> Phantoms.TTerm Grammar.SimplifiedPathPatternExpression
simplifiedPathPatternExpressionAnyDirection x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedPathPatternExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "anyDirection"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedPathPatternExpressionLeft :: Phantoms.TTerm Grammar.SimplifiedDefaultingLeft -> Phantoms.TTerm Grammar.SimplifiedPathPatternExpression
simplifiedPathPatternExpressionLeft x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedPathPatternExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "left"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedPathPatternExpressionLeftOrRight :: Phantoms.TTerm Grammar.SimplifiedDefaultingLeftOrRight -> Phantoms.TTerm Grammar.SimplifiedPathPatternExpression
simplifiedPathPatternExpressionLeftOrRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedPathPatternExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "leftOrRight"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedPathPatternExpressionLeftOrUndirected :: Phantoms.TTerm Grammar.SimplifiedDefaultingLeftOrUndirected -> Phantoms.TTerm Grammar.SimplifiedPathPatternExpression
simplifiedPathPatternExpressionLeftOrUndirected x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedPathPatternExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "leftOrUndirected"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedPathPatternExpressionRight :: Phantoms.TTerm Grammar.SimplifiedDefaultingRight -> Phantoms.TTerm Grammar.SimplifiedPathPatternExpression
simplifiedPathPatternExpressionRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedPathPatternExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "right"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedPathPatternExpressionUndirected :: Phantoms.TTerm Grammar.SimplifiedDefaultingUndirected -> Phantoms.TTerm Grammar.SimplifiedPathPatternExpression
simplifiedPathPatternExpressionUndirected x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedPathPatternExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "undirected"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedPathPatternExpressionUndirectedOrRight :: Phantoms.TTerm Grammar.SimplifiedDefaultingUndirectedOrRight -> Phantoms.TTerm Grammar.SimplifiedPathPatternExpression
simplifiedPathPatternExpressionUndirectedOrRight x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedPathPatternExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "undirectedOrRight"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedPrimaryLabelName :: Phantoms.TTerm Grammar.LabelName -> Phantoms.TTerm Grammar.SimplifiedPrimary
simplifiedPrimaryLabelName x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedPrimary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "labelName"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedPrimaryParenthesizedContents :: Phantoms.TTerm Grammar.SimplifiedContents -> Phantoms.TTerm Grammar.SimplifiedPrimary
simplifiedPrimaryParenthesizedContents x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedPrimary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "parenthesizedContents"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedQuantified :: Phantoms.TTerm Grammar.SimplifiedTertiary -> Phantoms.TTerm Grammar.GraphPatternQuantifier -> Phantoms.TTerm Grammar.SimplifiedQuantified
simplifiedQuantified tertiary quantifier =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimplifiedQuantified"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "tertiary"),
          Core.fieldTerm = (Phantoms.unTTerm tertiary)},
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Phantoms.unTTerm quantifier)}]}))

simplifiedQuantifiedQuantifier :: Phantoms.TTerm Grammar.SimplifiedQuantified -> Phantoms.TTerm Grammar.GraphPatternQuantifier
simplifiedQuantifiedQuantifier x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedQuantified"),
        Core.projectionField = (Core.Name "quantifier")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

simplifiedQuantifiedTertiary :: Phantoms.TTerm Grammar.SimplifiedQuantified -> Phantoms.TTerm Grammar.SimplifiedTertiary
simplifiedQuantifiedTertiary x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedQuantified"),
        Core.projectionField = (Core.Name "tertiary")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

simplifiedQuantifiedWithQuantifier :: Phantoms.TTerm Grammar.SimplifiedQuantified -> Phantoms.TTerm Grammar.GraphPatternQuantifier -> Phantoms.TTerm Grammar.SimplifiedQuantified
simplifiedQuantifiedWithQuantifier original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimplifiedQuantified"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "tertiary"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedQuantified"),
              Core.projectionField = (Core.Name "tertiary")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

simplifiedQuantifiedWithTertiary :: Phantoms.TTerm Grammar.SimplifiedQuantified -> Phantoms.TTerm Grammar.SimplifiedTertiary -> Phantoms.TTerm Grammar.SimplifiedQuantified
simplifiedQuantifiedWithTertiary original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SimplifiedQuantified"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "tertiary"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "quantifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SimplifiedQuantified"),
              Core.projectionField = (Core.Name "quantifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

simplifiedSecondaryNegation :: Phantoms.TTerm Grammar.SimplifiedNegation -> Phantoms.TTerm Grammar.SimplifiedSecondary
simplifiedSecondaryNegation x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedSecondary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "negation"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedSecondaryPrimary :: Phantoms.TTerm Grammar.SimplifiedPrimary -> Phantoms.TTerm Grammar.SimplifiedSecondary
simplifiedSecondaryPrimary x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedSecondary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "primary"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedTermConcatenation :: Phantoms.TTerm Grammar.SimplifiedConcatenation -> Phantoms.TTerm Grammar.SimplifiedTerm
simplifiedTermConcatenation x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedTerm"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "concatenation"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedTermFactorLow :: Phantoms.TTerm Grammar.SimplifiedFactorLow -> Phantoms.TTerm Grammar.SimplifiedTerm
simplifiedTermFactorLow x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedTerm"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "factorLow"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedTertiaryDirectionOverride :: Phantoms.TTerm Grammar.SimplifiedDirectionOverride -> Phantoms.TTerm Grammar.SimplifiedTertiary
simplifiedTertiaryDirectionOverride x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedTertiary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "directionOverride"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

simplifiedTertiarySecondary :: Phantoms.TTerm Grammar.SimplifiedSecondary -> Phantoms.TTerm Grammar.SimplifiedTertiary
simplifiedTertiarySecondary x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SimplifiedTertiary"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "secondary"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

smallIntType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SmallIntType
smallIntType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SmallIntType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

smallIntTypeNotNull :: Phantoms.TTerm Grammar.SmallIntType -> Phantoms.TTerm Bool
smallIntTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SmallIntType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

smallIntTypeWithNotNull :: Phantoms.TTerm Grammar.SmallIntType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SmallIntType
smallIntTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SmallIntType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

smallIntegerType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SmallIntegerType
smallIntegerType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SmallIntegerType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

smallIntegerTypeNotNull :: Phantoms.TTerm Grammar.SmallIntegerType -> Phantoms.TTerm Bool
smallIntegerTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SmallIntegerType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

smallIntegerTypeWithNotNull :: Phantoms.TTerm Grammar.SmallIntegerType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SmallIntegerType
smallIntegerTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SmallIntegerType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

sortSpecification :: Phantoms.TTerm Grammar.SortKey -> Phantoms.TTerm (Maybe Grammar.OrderingSpecification) -> Phantoms.TTerm (Maybe Grammar.NullOrdering) -> Phantoms.TTerm Grammar.SortSpecification
sortSpecification sortKey ordering nullOrdering =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SortSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sortKey"),
          Core.fieldTerm = (Phantoms.unTTerm sortKey)},
        Core.Field {
          Core.fieldName = (Core.Name "ordering"),
          Core.fieldTerm = (Phantoms.unTTerm ordering)},
        Core.Field {
          Core.fieldName = (Core.Name "nullOrdering"),
          Core.fieldTerm = (Phantoms.unTTerm nullOrdering)}]}))

sortSpecificationNullOrdering :: Phantoms.TTerm Grammar.SortSpecification -> Phantoms.TTerm (Maybe Grammar.NullOrdering)
sortSpecificationNullOrdering x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SortSpecification"),
        Core.projectionField = (Core.Name "nullOrdering")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sortSpecificationOrdering :: Phantoms.TTerm Grammar.SortSpecification -> Phantoms.TTerm (Maybe Grammar.OrderingSpecification)
sortSpecificationOrdering x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SortSpecification"),
        Core.projectionField = (Core.Name "ordering")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sortSpecificationSortKey :: Phantoms.TTerm Grammar.SortSpecification -> Phantoms.TTerm Grammar.SortKey
sortSpecificationSortKey x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SortSpecification"),
        Core.projectionField = (Core.Name "sortKey")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sortSpecificationWithNullOrdering :: Phantoms.TTerm Grammar.SortSpecification -> Phantoms.TTerm (Maybe Grammar.NullOrdering) -> Phantoms.TTerm Grammar.SortSpecification
sortSpecificationWithNullOrdering original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SortSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sortKey"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SortSpecification"),
              Core.projectionField = (Core.Name "sortKey")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "ordering"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SortSpecification"),
              Core.projectionField = (Core.Name "ordering")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nullOrdering"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

sortSpecificationWithOrdering :: Phantoms.TTerm Grammar.SortSpecification -> Phantoms.TTerm (Maybe Grammar.OrderingSpecification) -> Phantoms.TTerm Grammar.SortSpecification
sortSpecificationWithOrdering original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SortSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sortKey"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SortSpecification"),
              Core.projectionField = (Core.Name "sortKey")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "ordering"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "nullOrdering"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SortSpecification"),
              Core.projectionField = (Core.Name "nullOrdering")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

sortSpecificationWithSortKey :: Phantoms.TTerm Grammar.SortSpecification -> Phantoms.TTerm Grammar.SortKey -> Phantoms.TTerm Grammar.SortSpecification
sortSpecificationWithSortKey original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SortSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "sortKey"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "ordering"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SortSpecification"),
              Core.projectionField = (Core.Name "ordering")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nullOrdering"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SortSpecification"),
              Core.projectionField = (Core.Name "nullOrdering")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

sourceDestinationPredicateDestinationPredicate :: Phantoms.TTerm Grammar.DestinationPredicate -> Phantoms.TTerm Grammar.SourceDestinationPredicate
sourceDestinationPredicateDestinationPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SourceDestinationPredicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "destinationPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sourceDestinationPredicateSourcePredicate :: Phantoms.TTerm Grammar.SourcePredicate -> Phantoms.TTerm Grammar.SourceDestinationPredicate
sourceDestinationPredicateSourcePredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SourceDestinationPredicate"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "sourcePredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sourceNodeTypeReferenceAlias :: Phantoms.TTerm Grammar.SourceNodeTypeAlias -> Phantoms.TTerm Grammar.SourceNodeTypeReference
sourceNodeTypeReferenceAlias x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SourceNodeTypeReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "alias"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sourceNodeTypeReferenceFiller :: Phantoms.TTerm (Maybe Grammar.NodeTypeFiller) -> Phantoms.TTerm Grammar.SourceNodeTypeReference
sourceNodeTypeReferenceFiller x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.SourceNodeTypeReference"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "filler"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

sourcePredicate :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.EdgeReference -> Phantoms.TTerm Grammar.SourcePredicate
sourcePredicate not sourceOf =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SourcePredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm not)},
        Core.Field {
          Core.fieldName = (Core.Name "sourceOf"),
          Core.fieldTerm = (Phantoms.unTTerm sourceOf)}]}))

sourcePredicateNot :: Phantoms.TTerm Grammar.SourcePredicate -> Phantoms.TTerm Bool
sourcePredicateNot x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SourcePredicate"),
        Core.projectionField = (Core.Name "not")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sourcePredicateSourceOf :: Phantoms.TTerm Grammar.SourcePredicate -> Phantoms.TTerm Grammar.EdgeReference
sourcePredicateSourceOf x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SourcePredicate"),
        Core.projectionField = (Core.Name "sourceOf")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

sourcePredicateWithNot :: Phantoms.TTerm Grammar.SourcePredicate -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SourcePredicate
sourcePredicateWithNot original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SourcePredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "sourceOf"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SourcePredicate"),
              Core.projectionField = (Core.Name "sourceOf")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

sourcePredicateWithSourceOf :: Phantoms.TTerm Grammar.SourcePredicate -> Phantoms.TTerm Grammar.EdgeReference -> Phantoms.TTerm Grammar.SourcePredicate
sourcePredicateWithSourceOf original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SourcePredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SourcePredicate"),
              Core.projectionField = (Core.Name "not")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "sourceOf"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

specifiedRecordType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.FieldTypesSpecification -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SpecifiedRecordType
specifiedRecordType record fieldTypes notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "record"),
          Core.fieldTerm = (Phantoms.unTTerm record)},
        Core.Field {
          Core.fieldName = (Core.Name "fieldTypes"),
          Core.fieldTerm = (Phantoms.unTTerm fieldTypes)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

specifiedRecordTypeFieldTypes :: Phantoms.TTerm Grammar.SpecifiedRecordType -> Phantoms.TTerm Grammar.FieldTypesSpecification
specifiedRecordTypeFieldTypes x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
        Core.projectionField = (Core.Name "fieldTypes")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

specifiedRecordTypeNotNull :: Phantoms.TTerm Grammar.SpecifiedRecordType -> Phantoms.TTerm Bool
specifiedRecordTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

specifiedRecordTypeRecord :: Phantoms.TTerm Grammar.SpecifiedRecordType -> Phantoms.TTerm Bool
specifiedRecordTypeRecord x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
        Core.projectionField = (Core.Name "record")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

specifiedRecordTypeWithFieldTypes :: Phantoms.TTerm Grammar.SpecifiedRecordType -> Phantoms.TTerm Grammar.FieldTypesSpecification -> Phantoms.TTerm Grammar.SpecifiedRecordType
specifiedRecordTypeWithFieldTypes original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "record"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
              Core.projectionField = (Core.Name "record")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "fieldTypes"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

specifiedRecordTypeWithNotNull :: Phantoms.TTerm Grammar.SpecifiedRecordType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SpecifiedRecordType
specifiedRecordTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "record"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
              Core.projectionField = (Core.Name "record")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "fieldTypes"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
              Core.projectionField = (Core.Name "fieldTypes")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

specifiedRecordTypeWithRecord :: Phantoms.TTerm Grammar.SpecifiedRecordType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.SpecifiedRecordType
specifiedRecordTypeWithRecord original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "record"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "fieldTypes"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
              Core.projectionField = (Core.Name "fieldTypes")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SpecifiedRecordType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

startAndMaybeProcedureAndMaybeEnd :: Phantoms.TTerm Grammar.StartTransactionCommand -> Phantoms.TTerm (Maybe Grammar.ProcedureAndMaybeEnd) -> Phantoms.TTerm Grammar.StartAndMaybeProcedureAndMaybeEnd
startAndMaybeProcedureAndMaybeEnd start procedureAndEnd =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.StartAndMaybeProcedureAndMaybeEnd"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "start"),
          Core.fieldTerm = (Phantoms.unTTerm start)},
        Core.Field {
          Core.fieldName = (Core.Name "procedureAndEnd"),
          Core.fieldTerm = (Phantoms.unTTerm procedureAndEnd)}]}))

startAndMaybeProcedureAndMaybeEndProcedureAndEnd :: Phantoms.TTerm Grammar.StartAndMaybeProcedureAndMaybeEnd -> Phantoms.TTerm (Maybe Grammar.ProcedureAndMaybeEnd)
startAndMaybeProcedureAndMaybeEndProcedureAndEnd x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.StartAndMaybeProcedureAndMaybeEnd"),
        Core.projectionField = (Core.Name "procedureAndEnd")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

startAndMaybeProcedureAndMaybeEndStart :: Phantoms.TTerm Grammar.StartAndMaybeProcedureAndMaybeEnd -> Phantoms.TTerm Grammar.StartTransactionCommand
startAndMaybeProcedureAndMaybeEndStart x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.StartAndMaybeProcedureAndMaybeEnd"),
        Core.projectionField = (Core.Name "start")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

startAndMaybeProcedureAndMaybeEndWithProcedureAndEnd :: Phantoms.TTerm Grammar.StartAndMaybeProcedureAndMaybeEnd -> Phantoms.TTerm (Maybe Grammar.ProcedureAndMaybeEnd) -> Phantoms.TTerm Grammar.StartAndMaybeProcedureAndMaybeEnd
startAndMaybeProcedureAndMaybeEndWithProcedureAndEnd original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.StartAndMaybeProcedureAndMaybeEnd"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "start"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.StartAndMaybeProcedureAndMaybeEnd"),
              Core.projectionField = (Core.Name "start")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "procedureAndEnd"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

startAndMaybeProcedureAndMaybeEndWithStart :: Phantoms.TTerm Grammar.StartAndMaybeProcedureAndMaybeEnd -> Phantoms.TTerm Grammar.StartTransactionCommand -> Phantoms.TTerm Grammar.StartAndMaybeProcedureAndMaybeEnd
startAndMaybeProcedureAndMaybeEndWithStart original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.StartAndMaybeProcedureAndMaybeEnd"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "start"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "procedureAndEnd"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.StartAndMaybeProcedureAndMaybeEnd"),
              Core.projectionField = (Core.Name "procedureAndEnd")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

statementBlock :: Phantoms.TTerm Grammar.Statement -> Phantoms.TTerm [Grammar.NextStatement] -> Phantoms.TTerm Grammar.StatementBlock
statementBlock statement nextStatements =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.StatementBlock"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "statement"),
          Core.fieldTerm = (Phantoms.unTTerm statement)},
        Core.Field {
          Core.fieldName = (Core.Name "nextStatements"),
          Core.fieldTerm = (Phantoms.unTTerm nextStatements)}]}))

statementBlockNextStatements :: Phantoms.TTerm Grammar.StatementBlock -> Phantoms.TTerm [Grammar.NextStatement]
statementBlockNextStatements x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.StatementBlock"),
        Core.projectionField = (Core.Name "nextStatements")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

statementBlockStatement :: Phantoms.TTerm Grammar.StatementBlock -> Phantoms.TTerm Grammar.Statement
statementBlockStatement x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.StatementBlock"),
        Core.projectionField = (Core.Name "statement")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

statementBlockWithNextStatements :: Phantoms.TTerm Grammar.StatementBlock -> Phantoms.TTerm [Grammar.NextStatement] -> Phantoms.TTerm Grammar.StatementBlock
statementBlockWithNextStatements original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.StatementBlock"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "statement"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.StatementBlock"),
              Core.projectionField = (Core.Name "statement")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "nextStatements"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

statementBlockWithStatement :: Phantoms.TTerm Grammar.StatementBlock -> Phantoms.TTerm Grammar.Statement -> Phantoms.TTerm Grammar.StatementBlock
statementBlockWithStatement original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.StatementBlock"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "statement"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "nextStatements"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.StatementBlock"),
              Core.projectionField = (Core.Name "nextStatements")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

statementCompositeQuery :: Phantoms.TTerm Grammar.CompositeQueryStatement -> Phantoms.TTerm Grammar.Statement
statementCompositeQuery x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Statement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "compositeQuery"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

statementLinearCatalogModifying :: Phantoms.TTerm Grammar.LinearCatalogModifyingStatement -> Phantoms.TTerm Grammar.Statement
statementLinearCatalogModifying x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Statement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "linearCatalogModifying"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

statementLinearDataModifying :: Phantoms.TTerm Grammar.LinearDataModifyingStatement -> Phantoms.TTerm Grammar.Statement
statementLinearDataModifying x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.Statement"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "linearDataModifying"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

stringType :: Phantoms.TTerm (Maybe Grammar.MinLength) -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.StringType
stringType minLength maxLength notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.StringType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "minLength"),
          Core.fieldTerm = (Phantoms.unTTerm minLength)},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm maxLength)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

stringTypeMaxLength :: Phantoms.TTerm Grammar.StringType -> Phantoms.TTerm (Maybe Grammar.MaxLength)
stringTypeMaxLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.StringType"),
        Core.projectionField = (Core.Name "maxLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

stringTypeMinLength :: Phantoms.TTerm Grammar.StringType -> Phantoms.TTerm (Maybe Grammar.MinLength)
stringTypeMinLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.StringType"),
        Core.projectionField = (Core.Name "minLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

stringTypeNotNull :: Phantoms.TTerm Grammar.StringType -> Phantoms.TTerm Bool
stringTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.StringType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

stringTypeWithMaxLength :: Phantoms.TTerm Grammar.StringType -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Grammar.StringType
stringTypeWithMaxLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.StringType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "minLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.StringType"),
              Core.projectionField = (Core.Name "minLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.StringType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

stringTypeWithMinLength :: Phantoms.TTerm Grammar.StringType -> Phantoms.TTerm (Maybe Grammar.MinLength) -> Phantoms.TTerm Grammar.StringType
stringTypeWithMinLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.StringType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "minLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.StringType"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.StringType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

stringTypeWithNotNull :: Phantoms.TTerm Grammar.StringType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.StringType
stringTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.StringType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "minLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.StringType"),
              Core.projectionField = (Core.Name "minLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.StringType"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

subCharacterOrByteString :: Phantoms.TTerm Grammar.Side -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.StringLength -> Phantoms.TTerm Grammar.SubCharacterOrByteString
subCharacterOrByteString side valueExpression stringLength =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "side"),
          Core.fieldTerm = (Phantoms.unTTerm side)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "stringLength"),
          Core.fieldTerm = (Phantoms.unTTerm stringLength)}]}))

subCharacterOrByteStringSide :: Phantoms.TTerm Grammar.SubCharacterOrByteString -> Phantoms.TTerm Grammar.Side
subCharacterOrByteStringSide x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
        Core.projectionField = (Core.Name "side")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

subCharacterOrByteStringStringLength :: Phantoms.TTerm Grammar.SubCharacterOrByteString -> Phantoms.TTerm Grammar.StringLength
subCharacterOrByteStringStringLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
        Core.projectionField = (Core.Name "stringLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

subCharacterOrByteStringValueExpression :: Phantoms.TTerm Grammar.SubCharacterOrByteString -> Phantoms.TTerm Grammar.ValueExpression
subCharacterOrByteStringValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

subCharacterOrByteStringWithSide :: Phantoms.TTerm Grammar.SubCharacterOrByteString -> Phantoms.TTerm Grammar.Side -> Phantoms.TTerm Grammar.SubCharacterOrByteString
subCharacterOrByteStringWithSide original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "side"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "stringLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
              Core.projectionField = (Core.Name "stringLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

subCharacterOrByteStringWithStringLength :: Phantoms.TTerm Grammar.SubCharacterOrByteString -> Phantoms.TTerm Grammar.StringLength -> Phantoms.TTerm Grammar.SubCharacterOrByteString
subCharacterOrByteStringWithStringLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "side"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
              Core.projectionField = (Core.Name "side")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "stringLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

subCharacterOrByteStringWithValueExpression :: Phantoms.TTerm Grammar.SubCharacterOrByteString -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.SubCharacterOrByteString
subCharacterOrByteStringWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "side"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
              Core.projectionField = (Core.Name "side")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "stringLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.SubCharacterOrByteString"),
              Core.projectionField = (Core.Name "stringLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

temporalDurationQualifierDayToSecond :: Phantoms.TTerm Grammar.TemporalDurationQualifier
temporalDurationQualifierDayToSecond =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalDurationQualifier"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "dayToSecond"),
        Core.fieldTerm = Core.TermUnit}}))

temporalDurationQualifierYearToMonth :: Phantoms.TTerm Grammar.TemporalDurationQualifier
temporalDurationQualifierYearToMonth =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalDurationQualifier"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "yearToMonth"),
        Core.fieldTerm = Core.TermUnit}}))

temporalDurationType :: Phantoms.TTerm Grammar.TemporalDurationQualifier -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TemporalDurationType
temporalDurationType qualifier notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TemporalDurationType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "qualifier"),
          Core.fieldTerm = (Phantoms.unTTerm qualifier)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

temporalDurationTypeNotNull :: Phantoms.TTerm Grammar.TemporalDurationType -> Phantoms.TTerm Bool
temporalDurationTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TemporalDurationType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

temporalDurationTypeQualifier :: Phantoms.TTerm Grammar.TemporalDurationType -> Phantoms.TTerm Grammar.TemporalDurationQualifier
temporalDurationTypeQualifier x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TemporalDurationType"),
        Core.projectionField = (Core.Name "qualifier")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

temporalDurationTypeWithNotNull :: Phantoms.TTerm Grammar.TemporalDurationType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TemporalDurationType
temporalDurationTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TemporalDurationType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "qualifier"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TemporalDurationType"),
              Core.projectionField = (Core.Name "qualifier")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

temporalDurationTypeWithQualifier :: Phantoms.TTerm Grammar.TemporalDurationType -> Phantoms.TTerm Grammar.TemporalDurationQualifier -> Phantoms.TTerm Grammar.TemporalDurationType
temporalDurationTypeWithQualifier original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TemporalDurationType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "qualifier"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TemporalDurationType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

temporalInstantTypeDateType :: Phantoms.TTerm Grammar.DateType -> Phantoms.TTerm Grammar.TemporalInstantType
temporalInstantTypeDateType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalInstantType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "dateType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

temporalInstantTypeDatetimeType :: Phantoms.TTerm Grammar.DatetimeType -> Phantoms.TTerm Grammar.TemporalInstantType
temporalInstantTypeDatetimeType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalInstantType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "datetimeType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

temporalInstantTypeLocalDatetimeTypeChoice :: Phantoms.TTerm Grammar.LocalDatetimeTypeChoice -> Phantoms.TTerm Grammar.TemporalInstantType
temporalInstantTypeLocalDatetimeTypeChoice x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalInstantType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "localDatetimeTypeChoice"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

temporalInstantTypeLocalTimeTypeChoice :: Phantoms.TTerm Grammar.LocalTimeTypeChoice -> Phantoms.TTerm Grammar.TemporalInstantType
temporalInstantTypeLocalTimeTypeChoice x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalInstantType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "localTimeTypeChoice"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

temporalInstantTypeTimeType :: Phantoms.TTerm Grammar.TimeType -> Phantoms.TTerm Grammar.TemporalInstantType
temporalInstantTypeTimeType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalInstantType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "timeType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

temporalLiteralDate :: Phantoms.TTerm Grammar.DateLiteral -> Phantoms.TTerm Grammar.TemporalLiteral
temporalLiteralDate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "date"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

temporalLiteralDatetime :: Phantoms.TTerm Grammar.DatetimeLiteral -> Phantoms.TTerm Grammar.TemporalLiteral
temporalLiteralDatetime x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "datetime"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

temporalLiteralTime :: Phantoms.TTerm Grammar.TimeLiteral -> Phantoms.TTerm Grammar.TemporalLiteral
temporalLiteralTime x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "time"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

temporalTypeDurationType :: Phantoms.TTerm Grammar.TemporalDurationType -> Phantoms.TTerm Grammar.TemporalType
temporalTypeDurationType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "durationType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

temporalTypeInstantType :: Phantoms.TTerm Grammar.TemporalInstantType -> Phantoms.TTerm Grammar.TemporalType
temporalTypeInstantType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TemporalType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "instantType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

timeFunctionCurrentTime :: Phantoms.TTerm Grammar.TimeFunction
timeFunctionCurrentTime =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TimeFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "currentTime"),
        Core.fieldTerm = Core.TermUnit}}))

timeFunctionParametersRecordConstructor :: Phantoms.TTerm Grammar.RecordConstructor -> Phantoms.TTerm Grammar.TimeFunctionParameters
timeFunctionParametersRecordConstructor x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TimeFunctionParameters"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "recordConstructor"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

timeFunctionParametersTimeString :: Phantoms.TTerm Grammar.TimeString -> Phantoms.TTerm Grammar.TimeFunctionParameters
timeFunctionParametersTimeString x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TimeFunctionParameters"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "timeString"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

timeFunctionZonedTimeWithParams :: Phantoms.TTerm (Maybe Grammar.TimeFunctionParameters) -> Phantoms.TTerm Grammar.TimeFunction
timeFunctionZonedTimeWithParams x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TimeFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "zonedTimeWithParams"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

timeTypeTimeWithTimeZone :: Phantoms.TTerm Grammar.TimeWithTimeZoneType -> Phantoms.TTerm Grammar.TimeType
timeTypeTimeWithTimeZone x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TimeType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "timeWithTimeZone"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

timeTypeZonedTime :: Phantoms.TTerm Grammar.ZonedTimeType -> Phantoms.TTerm Grammar.TimeType
timeTypeZonedTime x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TimeType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "zonedTime"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

timeWithTimeZoneType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TimeWithTimeZoneType
timeWithTimeZoneType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TimeWithTimeZoneType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

timeWithTimeZoneTypeNotNull :: Phantoms.TTerm Grammar.TimeWithTimeZoneType -> Phantoms.TTerm Bool
timeWithTimeZoneTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TimeWithTimeZoneType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

timeWithTimeZoneTypeWithNotNull :: Phantoms.TTerm Grammar.TimeWithTimeZoneType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TimeWithTimeZoneType
timeWithTimeZoneTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TimeWithTimeZoneType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

timeWithoutTimeZoneType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TimeWithoutTimeZoneType
timeWithoutTimeZoneType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TimeWithoutTimeZoneType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

timeWithoutTimeZoneTypeNotNull :: Phantoms.TTerm Grammar.TimeWithoutTimeZoneType -> Phantoms.TTerm Bool
timeWithoutTimeZoneTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TimeWithoutTimeZoneType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

timeWithoutTimeZoneTypeWithNotNull :: Phantoms.TTerm Grammar.TimeWithoutTimeZoneType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TimeWithoutTimeZoneType
timeWithoutTimeZoneTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TimeWithoutTimeZoneType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

timestampWithTimeZoneType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TimestampWithTimeZoneType
timestampWithTimeZoneType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TimestampWithTimeZoneType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

timestampWithTimeZoneTypeNotNull :: Phantoms.TTerm Grammar.TimestampWithTimeZoneType -> Phantoms.TTerm Bool
timestampWithTimeZoneTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TimestampWithTimeZoneType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

timestampWithTimeZoneTypeWithNotNull :: Phantoms.TTerm Grammar.TimestampWithTimeZoneType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TimestampWithTimeZoneType
timestampWithTimeZoneTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TimestampWithTimeZoneType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

timestampWithoutTimeZoneType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TimestampWithoutTimeZoneType
timestampWithoutTimeZoneType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TimestampWithoutTimeZoneType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

timestampWithoutTimeZoneTypeNotNull :: Phantoms.TTerm Grammar.TimestampWithoutTimeZoneType -> Phantoms.TTerm Bool
timestampWithoutTimeZoneTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TimestampWithoutTimeZoneType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

timestampWithoutTimeZoneTypeWithNotNull :: Phantoms.TTerm Grammar.TimestampWithoutTimeZoneType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TimestampWithoutTimeZoneType
timestampWithoutTimeZoneTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TimestampWithoutTimeZoneType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

transactionAccessModeReadOnly :: Phantoms.TTerm Grammar.TransactionAccessMode
transactionAccessModeReadOnly =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TransactionAccessMode"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "readOnly"),
        Core.fieldTerm = Core.TermUnit}}))

transactionAccessModeReadWrite :: Phantoms.TTerm Grammar.TransactionAccessMode
transactionAccessModeReadWrite =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TransactionAccessMode"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "readWrite"),
        Core.fieldTerm = Core.TermUnit}}))

transactionActivityEnd :: Phantoms.TTerm Grammar.EndTransactionCommand -> Phantoms.TTerm Grammar.TransactionActivity
transactionActivityEnd x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TransactionActivity"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "end"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

transactionActivityProcedure :: Phantoms.TTerm Grammar.ProcedureAndMaybeEnd -> Phantoms.TTerm Grammar.TransactionActivity
transactionActivityProcedure x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TransactionActivity"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "procedure"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

transactionActivityStart :: Phantoms.TTerm Grammar.StartAndMaybeProcedureAndMaybeEnd -> Phantoms.TTerm Grammar.TransactionActivity
transactionActivityStart x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TransactionActivity"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "start"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

trigonometricFunction :: Phantoms.TTerm Grammar.TrigonometricFunctionName -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.TrigonometricFunction
trigonometricFunction name value =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrigonometricFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Phantoms.unTTerm name)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm value)}]}))

trigonometricFunctionName :: Phantoms.TTerm Grammar.TrigonometricFunction -> Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunction"),
        Core.projectionField = (Core.Name "name")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

trigonometricFunctionNameAcos :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameAcos =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "acos"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionNameAsin :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameAsin =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "asin"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionNameAtan :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameAtan =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "atan"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionNameCos :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameCos =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "cos"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionNameCosh :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameCosh =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "cosh"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionNameCot :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameCot =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "cot"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionNameDegrees :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameDegrees =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "degrees"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionNameRadians :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameRadians =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "radians"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionNameSin :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameSin =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "sin"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionNameSinh :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameSinh =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "sinh"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionNameTan :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameTan =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "tan"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionNameTanh :: Phantoms.TTerm Grammar.TrigonometricFunctionName
trigonometricFunctionNameTanh =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunctionName"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "tanh"),
        Core.fieldTerm = Core.TermUnit}}))

trigonometricFunctionValue :: Phantoms.TTerm Grammar.TrigonometricFunction -> Phantoms.TTerm Grammar.NumericValueExpression
trigonometricFunctionValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunction"),
        Core.projectionField = (Core.Name "value")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

trigonometricFunctionWithName :: Phantoms.TTerm Grammar.TrigonometricFunction -> Phantoms.TTerm Grammar.TrigonometricFunctionName -> Phantoms.TTerm Grammar.TrigonometricFunction
trigonometricFunctionWithName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrigonometricFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunction"),
              Core.projectionField = (Core.Name "value")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

trigonometricFunctionWithValue :: Phantoms.TTerm Grammar.TrigonometricFunction -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.TrigonometricFunction
trigonometricFunctionWithValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrigonometricFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrigonometricFunction"),
              Core.projectionField = (Core.Name "name")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "value"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

trimListFunction :: Phantoms.TTerm Grammar.ListValueExpression -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.TrimListFunction
trimListFunction listValue numericValue =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrimListFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "listValue"),
          Core.fieldTerm = (Phantoms.unTTerm listValue)},
        Core.Field {
          Core.fieldName = (Core.Name "numericValue"),
          Core.fieldTerm = (Phantoms.unTTerm numericValue)}]}))

trimListFunctionListValue :: Phantoms.TTerm Grammar.TrimListFunction -> Phantoms.TTerm Grammar.ListValueExpression
trimListFunctionListValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TrimListFunction"),
        Core.projectionField = (Core.Name "listValue")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

trimListFunctionNumericValue :: Phantoms.TTerm Grammar.TrimListFunction -> Phantoms.TTerm Grammar.NumericValueExpression
trimListFunctionNumericValue x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TrimListFunction"),
        Core.projectionField = (Core.Name "numericValue")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

trimListFunctionWithListValue :: Phantoms.TTerm Grammar.TrimListFunction -> Phantoms.TTerm Grammar.ListValueExpression -> Phantoms.TTerm Grammar.TrimListFunction
trimListFunctionWithListValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrimListFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "listValue"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "numericValue"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimListFunction"),
              Core.projectionField = (Core.Name "numericValue")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

trimListFunctionWithNumericValue :: Phantoms.TTerm Grammar.TrimListFunction -> Phantoms.TTerm Grammar.NumericValueExpression -> Phantoms.TTerm Grammar.TrimListFunction
trimListFunctionWithNumericValue original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrimListFunction"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "listValue"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimListFunction"),
              Core.projectionField = (Core.Name "listValue")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "numericValue"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

trimMultiCharacterCharacterString :: Phantoms.TTerm Grammar.TrimType -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm (Maybe Grammar.ValueExpression) -> Phantoms.TTerm Grammar.TrimMultiCharacterCharacterString
trimMultiCharacterCharacterString trimType valueExpression optionalValueExpression =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "trimType"),
          Core.fieldTerm = (Phantoms.unTTerm trimType)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "optionalValueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm optionalValueExpression)}]}))

trimMultiCharacterCharacterStringOptionalValueExpression :: Phantoms.TTerm Grammar.TrimMultiCharacterCharacterString -> Phantoms.TTerm (Maybe Grammar.ValueExpression)
trimMultiCharacterCharacterStringOptionalValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
        Core.projectionField = (Core.Name "optionalValueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

trimMultiCharacterCharacterStringTrimType :: Phantoms.TTerm Grammar.TrimMultiCharacterCharacterString -> Phantoms.TTerm Grammar.TrimType
trimMultiCharacterCharacterStringTrimType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
        Core.projectionField = (Core.Name "trimType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

trimMultiCharacterCharacterStringValueExpression :: Phantoms.TTerm Grammar.TrimMultiCharacterCharacterString -> Phantoms.TTerm Grammar.ValueExpression
trimMultiCharacterCharacterStringValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

trimMultiCharacterCharacterStringWithOptionalValueExpression :: Phantoms.TTerm Grammar.TrimMultiCharacterCharacterString -> Phantoms.TTerm (Maybe Grammar.ValueExpression) -> Phantoms.TTerm Grammar.TrimMultiCharacterCharacterString
trimMultiCharacterCharacterStringWithOptionalValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "trimType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
              Core.projectionField = (Core.Name "trimType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "optionalValueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

trimMultiCharacterCharacterStringWithTrimType :: Phantoms.TTerm Grammar.TrimMultiCharacterCharacterString -> Phantoms.TTerm Grammar.TrimType -> Phantoms.TTerm Grammar.TrimMultiCharacterCharacterString
trimMultiCharacterCharacterStringWithTrimType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "trimType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "optionalValueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
              Core.projectionField = (Core.Name "optionalValueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

trimMultiCharacterCharacterStringWithValueExpression :: Phantoms.TTerm Grammar.TrimMultiCharacterCharacterString -> Phantoms.TTerm Grammar.ValueExpression -> Phantoms.TTerm Grammar.TrimMultiCharacterCharacterString
trimMultiCharacterCharacterStringWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "trimType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
              Core.projectionField = (Core.Name "trimType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "optionalValueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"),
              Core.projectionField = (Core.Name "optionalValueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

trimOperands :: Phantoms.TTerm (Maybe Grammar.TrimSpecification) -> Phantoms.TTerm (Maybe Grammar.TrimCharacterOrByteString) -> Phantoms.TTerm Grammar.TrimCharacterOrByteStringSource -> Phantoms.TTerm Grammar.TrimOperands
trimOperands specification characterOrByteString source =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrimOperands"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "specification"),
          Core.fieldTerm = (Phantoms.unTTerm specification)},
        Core.Field {
          Core.fieldName = (Core.Name "characterOrByteString"),
          Core.fieldTerm = (Phantoms.unTTerm characterOrByteString)},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm source)}]}))

trimOperandsCharacterOrByteString :: Phantoms.TTerm Grammar.TrimOperands -> Phantoms.TTerm (Maybe Grammar.TrimCharacterOrByteString)
trimOperandsCharacterOrByteString x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TrimOperands"),
        Core.projectionField = (Core.Name "characterOrByteString")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

trimOperandsSource :: Phantoms.TTerm Grammar.TrimOperands -> Phantoms.TTerm Grammar.TrimCharacterOrByteStringSource
trimOperandsSource x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TrimOperands"),
        Core.projectionField = (Core.Name "source")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

trimOperandsSpecification :: Phantoms.TTerm Grammar.TrimOperands -> Phantoms.TTerm (Maybe Grammar.TrimSpecification)
trimOperandsSpecification x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TrimOperands"),
        Core.projectionField = (Core.Name "specification")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

trimOperandsWithCharacterOrByteString :: Phantoms.TTerm Grammar.TrimOperands -> Phantoms.TTerm (Maybe Grammar.TrimCharacterOrByteString) -> Phantoms.TTerm Grammar.TrimOperands
trimOperandsWithCharacterOrByteString original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrimOperands"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "specification"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimOperands"),
              Core.projectionField = (Core.Name "specification")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "characterOrByteString"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimOperands"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

trimOperandsWithSource :: Phantoms.TTerm Grammar.TrimOperands -> Phantoms.TTerm Grammar.TrimCharacterOrByteStringSource -> Phantoms.TTerm Grammar.TrimOperands
trimOperandsWithSource original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrimOperands"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "specification"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimOperands"),
              Core.projectionField = (Core.Name "specification")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "characterOrByteString"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimOperands"),
              Core.projectionField = (Core.Name "characterOrByteString")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

trimOperandsWithSpecification :: Phantoms.TTerm Grammar.TrimOperands -> Phantoms.TTerm (Maybe Grammar.TrimSpecification) -> Phantoms.TTerm Grammar.TrimOperands
trimOperandsWithSpecification original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TrimOperands"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "specification"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "characterOrByteString"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimOperands"),
              Core.projectionField = (Core.Name "characterOrByteString")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "source"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TrimOperands"),
              Core.projectionField = (Core.Name "source")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

trimSpecificationBoth :: Phantoms.TTerm Grammar.TrimSpecification
trimSpecificationBoth =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrimSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "both"),
        Core.fieldTerm = Core.TermUnit}}))

trimSpecificationLeading :: Phantoms.TTerm Grammar.TrimSpecification
trimSpecificationLeading =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrimSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "leading"),
        Core.fieldTerm = Core.TermUnit}}))

trimSpecificationTrailing :: Phantoms.TTerm Grammar.TrimSpecification
trimSpecificationTrailing =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrimSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "trailing"),
        Core.fieldTerm = Core.TermUnit}}))

trimTypeBtrim :: Phantoms.TTerm Grammar.TrimType
trimTypeBtrim =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrimType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "btrim"),
        Core.fieldTerm = Core.TermUnit}}))

trimTypeLtrim :: Phantoms.TTerm Grammar.TrimType
trimTypeLtrim =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrimType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "ltrim"),
        Core.fieldTerm = Core.TermUnit}}))

trimTypeRtrim :: Phantoms.TTerm Grammar.TrimType
trimTypeRtrim =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.TrimType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "rtrim"),
        Core.fieldTerm = Core.TermUnit}}))

typedBindingTableReferenceValueType :: Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.BindingTableReferenceValueType -> Phantoms.TTerm Grammar.TypedBindingTableReferenceValueType
typedBindingTableReferenceValueType typed valueType =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedBindingTableReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm typed)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm valueType)}]}))

typedBindingTableReferenceValueTypeTyped :: Phantoms.TTerm Grammar.TypedBindingTableReferenceValueType -> Phantoms.TTerm (Maybe Grammar.Typed)
typedBindingTableReferenceValueTypeTyped x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TypedBindingTableReferenceValueType"),
        Core.projectionField = (Core.Name "typed")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

typedBindingTableReferenceValueTypeValueType :: Phantoms.TTerm Grammar.TypedBindingTableReferenceValueType -> Phantoms.TTerm Grammar.BindingTableReferenceValueType
typedBindingTableReferenceValueTypeValueType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TypedBindingTableReferenceValueType"),
        Core.projectionField = (Core.Name "valueType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

typedBindingTableReferenceValueTypeWithTyped :: Phantoms.TTerm Grammar.TypedBindingTableReferenceValueType -> Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.TypedBindingTableReferenceValueType
typedBindingTableReferenceValueTypeWithTyped original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedBindingTableReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedBindingTableReferenceValueType"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

typedBindingTableReferenceValueTypeWithValueType :: Phantoms.TTerm Grammar.TypedBindingTableReferenceValueType -> Phantoms.TTerm Grammar.BindingTableReferenceValueType -> Phantoms.TTerm Grammar.TypedBindingTableReferenceValueType
typedBindingTableReferenceValueTypeWithValueType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedBindingTableReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedBindingTableReferenceValueType"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

typedGraphReferenceValueType :: Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.GraphReferenceValueType -> Phantoms.TTerm Grammar.TypedGraphReferenceValueType
typedGraphReferenceValueType typed valueType =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedGraphReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm typed)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm valueType)}]}))

typedGraphReferenceValueTypeTyped :: Phantoms.TTerm Grammar.TypedGraphReferenceValueType -> Phantoms.TTerm (Maybe Grammar.Typed)
typedGraphReferenceValueTypeTyped x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TypedGraphReferenceValueType"),
        Core.projectionField = (Core.Name "typed")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

typedGraphReferenceValueTypeValueType :: Phantoms.TTerm Grammar.TypedGraphReferenceValueType -> Phantoms.TTerm Grammar.GraphReferenceValueType
typedGraphReferenceValueTypeValueType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TypedGraphReferenceValueType"),
        Core.projectionField = (Core.Name "valueType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

typedGraphReferenceValueTypeWithTyped :: Phantoms.TTerm Grammar.TypedGraphReferenceValueType -> Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.TypedGraphReferenceValueType
typedGraphReferenceValueTypeWithTyped original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedGraphReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedGraphReferenceValueType"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

typedGraphReferenceValueTypeWithValueType :: Phantoms.TTerm Grammar.TypedGraphReferenceValueType -> Phantoms.TTerm Grammar.GraphReferenceValueType -> Phantoms.TTerm Grammar.TypedGraphReferenceValueType
typedGraphReferenceValueTypeWithValueType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedGraphReferenceValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedGraphReferenceValueType"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

typedGraphTypeReference :: Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.GraphTypeReference -> Phantoms.TTerm Grammar.TypedGraphTypeReference
typedGraphTypeReference typed reference =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedGraphTypeReference"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm typed)},
        Core.Field {
          Core.fieldName = (Core.Name "reference"),
          Core.fieldTerm = (Phantoms.unTTerm reference)}]}))

typedGraphTypeReferenceReference :: Phantoms.TTerm Grammar.TypedGraphTypeReference -> Phantoms.TTerm Grammar.GraphTypeReference
typedGraphTypeReferenceReference x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TypedGraphTypeReference"),
        Core.projectionField = (Core.Name "reference")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

typedGraphTypeReferenceTyped :: Phantoms.TTerm Grammar.TypedGraphTypeReference -> Phantoms.TTerm (Maybe Grammar.Typed)
typedGraphTypeReferenceTyped x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TypedGraphTypeReference"),
        Core.projectionField = (Core.Name "typed")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

typedGraphTypeReferenceWithReference :: Phantoms.TTerm Grammar.TypedGraphTypeReference -> Phantoms.TTerm Grammar.GraphTypeReference -> Phantoms.TTerm Grammar.TypedGraphTypeReference
typedGraphTypeReferenceWithReference original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedGraphTypeReference"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedGraphTypeReference"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "reference"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

typedGraphTypeReferenceWithTyped :: Phantoms.TTerm Grammar.TypedGraphTypeReference -> Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.TypedGraphTypeReference
typedGraphTypeReferenceWithTyped original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedGraphTypeReference"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "reference"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedGraphTypeReference"),
              Core.projectionField = (Core.Name "reference")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

typedNestedGraphTypeSpecification :: Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.NestedGraphTypeSpecification -> Phantoms.TTerm Grammar.TypedNestedGraphTypeSpecification
typedNestedGraphTypeSpecification typed graph specification =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm typed)},
        Core.Field {
          Core.fieldName = (Core.Name "graph"),
          Core.fieldTerm = (Phantoms.unTTerm graph)},
        Core.Field {
          Core.fieldName = (Core.Name "specification"),
          Core.fieldTerm = (Phantoms.unTTerm specification)}]}))

typedNestedGraphTypeSpecificationGraph :: Phantoms.TTerm Grammar.TypedNestedGraphTypeSpecification -> Phantoms.TTerm Bool
typedNestedGraphTypeSpecificationGraph x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
        Core.projectionField = (Core.Name "graph")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

typedNestedGraphTypeSpecificationSpecification :: Phantoms.TTerm Grammar.TypedNestedGraphTypeSpecification -> Phantoms.TTerm Grammar.NestedGraphTypeSpecification
typedNestedGraphTypeSpecificationSpecification x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
        Core.projectionField = (Core.Name "specification")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

typedNestedGraphTypeSpecificationTyped :: Phantoms.TTerm Grammar.TypedNestedGraphTypeSpecification -> Phantoms.TTerm (Maybe Grammar.Typed)
typedNestedGraphTypeSpecificationTyped x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
        Core.projectionField = (Core.Name "typed")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

typedNestedGraphTypeSpecificationWithGraph :: Phantoms.TTerm Grammar.TypedNestedGraphTypeSpecification -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.TypedNestedGraphTypeSpecification
typedNestedGraphTypeSpecificationWithGraph original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "graph"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "specification"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
              Core.projectionField = (Core.Name "specification")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

typedNestedGraphTypeSpecificationWithSpecification :: Phantoms.TTerm Grammar.TypedNestedGraphTypeSpecification -> Phantoms.TTerm Grammar.NestedGraphTypeSpecification -> Phantoms.TTerm Grammar.TypedNestedGraphTypeSpecification
typedNestedGraphTypeSpecificationWithSpecification original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "graph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
              Core.projectionField = (Core.Name "graph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "specification"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

typedNestedGraphTypeSpecificationWithTyped :: Phantoms.TTerm Grammar.TypedNestedGraphTypeSpecification -> Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.TypedNestedGraphTypeSpecification
typedNestedGraphTypeSpecificationWithTyped original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "graph"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
              Core.projectionField = (Core.Name "graph")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "specification"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"),
              Core.projectionField = (Core.Name "specification")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

typedValueType :: Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.ValueType -> Phantoms.TTerm Grammar.TypedValueType
typedValueType typed valueType =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm typed)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm valueType)}]}))

typedValueTypeTyped :: Phantoms.TTerm Grammar.TypedValueType -> Phantoms.TTerm (Maybe Grammar.Typed)
typedValueTypeTyped x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TypedValueType"),
        Core.projectionField = (Core.Name "typed")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

typedValueTypeValueType :: Phantoms.TTerm Grammar.TypedValueType -> Phantoms.TTerm Grammar.ValueType
typedValueTypeValueType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.TypedValueType"),
        Core.projectionField = (Core.Name "valueType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

typedValueTypeWithTyped :: Phantoms.TTerm Grammar.TypedValueType -> Phantoms.TTerm (Maybe Grammar.Typed) -> Phantoms.TTerm Grammar.TypedValueType
typedValueTypeWithTyped original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedValueType"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

typedValueTypeWithValueType :: Phantoms.TTerm Grammar.TypedValueType -> Phantoms.TTerm Grammar.ValueType -> Phantoms.TTerm Grammar.TypedValueType
typedValueTypeWithValueType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.TypedValueType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.TypedValueType"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

uBigIntType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.UBigIntType
uBigIntType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.UBigIntType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

uBigIntTypeNotNull :: Phantoms.TTerm Grammar.UBigIntType -> Phantoms.TTerm Bool
uBigIntTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.UBigIntType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

uBigIntTypeWithNotNull :: Phantoms.TTerm Grammar.UBigIntType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.UBigIntType
uBigIntTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.UBigIntType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

uSmallIntType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.USmallIntType
uSmallIntType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.USmallIntType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

uSmallIntTypeNotNull :: Phantoms.TTerm Grammar.USmallIntType -> Phantoms.TTerm Bool
uSmallIntTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.USmallIntType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

uSmallIntTypeWithNotNull :: Phantoms.TTerm Grammar.USmallIntType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.USmallIntType
uSmallIntTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.USmallIntType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

uint128Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint128Type
uint128Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint128Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

uint128TypeNotNull :: Phantoms.TTerm Grammar.Uint128Type -> Phantoms.TTerm Bool
uint128TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Uint128Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

uint128TypeWithNotNull :: Phantoms.TTerm Grammar.Uint128Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint128Type
uint128TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint128Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

uint16Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint16Type
uint16Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint16Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

uint16TypeNotNull :: Phantoms.TTerm Grammar.Uint16Type -> Phantoms.TTerm Bool
uint16TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Uint16Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

uint16TypeWithNotNull :: Phantoms.TTerm Grammar.Uint16Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint16Type
uint16TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint16Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

uint256Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint256Type
uint256Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint256Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

uint256TypeNotNull :: Phantoms.TTerm Grammar.Uint256Type -> Phantoms.TTerm Bool
uint256TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Uint256Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

uint256TypeWithNotNull :: Phantoms.TTerm Grammar.Uint256Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint256Type
uint256TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint256Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

uint32Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint32Type
uint32Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint32Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

uint32TypeNotNull :: Phantoms.TTerm Grammar.Uint32Type -> Phantoms.TTerm Bool
uint32TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Uint32Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

uint32TypeWithNotNull :: Phantoms.TTerm Grammar.Uint32Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint32Type
uint32TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint32Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

uint64Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint64Type
uint64Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint64Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

uint64TypeNotNull :: Phantoms.TTerm Grammar.Uint64Type -> Phantoms.TTerm Bool
uint64TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Uint64Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

uint64TypeWithNotNull :: Phantoms.TTerm Grammar.Uint64Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint64Type
uint64TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint64Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

uint8Type :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint8Type
uint8Type notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint8Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

uint8TypeNotNull :: Phantoms.TTerm Grammar.Uint8Type -> Phantoms.TTerm Bool
uint8TypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.Uint8Type"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

uint8TypeWithNotNull :: Phantoms.TTerm Grammar.Uint8Type -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Uint8Type
uint8TypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.Uint8Type"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

uintWithPrecision :: Phantoms.TTerm (Maybe Grammar.Precision) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.UintWithPrecision
uintWithPrecision precision notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.UintWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Phantoms.unTTerm precision)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

uintWithPrecisionNotNull :: Phantoms.TTerm Grammar.UintWithPrecision -> Phantoms.TTerm Bool
uintWithPrecisionNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.UintWithPrecision"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

uintWithPrecisionPrecision :: Phantoms.TTerm Grammar.UintWithPrecision -> Phantoms.TTerm (Maybe Grammar.Precision)
uintWithPrecisionPrecision x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.UintWithPrecision"),
        Core.projectionField = (Core.Name "precision")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

uintWithPrecisionWithNotNull :: Phantoms.TTerm Grammar.UintWithPrecision -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.UintWithPrecision
uintWithPrecisionWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.UintWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.UintWithPrecision"),
              Core.projectionField = (Core.Name "precision")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

uintWithPrecisionWithPrecision :: Phantoms.TTerm Grammar.UintWithPrecision -> Phantoms.TTerm (Maybe Grammar.Precision) -> Phantoms.TTerm Grammar.UintWithPrecision
uintWithPrecisionWithPrecision original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.UintWithPrecision"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "precision"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.UintWithPrecision"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

unsignedBinaryExactNumericTypeUBigInt :: Phantoms.TTerm Grammar.UBigIntType -> Phantoms.TTerm Grammar.UnsignedBinaryExactNumericType
unsignedBinaryExactNumericTypeUBigInt x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "uBigInt"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedBinaryExactNumericTypeUSmallInt :: Phantoms.TTerm Grammar.USmallIntType -> Phantoms.TTerm Grammar.UnsignedBinaryExactNumericType
unsignedBinaryExactNumericTypeUSmallInt x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "uSmallInt"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedBinaryExactNumericTypeUint128 :: Phantoms.TTerm Grammar.Uint128Type -> Phantoms.TTerm Grammar.UnsignedBinaryExactNumericType
unsignedBinaryExactNumericTypeUint128 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "uint128"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedBinaryExactNumericTypeUint16 :: Phantoms.TTerm Grammar.Uint16Type -> Phantoms.TTerm Grammar.UnsignedBinaryExactNumericType
unsignedBinaryExactNumericTypeUint16 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "uint16"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedBinaryExactNumericTypeUint256 :: Phantoms.TTerm Grammar.Uint256Type -> Phantoms.TTerm Grammar.UnsignedBinaryExactNumericType
unsignedBinaryExactNumericTypeUint256 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "uint256"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedBinaryExactNumericTypeUint32 :: Phantoms.TTerm Grammar.Uint32Type -> Phantoms.TTerm Grammar.UnsignedBinaryExactNumericType
unsignedBinaryExactNumericTypeUint32 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "uint32"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedBinaryExactNumericTypeUint64 :: Phantoms.TTerm Grammar.Uint64Type -> Phantoms.TTerm Grammar.UnsignedBinaryExactNumericType
unsignedBinaryExactNumericTypeUint64 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "uint64"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedBinaryExactNumericTypeUint8 :: Phantoms.TTerm Grammar.Uint8Type -> Phantoms.TTerm Grammar.UnsignedBinaryExactNumericType
unsignedBinaryExactNumericTypeUint8 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "uint8"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedBinaryExactNumericTypeUintWithPrecision :: Phantoms.TTerm Grammar.UintWithPrecision -> Phantoms.TTerm Grammar.UnsignedBinaryExactNumericType
unsignedBinaryExactNumericTypeUintWithPrecision x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "uintWithPrecision"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedBinaryExactNumericTypeUnsigned :: Phantoms.TTerm Grammar.VerboseBinaryExactNumericType -> Phantoms.TTerm Grammar.UnsignedBinaryExactNumericType
unsignedBinaryExactNumericTypeUnsigned x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "unsigned"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedIntegerBinary :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.UnsignedInteger
unsignedIntegerBinary x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedInteger"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "binary"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedIntegerDecimal :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.UnsignedInteger
unsignedIntegerDecimal x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedInteger"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "decimal"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedIntegerHexadecimal :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.UnsignedInteger
unsignedIntegerHexadecimal x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedInteger"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "hexadecimal"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedIntegerOctal :: Phantoms.TTerm String -> Phantoms.TTerm Grammar.UnsignedInteger
unsignedIntegerOctal x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedInteger"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "octal"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedLiteralGeneral :: Phantoms.TTerm Grammar.GeneralLiteral -> Phantoms.TTerm Grammar.UnsignedLiteral
unsignedLiteralGeneral x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "general"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedLiteralNumeric :: Phantoms.TTerm Grammar.UnsignedNumericLiteral -> Phantoms.TTerm Grammar.UnsignedLiteral
unsignedLiteralNumeric x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "numeric"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedNumericLiteralApproximate :: Phantoms.TTerm Grammar.ApproximateNumericLiteral -> Phantoms.TTerm Grammar.UnsignedNumericLiteral
unsignedNumericLiteralApproximate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedNumericLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "approximate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedNumericLiteralExact :: Phantoms.TTerm Grammar.ExactNumericLiteral -> Phantoms.TTerm Grammar.UnsignedNumericLiteral
unsignedNumericLiteralExact x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedNumericLiteral"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "exact"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedValueSpecificationGeneralValueSpecification :: Phantoms.TTerm Grammar.GeneralValueSpecification -> Phantoms.TTerm Grammar.UnsignedValueSpecification
unsignedValueSpecificationGeneralValueSpecification x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedValueSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "generalValueSpecification"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

unsignedValueSpecificationUnsignedLiteral :: Phantoms.TTerm Grammar.UnsignedLiteral -> Phantoms.TTerm Grammar.UnsignedValueSpecification
unsignedValueSpecificationUnsignedLiteral x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.UnsignedValueSpecification"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "unsignedLiteral"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionAddSubtract :: Phantoms.TTerm Grammar.AddSubtractExpr -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionAddSubtract x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "addSubtract"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionBindingTable :: Phantoms.TTerm Grammar.BindingTableExpression -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionBindingTable x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "bindingTable"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionComparison :: Phantoms.TTerm Grammar.ComparisonExpr -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionComparison x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "comparison"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionConcatenation :: Phantoms.TTerm Grammar.ConcatenationExpr -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionConcatenation x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "concatenation"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionConjunctive :: Phantoms.TTerm Grammar.ConjunctiveExpr -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionConjunctive x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "conjunctive"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionDisjunctive :: Phantoms.TTerm Grammar.DisjunctiveExpr -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionDisjunctive x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "disjunctive"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionIsNot :: Phantoms.TTerm Grammar.IsNotExpr -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionIsNot x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "isNot"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionMultDiv :: Phantoms.TTerm Grammar.MultDivExpr -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionMultDiv x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "multDiv"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionNormalizedPredicate :: Phantoms.TTerm Grammar.NormalizedPredicateExpr -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionNormalizedPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "normalizedPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionNot :: Phantoms.TTerm Grammar.NotExpr -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionNot x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "not"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionPredicate :: Phantoms.TTerm Grammar.Predicate -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "predicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionPrimary :: Phantoms.TTerm Grammar.PrimaryValueExpression -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionPrimary x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "primary"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionPropertyGraph :: Phantoms.TTerm Grammar.GraphExpression -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionPropertyGraph x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "propertyGraph"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionSigned :: Phantoms.TTerm Grammar.SignedExpr -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionSigned x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "signed"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueExpressionValueFunction :: Phantoms.TTerm Grammar.ValueFunction -> Phantoms.TTerm Grammar.ValueExpression
valueExpressionValueFunction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueExpression"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "valueFunction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueFunctionCharacterOrByteString :: Phantoms.TTerm Grammar.CharacterOrByteStringFunction -> Phantoms.TTerm Grammar.ValueFunction
valueFunctionCharacterOrByteString x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "characterOrByteString"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueFunctionDatetime :: Phantoms.TTerm Grammar.DatetimeValueFunction -> Phantoms.TTerm Grammar.ValueFunction
valueFunctionDatetime x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "datetime"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueFunctionDatetimeSubtraction :: Phantoms.TTerm Grammar.DatetimeSubtraction -> Phantoms.TTerm Grammar.ValueFunction
valueFunctionDatetimeSubtraction x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "datetimeSubtraction"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueFunctionDuration :: Phantoms.TTerm Grammar.DurationValueFunction -> Phantoms.TTerm Grammar.ValueFunction
valueFunctionDuration x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "duration"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueFunctionList :: Phantoms.TTerm Grammar.ListValueFunction -> Phantoms.TTerm Grammar.ValueFunction
valueFunctionList x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "list"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueFunctionNumeric :: Phantoms.TTerm Grammar.NumericValueFunction -> Phantoms.TTerm Grammar.ValueFunction
valueFunctionNumeric x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueFunction"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "numeric"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueTypeClosedDynamicUnionTypeAlt1 :: Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt1 -> Phantoms.TTerm Grammar.ValueType
valueTypeClosedDynamicUnionTypeAlt1 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "closedDynamicUnionTypeAlt1"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueTypeClosedDynamicUnionTypeAlt2 :: Phantoms.TTerm Grammar.ClosedDynamicUnionTypeAlt2 -> Phantoms.TTerm Grammar.ValueType
valueTypeClosedDynamicUnionTypeAlt2 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "closedDynamicUnionTypeAlt2"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueTypeDynamicPropertyValueType :: Phantoms.TTerm Grammar.DynamicPropertyValueType -> Phantoms.TTerm Grammar.ValueType
valueTypeDynamicPropertyValueType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "dynamicPropertyValueType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueTypeListValueTypeAlt1 :: Phantoms.TTerm Grammar.ListValueTypeAlt1 -> Phantoms.TTerm Grammar.ValueType
valueTypeListValueTypeAlt1 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "listValueTypeAlt1"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueTypeListValueTypeAlt2 :: Phantoms.TTerm Grammar.ListValueTypeAlt2 -> Phantoms.TTerm Grammar.ValueType
valueTypeListValueTypeAlt2 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "listValueTypeAlt2"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueTypeListValueTypeAlt3 :: Phantoms.TTerm Grammar.ListValueTypeAlt3 -> Phantoms.TTerm Grammar.ValueType
valueTypeListValueTypeAlt3 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "listValueTypeAlt3"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueTypeOpenDynamicUnionType :: Phantoms.TTerm Grammar.OpenDynamicUnionType -> Phantoms.TTerm Grammar.ValueType
valueTypeOpenDynamicUnionType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "openDynamicUnionType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueTypePathValueType :: Phantoms.TTerm Grammar.PathValueType -> Phantoms.TTerm Grammar.ValueType
valueTypePathValueType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "pathValueType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueTypePredefinedType :: Phantoms.TTerm Grammar.PredefinedType -> Phantoms.TTerm Grammar.ValueType
valueTypePredefinedType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "predefinedType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueTypePredicate :: Phantoms.TTerm Grammar.PrimaryValueExpression -> Phantoms.TTerm Grammar.ValueTypePredicatePart2 -> Phantoms.TTerm Grammar.ValueTypePredicate
valueTypePredicate valueExpression valueTypePart =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ValueTypePredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm valueExpression)},
        Core.Field {
          Core.fieldName = (Core.Name "valueTypePart"),
          Core.fieldTerm = (Phantoms.unTTerm valueTypePart)}]}))

valueTypePredicatePart2 :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.Typed -> Phantoms.TTerm Grammar.ValueType -> Phantoms.TTerm Grammar.ValueTypePredicatePart2
valueTypePredicatePart2 not typed valueType =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm not)},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm typed)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm valueType)}]}))

valueTypePredicatePart2Not :: Phantoms.TTerm Grammar.ValueTypePredicatePart2 -> Phantoms.TTerm Bool
valueTypePredicatePart2Not x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
        Core.projectionField = (Core.Name "not")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

valueTypePredicatePart2Typed :: Phantoms.TTerm Grammar.ValueTypePredicatePart2 -> Phantoms.TTerm Grammar.Typed
valueTypePredicatePart2Typed x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
        Core.projectionField = (Core.Name "typed")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

valueTypePredicatePart2ValueType :: Phantoms.TTerm Grammar.ValueTypePredicatePart2 -> Phantoms.TTerm Grammar.ValueType
valueTypePredicatePart2ValueType x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
        Core.projectionField = (Core.Name "valueType")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

valueTypePredicatePart2WithNot :: Phantoms.TTerm Grammar.ValueTypePredicatePart2 -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ValueTypePredicatePart2
valueTypePredicatePart2WithNot original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

valueTypePredicatePart2WithTyped :: Phantoms.TTerm Grammar.ValueTypePredicatePart2 -> Phantoms.TTerm Grammar.Typed -> Phantoms.TTerm Grammar.ValueTypePredicatePart2
valueTypePredicatePart2WithTyped original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
              Core.projectionField = (Core.Name "not")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
              Core.projectionField = (Core.Name "valueType")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

valueTypePredicatePart2WithValueType :: Phantoms.TTerm Grammar.ValueTypePredicatePart2 -> Phantoms.TTerm Grammar.ValueType -> Phantoms.TTerm Grammar.ValueTypePredicatePart2
valueTypePredicatePart2WithValueType original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "not"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
              Core.projectionField = (Core.Name "not")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "typed"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicatePart2"),
              Core.projectionField = (Core.Name "typed")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueType"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

valueTypePredicateValueExpression :: Phantoms.TTerm Grammar.ValueTypePredicate -> Phantoms.TTerm Grammar.PrimaryValueExpression
valueTypePredicateValueExpression x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicate"),
        Core.projectionField = (Core.Name "valueExpression")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

valueTypePredicateValueTypePart :: Phantoms.TTerm Grammar.ValueTypePredicate -> Phantoms.TTerm Grammar.ValueTypePredicatePart2
valueTypePredicateValueTypePart x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicate"),
        Core.projectionField = (Core.Name "valueTypePart")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

valueTypePredicateWithValueExpression :: Phantoms.TTerm Grammar.ValueTypePredicate -> Phantoms.TTerm Grammar.PrimaryValueExpression -> Phantoms.TTerm Grammar.ValueTypePredicate
valueTypePredicateWithValueExpression original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ValueTypePredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "valueTypePart"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicate"),
              Core.projectionField = (Core.Name "valueTypePart")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

valueTypePredicateWithValueTypePart :: Phantoms.TTerm Grammar.ValueTypePredicate -> Phantoms.TTerm Grammar.ValueTypePredicatePart2 -> Phantoms.TTerm Grammar.ValueTypePredicate
valueTypePredicateWithValueTypePart original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ValueTypePredicate"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "valueExpression"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ValueTypePredicate"),
              Core.projectionField = (Core.Name "valueExpression")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "valueTypePart"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

valueTypeRecordType :: Phantoms.TTerm Grammar.RecordType -> Phantoms.TTerm Grammar.ValueType
valueTypeRecordType x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.ValueType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "recordType"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

valueVariableDefinition :: Phantoms.TTerm Grammar.BindingVariable -> Phantoms.TTerm Grammar.OptTypedValueInitializer -> Phantoms.TTerm Grammar.ValueVariableDefinition
valueVariableDefinition variable initializer =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ValueVariableDefinition"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm variable)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm initializer)}]}))

valueVariableDefinitionInitializer :: Phantoms.TTerm Grammar.ValueVariableDefinition -> Phantoms.TTerm Grammar.OptTypedValueInitializer
valueVariableDefinitionInitializer x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ValueVariableDefinition"),
        Core.projectionField = (Core.Name "initializer")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

valueVariableDefinitionVariable :: Phantoms.TTerm Grammar.ValueVariableDefinition -> Phantoms.TTerm Grammar.BindingVariable
valueVariableDefinitionVariable x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ValueVariableDefinition"),
        Core.projectionField = (Core.Name "variable")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

valueVariableDefinitionWithInitializer :: Phantoms.TTerm Grammar.ValueVariableDefinition -> Phantoms.TTerm Grammar.OptTypedValueInitializer -> Phantoms.TTerm Grammar.ValueVariableDefinition
valueVariableDefinitionWithInitializer original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ValueVariableDefinition"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ValueVariableDefinition"),
              Core.projectionField = (Core.Name "variable")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

valueVariableDefinitionWithVariable :: Phantoms.TTerm Grammar.ValueVariableDefinition -> Phantoms.TTerm Grammar.BindingVariable -> Phantoms.TTerm Grammar.ValueVariableDefinition
valueVariableDefinitionWithVariable original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ValueVariableDefinition"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "variable"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "initializer"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.ValueVariableDefinition"),
              Core.projectionField = (Core.Name "initializer")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

varbinaryType :: Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.VarbinaryType
varbinaryType maxLength notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.VarbinaryType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm maxLength)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

varbinaryTypeMaxLength :: Phantoms.TTerm Grammar.VarbinaryType -> Phantoms.TTerm (Maybe Grammar.MaxLength)
varbinaryTypeMaxLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.VarbinaryType"),
        Core.projectionField = (Core.Name "maxLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

varbinaryTypeNotNull :: Phantoms.TTerm Grammar.VarbinaryType -> Phantoms.TTerm Bool
varbinaryTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.VarbinaryType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

varbinaryTypeWithMaxLength :: Phantoms.TTerm Grammar.VarbinaryType -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Grammar.VarbinaryType
varbinaryTypeWithMaxLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.VarbinaryType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.VarbinaryType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

varbinaryTypeWithNotNull :: Phantoms.TTerm Grammar.VarbinaryType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.VarbinaryType
varbinaryTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.VarbinaryType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.VarbinaryType"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

varcharType :: Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.VarcharType
varcharType maxLength notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.VarcharType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm maxLength)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

varcharTypeMaxLength :: Phantoms.TTerm Grammar.VarcharType -> Phantoms.TTerm (Maybe Grammar.MaxLength)
varcharTypeMaxLength x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.VarcharType"),
        Core.projectionField = (Core.Name "maxLength")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

varcharTypeNotNull :: Phantoms.TTerm Grammar.VarcharType -> Phantoms.TTerm Bool
varcharTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.VarcharType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

varcharTypeWithMaxLength :: Phantoms.TTerm Grammar.VarcharType -> Phantoms.TTerm (Maybe Grammar.MaxLength) -> Phantoms.TTerm Grammar.VarcharType
varcharTypeWithMaxLength original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.VarcharType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.VarcharType"),
              Core.projectionField = (Core.Name "notNull")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

varcharTypeWithNotNull :: Phantoms.TTerm Grammar.VarcharType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.VarcharType
varcharTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.VarcharType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "maxLength"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.VarcharType"),
              Core.projectionField = (Core.Name "maxLength")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

verboseBinaryExactNumericTypeBigInteger :: Phantoms.TTerm Grammar.BigIntegerType -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType
verboseBinaryExactNumericTypeBigInteger x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.VerboseBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "bigInteger"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

verboseBinaryExactNumericTypeInteger128 :: Phantoms.TTerm Grammar.Integer128Type -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType
verboseBinaryExactNumericTypeInteger128 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.VerboseBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "integer128"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

verboseBinaryExactNumericTypeInteger16 :: Phantoms.TTerm Grammar.Integer16Type -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType
verboseBinaryExactNumericTypeInteger16 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.VerboseBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "integer16"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

verboseBinaryExactNumericTypeInteger256 :: Phantoms.TTerm Grammar.Integer256Type -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType
verboseBinaryExactNumericTypeInteger256 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.VerboseBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "integer256"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

verboseBinaryExactNumericTypeInteger32 :: Phantoms.TTerm Grammar.Integer32Type -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType
verboseBinaryExactNumericTypeInteger32 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.VerboseBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "integer32"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

verboseBinaryExactNumericTypeInteger64 :: Phantoms.TTerm Grammar.Integer64Type -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType
verboseBinaryExactNumericTypeInteger64 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.VerboseBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "integer64"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

verboseBinaryExactNumericTypeInteger8 :: Phantoms.TTerm Grammar.Integer8Type -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType
verboseBinaryExactNumericTypeInteger8 x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.VerboseBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "integer8"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

verboseBinaryExactNumericTypeIntegerWithPrecision :: Phantoms.TTerm Grammar.IntegerWithPrecision -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType
verboseBinaryExactNumericTypeIntegerWithPrecision x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.VerboseBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "integerWithPrecision"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

verboseBinaryExactNumericTypeSmallInteger :: Phantoms.TTerm Grammar.SmallIntegerType -> Phantoms.TTerm Grammar.VerboseBinaryExactNumericType
verboseBinaryExactNumericTypeSmallInteger x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.VerboseBinaryExactNumericType"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "smallInteger"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

whenOperandComparison :: Phantoms.TTerm Grammar.ComparisonPredicatePart2 -> Phantoms.TTerm Grammar.WhenOperand
whenOperandComparison x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.WhenOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "comparison"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

whenOperandDestinationPredicate :: Phantoms.TTerm Grammar.DestinationPredicate -> Phantoms.TTerm Grammar.WhenOperand
whenOperandDestinationPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.WhenOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "destinationPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

whenOperandDirectedPredicate :: Phantoms.TTerm Grammar.DirectedPredicatePart2 -> Phantoms.TTerm Grammar.WhenOperand
whenOperandDirectedPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.WhenOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "directedPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

whenOperandLabeledPredicate :: Phantoms.TTerm Grammar.LabeledPredicatePart2 -> Phantoms.TTerm Grammar.WhenOperand
whenOperandLabeledPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.WhenOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "labeledPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

whenOperandNormalizedPredicate :: Phantoms.TTerm Grammar.NormalizedPredicatePart2 -> Phantoms.TTerm Grammar.WhenOperand
whenOperandNormalizedPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.WhenOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "normalizedPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

whenOperandNullPredicate :: Phantoms.TTerm Grammar.NullPredicatePart2 -> Phantoms.TTerm Grammar.WhenOperand
whenOperandNullPredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.WhenOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "nullPredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

whenOperandSourcePredicate :: Phantoms.TTerm Grammar.SourcePredicate -> Phantoms.TTerm Grammar.WhenOperand
whenOperandSourcePredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.WhenOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "sourcePredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

whenOperandValueExpression :: Phantoms.TTerm Grammar.NonParenthesizedPrimaryValueExpression -> Phantoms.TTerm Grammar.WhenOperand
whenOperandValueExpression x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.WhenOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "valueExpression"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

whenOperandValueTypePredicate :: Phantoms.TTerm Grammar.ValueTypePredicatePart2 -> Phantoms.TTerm Grammar.WhenOperand
whenOperandValueTypePredicate x =
    Phantoms.TTerm (Core.TermInject (Core.Injection {
      Core.injectionTypeName = (Core.Name "openGql.grammar.WhenOperand"),
      Core.injectionField = Core.Field {
        Core.fieldName = (Core.Name "valueTypePredicate"),
        Core.fieldTerm = (Phantoms.unTTerm x)}}))

yieldItem :: Phantoms.TTerm Grammar.YieldItemName -> Phantoms.TTerm (Maybe Grammar.YieldItemAlias) -> Phantoms.TTerm Grammar.YieldItem
yieldItem name alias =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.YieldItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Phantoms.unTTerm name)},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm alias)}]}))

yieldItemAlias :: Phantoms.TTerm Grammar.YieldItem -> Phantoms.TTerm (Maybe Grammar.YieldItemAlias)
yieldItemAlias x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.YieldItem"),
        Core.projectionField = (Core.Name "alias")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

yieldItemName :: Phantoms.TTerm Grammar.YieldItem -> Phantoms.TTerm Grammar.YieldItemName
yieldItemName x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.YieldItem"),
        Core.projectionField = (Core.Name "name")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

yieldItemWithAlias :: Phantoms.TTerm Grammar.YieldItem -> Phantoms.TTerm (Maybe Grammar.YieldItemAlias) -> Phantoms.TTerm Grammar.YieldItem
yieldItemWithAlias original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.YieldItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.YieldItem"),
              Core.projectionField = (Core.Name "name")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

yieldItemWithName :: Phantoms.TTerm Grammar.YieldItem -> Phantoms.TTerm Grammar.YieldItemName -> Phantoms.TTerm Grammar.YieldItem
yieldItemWithName original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.YieldItem"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "name"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)},
        Core.Field {
          Core.fieldName = (Core.Name "alias"),
          Core.fieldTerm = (Core.TermApplication (Core.Application {
            Core.applicationFunction = (Core.TermProject (Core.Projection {
              Core.projectionTypeName = (Core.Name "openGql.grammar.YieldItem"),
              Core.projectionField = (Core.Name "alias")})),
            Core.applicationArgument = (Phantoms.unTTerm original)}))}]}))

zonedDatetimeType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ZonedDatetimeType
zonedDatetimeType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ZonedDatetimeType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

zonedDatetimeTypeNotNull :: Phantoms.TTerm Grammar.ZonedDatetimeType -> Phantoms.TTerm Bool
zonedDatetimeTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ZonedDatetimeType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

zonedDatetimeTypeWithNotNull :: Phantoms.TTerm Grammar.ZonedDatetimeType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ZonedDatetimeType
zonedDatetimeTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ZonedDatetimeType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))

zonedTimeType :: Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ZonedTimeType
zonedTimeType notNull =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ZonedTimeType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm notNull)}]}))

zonedTimeTypeNotNull :: Phantoms.TTerm Grammar.ZonedTimeType -> Phantoms.TTerm Bool
zonedTimeTypeNotNull x =
    Phantoms.TTerm (Core.TermApplication (Core.Application {
      Core.applicationFunction = (Core.TermProject (Core.Projection {
        Core.projectionTypeName = (Core.Name "openGql.grammar.ZonedTimeType"),
        Core.projectionField = (Core.Name "notNull")})),
      Core.applicationArgument = (Phantoms.unTTerm x)}))

zonedTimeTypeWithNotNull :: Phantoms.TTerm Grammar.ZonedTimeType -> Phantoms.TTerm Bool -> Phantoms.TTerm Grammar.ZonedTimeType
zonedTimeTypeWithNotNull original newVal =
    Phantoms.TTerm (Core.TermRecord (Core.Record {
      Core.recordTypeName = (Core.Name "openGql.grammar.ZonedTimeType"),
      Core.recordFields = [
        Core.Field {
          Core.fieldName = (Core.Name "notNull"),
          Core.fieldTerm = (Phantoms.unTTerm newVal)}]}))