packages feed

hydra-typescript 0.17.7 → 0.18.0

raw patch · 16 files changed

+12527/−12436 lines, 16 filesdep ~hydra-kernelPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: hydra-kernel

API changes (from Hackage documentation)

- Hydra.Dsl.TypeScript.Syntax: arrayElementArrayElement :: TypedName ArrayElement
- Hydra.Dsl.TypeScript.Syntax: arrayElementExpression :: TypedTerm Expression -> TypedTerm ArrayElement
- Hydra.Dsl.TypeScript.Syntax: arrayElementHole :: TypedTerm ArrayElement
- Hydra.Dsl.TypeScript.Syntax: arrayElementSpread :: TypedTerm SpreadElement -> TypedTerm ArrayElement
- Hydra.Dsl.TypeScript.Syntax: arrayTypeExpression :: TypedTerm TypeExpression -> TypedTerm ArrayTypeExpression
- Hydra.Dsl.TypeScript.Syntax: arrayTypeExpressionArrayTypeExpression :: TypedName ArrayTypeExpression
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionBodyArrowFunctionBody :: TypedName ArrowFunctionBody
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionBodyBlock :: TypedTerm BlockStatement -> TypedTerm ArrowFunctionBody
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionBodyExpression :: TypedTerm Expression -> TypedTerm ArrowFunctionBody
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpression :: TypedTerm [Pattern] -> TypedTerm ArrowFunctionBody -> TypedTerm Bool -> TypedTerm ArrowFunctionExpression
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionArrowFunctionExpression :: TypedName ArrowFunctionExpression
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionAsync :: TypedTerm ArrowFunctionExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionBody :: TypedTerm ArrowFunctionExpression -> TypedTerm ArrowFunctionBody
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionParams :: TypedTerm ArrowFunctionExpression -> TypedTerm [Pattern]
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionWithAsync :: TypedTerm ArrowFunctionExpression -> TypedTerm Bool -> TypedTerm ArrowFunctionExpression
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionWithBody :: TypedTerm ArrowFunctionExpression -> TypedTerm ArrowFunctionBody -> TypedTerm ArrowFunctionExpression
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionWithParams :: TypedTerm ArrowFunctionExpression -> TypedTerm [Pattern] -> TypedTerm ArrowFunctionExpression
- Hydra.Dsl.TypeScript.Syntax: asExpression :: TypedTerm Expression -> TypedTerm TypeExpression -> TypedTerm AsExpression
- Hydra.Dsl.TypeScript.Syntax: asExpressionAsExpression :: TypedName AsExpression
- Hydra.Dsl.TypeScript.Syntax: asExpressionExpression :: TypedTerm AsExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: asExpressionType :: TypedTerm AsExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: asExpressionWithExpression :: TypedTerm AsExpression -> TypedTerm Expression -> TypedTerm AsExpression
- Hydra.Dsl.TypeScript.Syntax: asExpressionWithType :: TypedTerm AsExpression -> TypedTerm TypeExpression -> TypedTerm AsExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpression :: TypedTerm AssignmentOperator -> TypedTerm Pattern -> TypedTerm Expression -> TypedTerm AssignmentExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionAssignmentExpression :: TypedName AssignmentExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionLeft :: TypedTerm AssignmentExpression -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionOperator :: TypedTerm AssignmentExpression -> TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionRight :: TypedTerm AssignmentExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionWithLeft :: TypedTerm AssignmentExpression -> TypedTerm Pattern -> TypedTerm AssignmentExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionWithOperator :: TypedTerm AssignmentExpression -> TypedTerm AssignmentOperator -> TypedTerm AssignmentExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionWithRight :: TypedTerm AssignmentExpression -> TypedTerm Expression -> TypedTerm AssignmentExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorAddAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorAndAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorAssignmentOperator :: TypedName AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorBitwiseAndAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorBitwiseOrAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorBitwiseXorAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorDivideAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorExponentiateAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorLeftShiftAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorModuloAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorMultiplyAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorNullishAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorOrAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorRightShiftAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorSubtractAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorUnsignedRightShiftAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentPattern :: TypedTerm Pattern -> TypedTerm Expression -> TypedTerm AssignmentPattern
- Hydra.Dsl.TypeScript.Syntax: assignmentPatternAssignmentPattern :: TypedName AssignmentPattern
- Hydra.Dsl.TypeScript.Syntax: assignmentPatternLeft :: TypedTerm AssignmentPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: assignmentPatternRight :: TypedTerm AssignmentPattern -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: assignmentPatternWithLeft :: TypedTerm AssignmentPattern -> TypedTerm Pattern -> TypedTerm AssignmentPattern
- Hydra.Dsl.TypeScript.Syntax: assignmentPatternWithRight :: TypedTerm AssignmentPattern -> TypedTerm Expression -> TypedTerm AssignmentPattern
- Hydra.Dsl.TypeScript.Syntax: binaryExpression :: TypedTerm BinaryOperator -> TypedTerm Expression -> TypedTerm Expression -> TypedTerm BinaryExpression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionBinaryExpression :: TypedName BinaryExpression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionLeft :: TypedTerm BinaryExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionOperator :: TypedTerm BinaryExpression -> TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionRight :: TypedTerm BinaryExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionWithLeft :: TypedTerm BinaryExpression -> TypedTerm Expression -> TypedTerm BinaryExpression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionWithOperator :: TypedTerm BinaryExpression -> TypedTerm BinaryOperator -> TypedTerm BinaryExpression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionWithRight :: TypedTerm BinaryExpression -> TypedTerm Expression -> TypedTerm BinaryExpression
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorAdd :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorAnd :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorBinaryOperator :: TypedName BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorBitwiseAnd :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorBitwiseOr :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorBitwiseXor :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorDivide :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorExponentiate :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorGreaterThan :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorGreaterThanOrEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorIn :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorInstanceof :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorLeftShift :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorLessThan :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorLessThanOrEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorModulo :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorMultiply :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorNotEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorNullishCoalescing :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorOr :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorRightShift :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorStrictEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorStrictNotEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorSubtract :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorUnsignedRightShift :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: callExpression :: TypedTerm Expression -> TypedTerm [Expression] -> TypedTerm Bool -> TypedTerm CallExpression
- Hydra.Dsl.TypeScript.Syntax: callExpressionArguments :: TypedTerm CallExpression -> TypedTerm [Expression]
- Hydra.Dsl.TypeScript.Syntax: callExpressionCallExpression :: TypedName CallExpression
- Hydra.Dsl.TypeScript.Syntax: callExpressionCallee :: TypedTerm CallExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: callExpressionOptional :: TypedTerm CallExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: callExpressionWithArguments :: TypedTerm CallExpression -> TypedTerm [Expression] -> TypedTerm CallExpression
- Hydra.Dsl.TypeScript.Syntax: callExpressionWithCallee :: TypedTerm CallExpression -> TypedTerm Expression -> TypedTerm CallExpression
- Hydra.Dsl.TypeScript.Syntax: callExpressionWithOptional :: TypedTerm CallExpression -> TypedTerm Bool -> TypedTerm CallExpression
- Hydra.Dsl.TypeScript.Syntax: catchClause :: TypedTerm (Maybe Pattern) -> TypedTerm BlockStatement -> TypedTerm CatchClause
- Hydra.Dsl.TypeScript.Syntax: catchClauseBody :: TypedTerm CatchClause -> TypedTerm BlockStatement
- Hydra.Dsl.TypeScript.Syntax: catchClauseCatchClause :: TypedName CatchClause
- Hydra.Dsl.TypeScript.Syntax: catchClauseParam :: TypedTerm CatchClause -> TypedTerm (Maybe Pattern)
- Hydra.Dsl.TypeScript.Syntax: catchClauseWithBody :: TypedTerm CatchClause -> TypedTerm BlockStatement -> TypedTerm CatchClause
- Hydra.Dsl.TypeScript.Syntax: catchClauseWithParam :: TypedTerm CatchClause -> TypedTerm (Maybe Pattern) -> TypedTerm CatchClause
- Hydra.Dsl.TypeScript.Syntax: classDeclaration :: TypedTerm Identifier -> TypedTerm (Maybe Expression) -> TypedTerm ClassBody -> TypedTerm ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: classDeclarationBody :: TypedTerm ClassDeclaration -> TypedTerm ClassBody
- Hydra.Dsl.TypeScript.Syntax: classDeclarationClassDeclaration :: TypedName ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: classDeclarationId :: TypedTerm ClassDeclaration -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: classDeclarationSuperClass :: TypedTerm ClassDeclaration -> TypedTerm (Maybe Expression)
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithBody :: TypedTerm ClassDeclaration -> TypedTerm ClassBody -> TypedTerm ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithComments :: TypedTerm ClassDeclaration -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ClassDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithCommentsBody :: TypedTerm ClassDeclarationWithComments -> TypedTerm ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithCommentsClassDeclarationWithComments :: TypedName ClassDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithCommentsComments :: TypedTerm ClassDeclarationWithComments -> TypedTerm (Maybe DocumentationComment)
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithCommentsWithBody :: TypedTerm ClassDeclarationWithComments -> TypedTerm ClassDeclaration -> TypedTerm ClassDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithCommentsWithComments :: TypedTerm ClassDeclarationWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ClassDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithId :: TypedTerm ClassDeclaration -> TypedTerm Identifier -> TypedTerm ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithSuperClass :: TypedTerm ClassDeclaration -> TypedTerm (Maybe Expression) -> TypedTerm ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: commentBlock :: TypedTerm String -> TypedTerm Comment
- Hydra.Dsl.TypeScript.Syntax: commentComment :: TypedName Comment
- Hydra.Dsl.TypeScript.Syntax: commentDocumentation :: TypedTerm DocumentationComment -> TypedTerm Comment
- Hydra.Dsl.TypeScript.Syntax: commentLine :: TypedTerm String -> TypedTerm Comment
- Hydra.Dsl.TypeScript.Syntax: conditionalExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm Expression -> TypedTerm ConditionalExpression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionAlternate :: TypedTerm ConditionalExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionConditionalExpression :: TypedName ConditionalExpression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionConsequent :: TypedTerm ConditionalExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionTest :: TypedTerm ConditionalExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionWithAlternate :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionWithConsequent :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionWithTest :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
- Hydra.Dsl.TypeScript.Syntax: doWhileStatement :: TypedTerm Statement -> TypedTerm Expression -> TypedTerm DoWhileStatement
- Hydra.Dsl.TypeScript.Syntax: doWhileStatementBody :: TypedTerm DoWhileStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: doWhileStatementDoWhileStatement :: TypedName DoWhileStatement
- Hydra.Dsl.TypeScript.Syntax: doWhileStatementTest :: TypedTerm DoWhileStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: doWhileStatementWithBody :: TypedTerm DoWhileStatement -> TypedTerm Statement -> TypedTerm DoWhileStatement
- Hydra.Dsl.TypeScript.Syntax: doWhileStatementWithTest :: TypedTerm DoWhileStatement -> TypedTerm Expression -> TypedTerm DoWhileStatement
- Hydra.Dsl.TypeScript.Syntax: documentationComment :: TypedTerm String -> TypedTerm [DocumentationTag] -> TypedTerm DocumentationComment
- Hydra.Dsl.TypeScript.Syntax: documentationCommentDescription :: TypedTerm DocumentationComment -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: documentationCommentDocumentationComment :: TypedName DocumentationComment
- Hydra.Dsl.TypeScript.Syntax: documentationCommentTags :: TypedTerm DocumentationComment -> TypedTerm [DocumentationTag]
- Hydra.Dsl.TypeScript.Syntax: documentationCommentWithDescription :: TypedTerm DocumentationComment -> TypedTerm String -> TypedTerm DocumentationComment
- Hydra.Dsl.TypeScript.Syntax: documentationCommentWithTags :: TypedTerm DocumentationComment -> TypedTerm [DocumentationTag] -> TypedTerm DocumentationComment
- Hydra.Dsl.TypeScript.Syntax: documentationTag :: TypedTerm String -> TypedTerm (Maybe TypeExpression) -> TypedTerm (Maybe Identifier) -> TypedTerm String -> TypedTerm DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: documentationTagDescription :: TypedTerm DocumentationTag -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: documentationTagDocumentationTag :: TypedName DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: documentationTagName :: TypedTerm DocumentationTag -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: documentationTagParamName :: TypedTerm DocumentationTag -> TypedTerm (Maybe Identifier)
- Hydra.Dsl.TypeScript.Syntax: documentationTagType :: TypedTerm DocumentationTag -> TypedTerm (Maybe TypeExpression)
- Hydra.Dsl.TypeScript.Syntax: documentationTagWithDescription :: TypedTerm DocumentationTag -> TypedTerm String -> TypedTerm DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: documentationTagWithName :: TypedTerm DocumentationTag -> TypedTerm String -> TypedTerm DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: documentationTagWithParamName :: TypedTerm DocumentationTag -> TypedTerm (Maybe Identifier) -> TypedTerm DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: documentationTagWithType :: TypedTerm DocumentationTag -> TypedTerm (Maybe TypeExpression) -> TypedTerm DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclaration :: TypedTerm (Maybe Identifier) -> TypedTerm StringLiteral -> TypedTerm ExportAllDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclarationExportAllDeclaration :: TypedName ExportAllDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclarationExported :: TypedTerm ExportAllDeclaration -> TypedTerm (Maybe Identifier)
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclarationSource :: TypedTerm ExportAllDeclaration -> TypedTerm StringLiteral
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclarationWithExported :: TypedTerm ExportAllDeclaration -> TypedTerm (Maybe Identifier) -> TypedTerm ExportAllDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclarationWithSource :: TypedTerm ExportAllDeclaration -> TypedTerm StringLiteral -> TypedTerm ExportAllDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportDeclarationAll :: TypedTerm ExportAllDeclaration -> TypedTerm ExportDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportDeclarationDeclaration :: TypedTerm Statement -> TypedTerm ExportDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportDeclarationDefault :: TypedTerm Expression -> TypedTerm ExportDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportDeclarationExportDeclaration :: TypedName ExportDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportDeclarationNamed :: TypedTerm NamedExport -> TypedTerm ExportDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportSpecifier :: TypedTerm Identifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
- Hydra.Dsl.TypeScript.Syntax: exportSpecifierExportSpecifier :: TypedName ExportSpecifier
- Hydra.Dsl.TypeScript.Syntax: exportSpecifierExported :: TypedTerm ExportSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: exportSpecifierLocal :: TypedTerm ExportSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: exportSpecifierWithExported :: TypedTerm ExportSpecifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
- Hydra.Dsl.TypeScript.Syntax: exportSpecifierWithLocal :: TypedTerm ExportSpecifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
- Hydra.Dsl.TypeScript.Syntax: expressionArray :: TypedTerm ArrayExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionArrow :: TypedTerm ArrowFunctionExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionAsExpression :: TypedTerm AsExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionAssignment :: TypedTerm AssignmentExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionAwait :: TypedTerm Expression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionBinary :: TypedTerm BinaryExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionCall :: TypedTerm CallExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionConditional :: TypedTerm ConditionalExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionExpression :: TypedName Expression
- Hydra.Dsl.TypeScript.Syntax: expressionFunction :: TypedTerm FunctionExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionIdentifier :: TypedTerm Identifier -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionLiteral :: TypedTerm Literal -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionMember :: TypedTerm MemberExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionNew :: TypedTerm CallExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionObject :: TypedTerm ObjectExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionParenthesized :: TypedTerm Expression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionSequence :: TypedTerm [Expression] -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionSpread :: TypedTerm SpreadElement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionThis :: TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionUnary :: TypedTerm UnaryExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionYield :: TypedTerm (Maybe Expression) -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: forInLeftForInLeft :: TypedName ForInLeft
- Hydra.Dsl.TypeScript.Syntax: forInLeftPattern :: TypedTerm Pattern -> TypedTerm ForInLeft
- Hydra.Dsl.TypeScript.Syntax: forInLeftVariable :: TypedTerm VariableDeclaration -> TypedTerm ForInLeft
- Hydra.Dsl.TypeScript.Syntax: forInStatement :: TypedTerm ForInLeft -> TypedTerm Expression -> TypedTerm Statement -> TypedTerm ForInStatement
- Hydra.Dsl.TypeScript.Syntax: forInStatementBody :: TypedTerm ForInStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: forInStatementForInStatement :: TypedName ForInStatement
- Hydra.Dsl.TypeScript.Syntax: forInStatementLeft :: TypedTerm ForInStatement -> TypedTerm ForInLeft
- Hydra.Dsl.TypeScript.Syntax: forInStatementRight :: TypedTerm ForInStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: forInStatementWithBody :: TypedTerm ForInStatement -> TypedTerm Statement -> TypedTerm ForInStatement
- Hydra.Dsl.TypeScript.Syntax: forInStatementWithLeft :: TypedTerm ForInStatement -> TypedTerm ForInLeft -> TypedTerm ForInStatement
- Hydra.Dsl.TypeScript.Syntax: forInStatementWithRight :: TypedTerm ForInStatement -> TypedTerm Expression -> TypedTerm ForInStatement
- Hydra.Dsl.TypeScript.Syntax: forInitExpression :: TypedTerm Expression -> TypedTerm ForInit
- Hydra.Dsl.TypeScript.Syntax: forInitForInit :: TypedName ForInit
- Hydra.Dsl.TypeScript.Syntax: forInitVariable :: TypedTerm VariableDeclaration -> TypedTerm ForInit
- Hydra.Dsl.TypeScript.Syntax: forOfStatement :: TypedTerm Bool -> TypedTerm ForInLeft -> TypedTerm Expression -> TypedTerm Statement -> TypedTerm ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementAwait :: TypedTerm ForOfStatement -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: forOfStatementBody :: TypedTerm ForOfStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementForOfStatement :: TypedName ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementLeft :: TypedTerm ForOfStatement -> TypedTerm ForInLeft
- Hydra.Dsl.TypeScript.Syntax: forOfStatementRight :: TypedTerm ForOfStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: forOfStatementWithAwait :: TypedTerm ForOfStatement -> TypedTerm Bool -> TypedTerm ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementWithBody :: TypedTerm ForOfStatement -> TypedTerm Statement -> TypedTerm ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementWithLeft :: TypedTerm ForOfStatement -> TypedTerm ForInLeft -> TypedTerm ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementWithRight :: TypedTerm ForOfStatement -> TypedTerm Expression -> TypedTerm ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forStatement :: TypedTerm (Maybe ForInit) -> TypedTerm (Maybe Expression) -> TypedTerm (Maybe Expression) -> TypedTerm Statement -> TypedTerm ForStatement
- Hydra.Dsl.TypeScript.Syntax: forStatementBody :: TypedTerm ForStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: forStatementForStatement :: TypedName ForStatement
- Hydra.Dsl.TypeScript.Syntax: forStatementInit :: TypedTerm ForStatement -> TypedTerm (Maybe ForInit)
- Hydra.Dsl.TypeScript.Syntax: forStatementTest :: TypedTerm ForStatement -> TypedTerm (Maybe Expression)
- Hydra.Dsl.TypeScript.Syntax: forStatementUpdate :: TypedTerm ForStatement -> TypedTerm (Maybe Expression)
- Hydra.Dsl.TypeScript.Syntax: forStatementWithBody :: TypedTerm ForStatement -> TypedTerm Statement -> TypedTerm ForStatement
- Hydra.Dsl.TypeScript.Syntax: forStatementWithInit :: TypedTerm ForStatement -> TypedTerm (Maybe ForInit) -> TypedTerm ForStatement
- Hydra.Dsl.TypeScript.Syntax: forStatementWithTest :: TypedTerm ForStatement -> TypedTerm (Maybe Expression) -> TypedTerm ForStatement
- Hydra.Dsl.TypeScript.Syntax: forStatementWithUpdate :: TypedTerm ForStatement -> TypedTerm (Maybe Expression) -> TypedTerm ForStatement
- Hydra.Dsl.TypeScript.Syntax: functionDeclaration :: TypedTerm Identifier -> TypedTerm [Pattern] -> TypedTerm BlockStatement -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationAsync :: TypedTerm FunctionDeclaration -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationBody :: TypedTerm FunctionDeclaration -> TypedTerm BlockStatement
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationFunctionDeclaration :: TypedName FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationGenerator :: TypedTerm FunctionDeclaration -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationId :: TypedTerm FunctionDeclaration -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationParams :: TypedTerm FunctionDeclaration -> TypedTerm [Pattern]
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithAsync :: TypedTerm FunctionDeclaration -> TypedTerm Bool -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithBody :: TypedTerm FunctionDeclaration -> TypedTerm BlockStatement -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithComments :: TypedTerm FunctionDeclaration -> TypedTerm (Maybe DocumentationComment) -> TypedTerm FunctionDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithCommentsBody :: TypedTerm FunctionDeclarationWithComments -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithCommentsComments :: TypedTerm FunctionDeclarationWithComments -> TypedTerm (Maybe DocumentationComment)
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithCommentsFunctionDeclarationWithComments :: TypedName FunctionDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithCommentsWithBody :: TypedTerm FunctionDeclarationWithComments -> TypedTerm FunctionDeclaration -> TypedTerm FunctionDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithCommentsWithComments :: TypedTerm FunctionDeclarationWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm FunctionDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithGenerator :: TypedTerm FunctionDeclaration -> TypedTerm Bool -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithId :: TypedTerm FunctionDeclaration -> TypedTerm Identifier -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithParams :: TypedTerm FunctionDeclaration -> TypedTerm [Pattern] -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionExpression :: TypedTerm (Maybe Identifier) -> TypedTerm [Pattern] -> TypedTerm BlockStatement -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionAsync :: TypedTerm FunctionExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: functionExpressionBody :: TypedTerm FunctionExpression -> TypedTerm BlockStatement
- Hydra.Dsl.TypeScript.Syntax: functionExpressionFunctionExpression :: TypedName FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionGenerator :: TypedTerm FunctionExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: functionExpressionId :: TypedTerm FunctionExpression -> TypedTerm (Maybe Identifier)
- Hydra.Dsl.TypeScript.Syntax: functionExpressionParams :: TypedTerm FunctionExpression -> TypedTerm [Pattern]
- Hydra.Dsl.TypeScript.Syntax: functionExpressionWithAsync :: TypedTerm FunctionExpression -> TypedTerm Bool -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionWithBody :: TypedTerm FunctionExpression -> TypedTerm BlockStatement -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionWithGenerator :: TypedTerm FunctionExpression -> TypedTerm Bool -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionWithId :: TypedTerm FunctionExpression -> TypedTerm (Maybe Identifier) -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionWithParams :: TypedTerm FunctionExpression -> TypedTerm [Pattern] -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpression :: TypedTerm [TypeParameter] -> TypedTerm [TypeExpression] -> TypedTerm TypeExpression -> TypedTerm FunctionTypeExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionFunctionTypeExpression :: TypedName FunctionTypeExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeExpression]
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionReturnType :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionTypeParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeParameter]
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionWithParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeExpression] -> TypedTerm FunctionTypeExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionWithReturnType :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression -> TypedTerm FunctionTypeExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionWithTypeParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeParameter] -> TypedTerm FunctionTypeExpression
- Hydra.Dsl.TypeScript.Syntax: identifier :: TypedTerm String -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: identifierIdentifier :: TypedName Identifier
- Hydra.Dsl.TypeScript.Syntax: ifStatement :: TypedTerm Expression -> TypedTerm Statement -> TypedTerm (Maybe Statement) -> TypedTerm IfStatement
- Hydra.Dsl.TypeScript.Syntax: ifStatementAlternate :: TypedTerm IfStatement -> TypedTerm (Maybe Statement)
- Hydra.Dsl.TypeScript.Syntax: ifStatementConsequent :: TypedTerm IfStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: ifStatementIfStatement :: TypedName IfStatement
- Hydra.Dsl.TypeScript.Syntax: ifStatementTest :: TypedTerm IfStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: ifStatementWithAlternate :: TypedTerm IfStatement -> TypedTerm (Maybe Statement) -> TypedTerm IfStatement
- Hydra.Dsl.TypeScript.Syntax: ifStatementWithConsequent :: TypedTerm IfStatement -> TypedTerm Statement -> TypedTerm IfStatement
- Hydra.Dsl.TypeScript.Syntax: ifStatementWithTest :: TypedTerm IfStatement -> TypedTerm Expression -> TypedTerm IfStatement
- Hydra.Dsl.TypeScript.Syntax: importClauseDefault :: TypedTerm ImportDefaultSpecifier -> TypedTerm ImportClause
- Hydra.Dsl.TypeScript.Syntax: importClauseImportClause :: TypedName ImportClause
- Hydra.Dsl.TypeScript.Syntax: importClauseNamed :: TypedTerm ImportSpecifier -> TypedTerm ImportClause
- Hydra.Dsl.TypeScript.Syntax: importClauseNamespace :: TypedTerm ImportNamespaceSpecifier -> TypedTerm ImportClause
- Hydra.Dsl.TypeScript.Syntax: importDeclaration :: TypedTerm [ImportClause] -> TypedTerm StringLiteral -> TypedTerm ImportDeclaration
- Hydra.Dsl.TypeScript.Syntax: importDeclarationImportDeclaration :: TypedName ImportDeclaration
- Hydra.Dsl.TypeScript.Syntax: importDeclarationSource :: TypedTerm ImportDeclaration -> TypedTerm StringLiteral
- Hydra.Dsl.TypeScript.Syntax: importDeclarationSpecifiers :: TypedTerm ImportDeclaration -> TypedTerm [ImportClause]
- Hydra.Dsl.TypeScript.Syntax: importDeclarationWithSource :: TypedTerm ImportDeclaration -> TypedTerm StringLiteral -> TypedTerm ImportDeclaration
- Hydra.Dsl.TypeScript.Syntax: importDeclarationWithSpecifiers :: TypedTerm ImportDeclaration -> TypedTerm [ImportClause] -> TypedTerm ImportDeclaration
- Hydra.Dsl.TypeScript.Syntax: importDefaultSpecifier :: TypedTerm Identifier -> TypedTerm ImportDefaultSpecifier
- Hydra.Dsl.TypeScript.Syntax: importDefaultSpecifierImportDefaultSpecifier :: TypedName ImportDefaultSpecifier
- Hydra.Dsl.TypeScript.Syntax: importNamespaceSpecifier :: TypedTerm Identifier -> TypedTerm ImportNamespaceSpecifier
- Hydra.Dsl.TypeScript.Syntax: importNamespaceSpecifierImportNamespaceSpecifier :: TypedName ImportNamespaceSpecifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifier :: TypedTerm Identifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifierImportSpecifier :: TypedName ImportSpecifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifierImported :: TypedTerm ImportSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifierLocal :: TypedTerm ImportSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifierWithImported :: TypedTerm ImportSpecifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifierWithLocal :: TypedTerm ImportSpecifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclaration :: TypedTerm Identifier -> TypedTerm [TypeParameter] -> TypedTerm [TypeExpression] -> TypedTerm [PropertySignature] -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationExtends :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeExpression]
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationInterfaceDeclaration :: TypedName InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationMembers :: TypedTerm InterfaceDeclaration -> TypedTerm [PropertySignature]
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationName :: TypedTerm InterfaceDeclaration -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationTypeParameters :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeParameter]
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationWithExtends :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeExpression] -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationWithMembers :: TypedTerm InterfaceDeclaration -> TypedTerm [PropertySignature] -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationWithName :: TypedTerm InterfaceDeclaration -> TypedTerm Identifier -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationWithTypeParameters :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeParameter] -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: labeledStatement :: TypedTerm Identifier -> TypedTerm Statement -> TypedTerm LabeledStatement
- Hydra.Dsl.TypeScript.Syntax: labeledStatementBody :: TypedTerm LabeledStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: labeledStatementLabel :: TypedTerm LabeledStatement -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: labeledStatementLabeledStatement :: TypedName LabeledStatement
- Hydra.Dsl.TypeScript.Syntax: labeledStatementWithBody :: TypedTerm LabeledStatement -> TypedTerm Statement -> TypedTerm LabeledStatement
- Hydra.Dsl.TypeScript.Syntax: labeledStatementWithLabel :: TypedTerm LabeledStatement -> TypedTerm Identifier -> TypedTerm LabeledStatement
- Hydra.Dsl.TypeScript.Syntax: literalBigInt :: TypedTerm Integer -> TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalBoolean :: TypedTerm Bool -> TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalLiteral :: TypedName Literal
- Hydra.Dsl.TypeScript.Syntax: literalNull :: TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalNumber :: TypedTerm NumericLiteral -> TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalString :: TypedTerm StringLiteral -> TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalTemplate :: TypedTerm TemplateLiteral -> TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalUndefined :: TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: memberExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm MemberExpression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionComputed :: TypedTerm MemberExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: memberExpressionMemberExpression :: TypedName MemberExpression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionObject :: TypedTerm MemberExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionOptional :: TypedTerm MemberExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: memberExpressionProperty :: TypedTerm MemberExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionWithComputed :: TypedTerm MemberExpression -> TypedTerm Bool -> TypedTerm MemberExpression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionWithObject :: TypedTerm MemberExpression -> TypedTerm Expression -> TypedTerm MemberExpression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionWithOptional :: TypedTerm MemberExpression -> TypedTerm Bool -> TypedTerm MemberExpression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionWithProperty :: TypedTerm MemberExpression -> TypedTerm Expression -> TypedTerm MemberExpression
- Hydra.Dsl.TypeScript.Syntax: methodDefinition :: TypedTerm Expression -> TypedTerm FunctionExpression -> TypedTerm MethodKind -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionComputed :: TypedTerm MethodDefinition -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionKey :: TypedTerm MethodDefinition -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionKind :: TypedTerm MethodDefinition -> TypedTerm MethodKind
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionMethodDefinition :: TypedName MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionStatic :: TypedTerm MethodDefinition -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionValue :: TypedTerm MethodDefinition -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionWithComputed :: TypedTerm MethodDefinition -> TypedTerm Bool -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionWithKey :: TypedTerm MethodDefinition -> TypedTerm Expression -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionWithKind :: TypedTerm MethodDefinition -> TypedTerm MethodKind -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionWithStatic :: TypedTerm MethodDefinition -> TypedTerm Bool -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionWithValue :: TypedTerm MethodDefinition -> TypedTerm FunctionExpression -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodKindConstructor :: TypedTerm MethodKind
- Hydra.Dsl.TypeScript.Syntax: methodKindGet :: TypedTerm MethodKind
- Hydra.Dsl.TypeScript.Syntax: methodKindMethod :: TypedTerm MethodKind
- Hydra.Dsl.TypeScript.Syntax: methodKindMethodKind :: TypedName MethodKind
- Hydra.Dsl.TypeScript.Syntax: methodKindSet :: TypedTerm MethodKind
- Hydra.Dsl.TypeScript.Syntax: moduleItemExport :: TypedTerm ExportDeclaration -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemImport :: TypedTerm ImportDeclaration -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemInterface :: TypedTerm InterfaceDeclaration -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemModuleItem :: TypedName ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemStatement :: TypedTerm Statement -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemTypeAlias :: TypedTerm TypeAliasDeclaration -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithComments :: TypedTerm ModuleItem -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ModuleItemWithComments
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithCommentsBody :: TypedTerm ModuleItemWithComments -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithCommentsComments :: TypedTerm ModuleItemWithComments -> TypedTerm (Maybe DocumentationComment)
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithCommentsModuleItemWithComments :: TypedName ModuleItemWithComments
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithCommentsWithBody :: TypedTerm ModuleItemWithComments -> TypedTerm ModuleItem -> TypedTerm ModuleItemWithComments
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithCommentsWithComments :: TypedTerm ModuleItemWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ModuleItemWithComments
- Hydra.Dsl.TypeScript.Syntax: namedExport :: TypedTerm [ExportSpecifier] -> TypedTerm (Maybe StringLiteral) -> TypedTerm NamedExport
- Hydra.Dsl.TypeScript.Syntax: namedExportNamedExport :: TypedName NamedExport
- Hydra.Dsl.TypeScript.Syntax: namedExportSource :: TypedTerm NamedExport -> TypedTerm (Maybe StringLiteral)
- Hydra.Dsl.TypeScript.Syntax: namedExportSpecifiers :: TypedTerm NamedExport -> TypedTerm [ExportSpecifier]
- Hydra.Dsl.TypeScript.Syntax: namedExportWithSource :: TypedTerm NamedExport -> TypedTerm (Maybe StringLiteral) -> TypedTerm NamedExport
- Hydra.Dsl.TypeScript.Syntax: namedExportWithSpecifiers :: TypedTerm NamedExport -> TypedTerm [ExportSpecifier] -> TypedTerm NamedExport
- Hydra.Dsl.TypeScript.Syntax: numericLiteralFloat :: TypedTerm Double -> TypedTerm NumericLiteral
- Hydra.Dsl.TypeScript.Syntax: numericLiteralInteger :: TypedTerm Int64 -> TypedTerm NumericLiteral
- Hydra.Dsl.TypeScript.Syntax: numericLiteralNumericLiteral :: TypedName NumericLiteral
- Hydra.Dsl.TypeScript.Syntax: objectPattern :: TypedTerm [ObjectPatternProperty] -> TypedTerm ObjectPattern
- Hydra.Dsl.TypeScript.Syntax: objectPatternObjectPattern :: TypedName ObjectPattern
- Hydra.Dsl.TypeScript.Syntax: objectPatternProperties :: TypedTerm ObjectPattern -> TypedTerm [ObjectPatternProperty]
- Hydra.Dsl.TypeScript.Syntax: objectPatternPropertyObjectPatternProperty :: TypedName ObjectPatternProperty
- Hydra.Dsl.TypeScript.Syntax: objectPatternPropertyProperty :: TypedTerm Property -> TypedTerm ObjectPatternProperty
- Hydra.Dsl.TypeScript.Syntax: objectPatternPropertyRest :: TypedTerm RestElement -> TypedTerm ObjectPatternProperty
- Hydra.Dsl.TypeScript.Syntax: objectPatternWithProperties :: TypedTerm ObjectPattern -> TypedTerm [ObjectPatternProperty] -> TypedTerm ObjectPattern
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpression :: TypedTerm TypeExpression -> TypedTerm [TypeExpression] -> TypedTerm ParameterizedTypeExpression
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpressionArguments :: TypedTerm ParameterizedTypeExpression -> TypedTerm [TypeExpression]
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpressionBase :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpressionParameterizedTypeExpression :: TypedName ParameterizedTypeExpression
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpressionWithArguments :: TypedTerm ParameterizedTypeExpression -> TypedTerm [TypeExpression] -> TypedTerm ParameterizedTypeExpression
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpressionWithBase :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression -> TypedTerm ParameterizedTypeExpression
- Hydra.Dsl.TypeScript.Syntax: patternArray :: TypedTerm ArrayPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: patternAssignment :: TypedTerm AssignmentPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: patternIdentifier :: TypedTerm Identifier -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: patternObject :: TypedTerm ObjectPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: patternPattern :: TypedName Pattern
- Hydra.Dsl.TypeScript.Syntax: patternRest :: TypedTerm RestElement -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: patternTyped :: TypedTerm TypedPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: program :: TypedTerm [ModuleItem] -> TypedTerm SourceType -> TypedTerm Program
- Hydra.Dsl.TypeScript.Syntax: programBody :: TypedTerm Program -> TypedTerm [ModuleItem]
- Hydra.Dsl.TypeScript.Syntax: programProgram :: TypedName Program
- Hydra.Dsl.TypeScript.Syntax: programSourceType :: TypedTerm Program -> TypedTerm SourceType
- Hydra.Dsl.TypeScript.Syntax: programWithBody :: TypedTerm Program -> TypedTerm [ModuleItem] -> TypedTerm Program
- Hydra.Dsl.TypeScript.Syntax: programWithSourceType :: TypedTerm Program -> TypedTerm SourceType -> TypedTerm Program
- Hydra.Dsl.TypeScript.Syntax: property :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm PropertyKind -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: propertyComputed :: TypedTerm Property -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: propertyKey :: TypedTerm Property -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: propertyKind :: TypedTerm Property -> TypedTerm PropertyKind
- Hydra.Dsl.TypeScript.Syntax: propertyKindGet :: TypedTerm PropertyKind
- Hydra.Dsl.TypeScript.Syntax: propertyKindInit :: TypedTerm PropertyKind
- Hydra.Dsl.TypeScript.Syntax: propertyKindPropertyKind :: TypedName PropertyKind
- Hydra.Dsl.TypeScript.Syntax: propertyKindSet :: TypedTerm PropertyKind
- Hydra.Dsl.TypeScript.Syntax: propertyProperty :: TypedName Property
- Hydra.Dsl.TypeScript.Syntax: propertyShorthand :: TypedTerm Property -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: propertySignature :: TypedTerm Identifier -> TypedTerm TypeExpression -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm (Maybe DocumentationComment) -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureComments :: TypedTerm PropertySignature -> TypedTerm (Maybe DocumentationComment)
- Hydra.Dsl.TypeScript.Syntax: propertySignatureName :: TypedTerm PropertySignature -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: propertySignatureOptional :: TypedTerm PropertySignature -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: propertySignaturePropertySignature :: TypedName PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureReadonly :: TypedTerm PropertySignature -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: propertySignatureType :: TypedTerm PropertySignature -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: propertySignatureWithComments :: TypedTerm PropertySignature -> TypedTerm (Maybe DocumentationComment) -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureWithName :: TypedTerm PropertySignature -> TypedTerm Identifier -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureWithOptional :: TypedTerm PropertySignature -> TypedTerm Bool -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureWithReadonly :: TypedTerm PropertySignature -> TypedTerm Bool -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureWithType :: TypedTerm PropertySignature -> TypedTerm TypeExpression -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertyValue :: TypedTerm Property -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: propertyWithComputed :: TypedTerm Property -> TypedTerm Bool -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: propertyWithKey :: TypedTerm Property -> TypedTerm Expression -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: propertyWithKind :: TypedTerm Property -> TypedTerm PropertyKind -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: propertyWithShorthand :: TypedTerm Property -> TypedTerm Bool -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: propertyWithValue :: TypedTerm Property -> TypedTerm Expression -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: restElement :: TypedTerm Pattern -> TypedTerm RestElement
- Hydra.Dsl.TypeScript.Syntax: restElementRestElement :: TypedName RestElement
- Hydra.Dsl.TypeScript.Syntax: sourceTypeModule :: TypedTerm SourceType
- Hydra.Dsl.TypeScript.Syntax: sourceTypeScript :: TypedTerm SourceType
- Hydra.Dsl.TypeScript.Syntax: sourceTypeSourceType :: TypedName SourceType
- Hydra.Dsl.TypeScript.Syntax: spreadElement :: TypedTerm Expression -> TypedTerm SpreadElement
- Hydra.Dsl.TypeScript.Syntax: spreadElementSpreadElement :: TypedName SpreadElement
- Hydra.Dsl.TypeScript.Syntax: statementBlock :: TypedTerm BlockStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementBreak :: TypedTerm BreakStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementClassDeclaration :: TypedTerm ClassDeclaration -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementContinue :: TypedTerm ContinueStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementDebugger :: TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementDoWhile :: TypedTerm DoWhileStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementEmpty :: TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementExpression :: TypedTerm Expression -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementFor :: TypedTerm ForStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementForIn :: TypedTerm ForInStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementForOf :: TypedTerm ForOfStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementFunctionDeclaration :: TypedTerm FunctionDeclaration -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementIf :: TypedTerm IfStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementLabeled :: TypedTerm LabeledStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementReturn :: TypedTerm ReturnStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementStatement :: TypedName Statement
- Hydra.Dsl.TypeScript.Syntax: statementSwitch :: TypedTerm SwitchStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementThrow :: TypedTerm ThrowStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementTry :: TypedTerm TryStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementVariableDeclaration :: TypedTerm VariableDeclaration -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementWhile :: TypedTerm WhileStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementWithComments :: TypedTerm Statement -> TypedTerm (Maybe DocumentationComment) -> TypedTerm StatementWithComments
- Hydra.Dsl.TypeScript.Syntax: statementWithCommentsBody :: TypedTerm StatementWithComments -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementWithCommentsComments :: TypedTerm StatementWithComments -> TypedTerm (Maybe DocumentationComment)
- Hydra.Dsl.TypeScript.Syntax: statementWithCommentsStatementWithComments :: TypedName StatementWithComments
- Hydra.Dsl.TypeScript.Syntax: statementWithCommentsWithBody :: TypedTerm StatementWithComments -> TypedTerm Statement -> TypedTerm StatementWithComments
- Hydra.Dsl.TypeScript.Syntax: statementWithCommentsWithComments :: TypedTerm StatementWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm StatementWithComments
- Hydra.Dsl.TypeScript.Syntax: stringLiteral :: TypedTerm String -> TypedTerm Bool -> TypedTerm StringLiteral
- Hydra.Dsl.TypeScript.Syntax: stringLiteralSingleQuote :: TypedTerm StringLiteral -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: stringLiteralStringLiteral :: TypedName StringLiteral
- Hydra.Dsl.TypeScript.Syntax: stringLiteralValue :: TypedTerm StringLiteral -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: stringLiteralWithSingleQuote :: TypedTerm StringLiteral -> TypedTerm Bool -> TypedTerm StringLiteral
- Hydra.Dsl.TypeScript.Syntax: stringLiteralWithValue :: TypedTerm StringLiteral -> TypedTerm String -> TypedTerm StringLiteral
- Hydra.Dsl.TypeScript.Syntax: switchCase :: TypedTerm (Maybe Expression) -> TypedTerm [Statement] -> TypedTerm SwitchCase
- Hydra.Dsl.TypeScript.Syntax: switchCaseConsequent :: TypedTerm SwitchCase -> TypedTerm [Statement]
- Hydra.Dsl.TypeScript.Syntax: switchCaseSwitchCase :: TypedName SwitchCase
- Hydra.Dsl.TypeScript.Syntax: switchCaseTest :: TypedTerm SwitchCase -> TypedTerm (Maybe Expression)
- Hydra.Dsl.TypeScript.Syntax: switchCaseWithConsequent :: TypedTerm SwitchCase -> TypedTerm [Statement] -> TypedTerm SwitchCase
- Hydra.Dsl.TypeScript.Syntax: switchCaseWithTest :: TypedTerm SwitchCase -> TypedTerm (Maybe Expression) -> TypedTerm SwitchCase
- Hydra.Dsl.TypeScript.Syntax: switchStatement :: TypedTerm Expression -> TypedTerm [SwitchCase] -> TypedTerm SwitchStatement
- Hydra.Dsl.TypeScript.Syntax: switchStatementCases :: TypedTerm SwitchStatement -> TypedTerm [SwitchCase]
- Hydra.Dsl.TypeScript.Syntax: switchStatementDiscriminant :: TypedTerm SwitchStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: switchStatementSwitchStatement :: TypedName SwitchStatement
- Hydra.Dsl.TypeScript.Syntax: switchStatementWithCases :: TypedTerm SwitchStatement -> TypedTerm [SwitchCase] -> TypedTerm SwitchStatement
- Hydra.Dsl.TypeScript.Syntax: switchStatementWithDiscriminant :: TypedTerm SwitchStatement -> TypedTerm Expression -> TypedTerm SwitchStatement
- Hydra.Dsl.TypeScript.Syntax: templateElement :: TypedTerm String -> TypedTerm Bool -> TypedTerm TemplateElement
- Hydra.Dsl.TypeScript.Syntax: templateElementTail :: TypedTerm TemplateElement -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: templateElementTemplateElement :: TypedName TemplateElement
- Hydra.Dsl.TypeScript.Syntax: templateElementValue :: TypedTerm TemplateElement -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: templateElementWithTail :: TypedTerm TemplateElement -> TypedTerm Bool -> TypedTerm TemplateElement
- Hydra.Dsl.TypeScript.Syntax: templateElementWithValue :: TypedTerm TemplateElement -> TypedTerm String -> TypedTerm TemplateElement
- Hydra.Dsl.TypeScript.Syntax: templateLiteral :: TypedTerm [TemplateElement] -> TypedTerm [Expression] -> TypedTerm TemplateLiteral
- Hydra.Dsl.TypeScript.Syntax: templateLiteralExpressions :: TypedTerm TemplateLiteral -> TypedTerm [Expression]
- Hydra.Dsl.TypeScript.Syntax: templateLiteralQuasis :: TypedTerm TemplateLiteral -> TypedTerm [TemplateElement]
- Hydra.Dsl.TypeScript.Syntax: templateLiteralTemplateLiteral :: TypedName TemplateLiteral
- Hydra.Dsl.TypeScript.Syntax: templateLiteralWithExpressions :: TypedTerm TemplateLiteral -> TypedTerm [Expression] -> TypedTerm TemplateLiteral
- Hydra.Dsl.TypeScript.Syntax: templateLiteralWithQuasis :: TypedTerm TemplateLiteral -> TypedTerm [TemplateElement] -> TypedTerm TemplateLiteral
- Hydra.Dsl.TypeScript.Syntax: throwStatement :: TypedTerm Expression -> TypedTerm ThrowStatement
- Hydra.Dsl.TypeScript.Syntax: throwStatementThrowStatement :: TypedName ThrowStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatement :: TypedTerm BlockStatement -> TypedTerm (Maybe CatchClause) -> TypedTerm (Maybe BlockStatement) -> TypedTerm TryStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatementBlock :: TypedTerm TryStatement -> TypedTerm BlockStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatementFinalizer :: TypedTerm TryStatement -> TypedTerm (Maybe BlockStatement)
- Hydra.Dsl.TypeScript.Syntax: tryStatementHandler :: TypedTerm TryStatement -> TypedTerm (Maybe CatchClause)
- Hydra.Dsl.TypeScript.Syntax: tryStatementTryStatement :: TypedName TryStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatementWithBlock :: TypedTerm TryStatement -> TypedTerm BlockStatement -> TypedTerm TryStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatementWithFinalizer :: TypedTerm TryStatement -> TypedTerm (Maybe BlockStatement) -> TypedTerm TryStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatementWithHandler :: TypedTerm TryStatement -> TypedTerm (Maybe CatchClause) -> TypedTerm TryStatement
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclaration :: TypedTerm Identifier -> TypedTerm [TypeParameter] -> TypedTerm TypeExpression -> TypedTerm TypeAliasDeclaration
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationName :: TypedTerm TypeAliasDeclaration -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationType :: TypedTerm TypeAliasDeclaration -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationTypeAliasDeclaration :: TypedName TypeAliasDeclaration
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationTypeParameters :: TypedTerm TypeAliasDeclaration -> TypedTerm [TypeParameter]
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationWithName :: TypedTerm TypeAliasDeclaration -> TypedTerm Identifier -> TypedTerm TypeAliasDeclaration
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationWithType :: TypedTerm TypeAliasDeclaration -> TypedTerm TypeExpression -> TypedTerm TypeAliasDeclaration
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationWithTypeParameters :: TypedTerm TypeAliasDeclaration -> TypedTerm [TypeParameter] -> TypedTerm TypeAliasDeclaration
- Hydra.Dsl.TypeScript.Syntax: typeAnnotation :: TypedTerm TypeExpression -> TypedTerm TypeAnnotation
- Hydra.Dsl.TypeScript.Syntax: typeAnnotationTypeAnnotation :: TypedName TypeAnnotation
- Hydra.Dsl.TypeScript.Syntax: typeExpressionAny :: TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionArray :: TypedTerm ArrayTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionFunction :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionIdentifier :: TypedTerm Identifier -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionIntersection :: TypedTerm IntersectionTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionLiteral :: TypedTerm Literal -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionNever :: TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionObject :: TypedTerm ObjectTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionOptional :: TypedTerm TypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionParameterized :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionReadonly :: TypedTerm TypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionTuple :: TypedTerm TupleTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionTypeExpression :: TypedName TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionUnion :: TypedTerm UnionTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionUnknown :: TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionVoid :: TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeParameter :: TypedTerm Identifier -> TypedTerm (Maybe TypeExpression) -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
- Hydra.Dsl.TypeScript.Syntax: typeParameterConstraint :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression)
- Hydra.Dsl.TypeScript.Syntax: typeParameterDefault :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression)
- Hydra.Dsl.TypeScript.Syntax: typeParameterName :: TypedTerm TypeParameter -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: typeParameterTypeParameter :: TypedName TypeParameter
- Hydra.Dsl.TypeScript.Syntax: typeParameterWithConstraint :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
- Hydra.Dsl.TypeScript.Syntax: typeParameterWithDefault :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
- Hydra.Dsl.TypeScript.Syntax: typeParameterWithName :: TypedTerm TypeParameter -> TypedTerm Identifier -> TypedTerm TypeParameter
- Hydra.Dsl.TypeScript.Syntax: typedPattern :: TypedTerm Pattern -> TypedTerm TypeExpression -> TypedTerm TypedPattern
- Hydra.Dsl.TypeScript.Syntax: typedPatternPattern :: TypedTerm TypedPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: typedPatternType :: TypedTerm TypedPattern -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typedPatternTypedPattern :: TypedName TypedPattern
- Hydra.Dsl.TypeScript.Syntax: typedPatternWithPattern :: TypedTerm TypedPattern -> TypedTerm Pattern -> TypedTerm TypedPattern
- Hydra.Dsl.TypeScript.Syntax: typedPatternWithType :: TypedTerm TypedPattern -> TypedTerm TypeExpression -> TypedTerm TypedPattern
- Hydra.Dsl.TypeScript.Syntax: unArrayTypeExpression :: TypedTerm ArrayTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: unIdentifier :: TypedTerm Identifier -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: unImportDefaultSpecifier :: TypedTerm ImportDefaultSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: unImportNamespaceSpecifier :: TypedTerm ImportNamespaceSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: unRestElement :: TypedTerm RestElement -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: unSpreadElement :: TypedTerm SpreadElement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: unThrowStatement :: TypedTerm ThrowStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: unTypeAnnotation :: TypedTerm TypeAnnotation -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: unaryExpression :: TypedTerm UnaryOperator -> TypedTerm Expression -> TypedTerm Bool -> TypedTerm UnaryExpression
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionArgument :: TypedTerm UnaryExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionOperator :: TypedTerm UnaryExpression -> TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionPrefix :: TypedTerm UnaryExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionUnaryExpression :: TypedName UnaryExpression
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionWithArgument :: TypedTerm UnaryExpression -> TypedTerm Expression -> TypedTerm UnaryExpression
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionWithOperator :: TypedTerm UnaryExpression -> TypedTerm UnaryOperator -> TypedTerm UnaryExpression
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionWithPrefix :: TypedTerm UnaryExpression -> TypedTerm Bool -> TypedTerm UnaryExpression
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorBitwiseNot :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorDecrement :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorDelete :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorIncrement :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorNegate :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorNot :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorPlus :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorTypeof :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorUnaryOperator :: TypedName UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorVoid :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: variableDeclaration :: TypedTerm VariableKind -> TypedTerm [VariableDeclarator] -> TypedTerm VariableDeclaration
- Hydra.Dsl.TypeScript.Syntax: variableDeclarationDeclarations :: TypedTerm VariableDeclaration -> TypedTerm [VariableDeclarator]
- Hydra.Dsl.TypeScript.Syntax: variableDeclarationKind :: TypedTerm VariableDeclaration -> TypedTerm VariableKind
- Hydra.Dsl.TypeScript.Syntax: variableDeclarationVariableDeclaration :: TypedName VariableDeclaration
- Hydra.Dsl.TypeScript.Syntax: variableDeclarationWithDeclarations :: TypedTerm VariableDeclaration -> TypedTerm [VariableDeclarator] -> TypedTerm VariableDeclaration
- Hydra.Dsl.TypeScript.Syntax: variableDeclarationWithKind :: TypedTerm VariableDeclaration -> TypedTerm VariableKind -> TypedTerm VariableDeclaration
- Hydra.Dsl.TypeScript.Syntax: variableDeclarator :: TypedTerm Pattern -> TypedTerm (Maybe Expression) -> TypedTerm VariableDeclarator
- Hydra.Dsl.TypeScript.Syntax: variableDeclaratorId :: TypedTerm VariableDeclarator -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: variableDeclaratorInit :: TypedTerm VariableDeclarator -> TypedTerm (Maybe Expression)
- Hydra.Dsl.TypeScript.Syntax: variableDeclaratorVariableDeclarator :: TypedName VariableDeclarator
- Hydra.Dsl.TypeScript.Syntax: variableDeclaratorWithId :: TypedTerm VariableDeclarator -> TypedTerm Pattern -> TypedTerm VariableDeclarator
- Hydra.Dsl.TypeScript.Syntax: variableDeclaratorWithInit :: TypedTerm VariableDeclarator -> TypedTerm (Maybe Expression) -> TypedTerm VariableDeclarator
- Hydra.Dsl.TypeScript.Syntax: variableKindConst :: TypedTerm VariableKind
- Hydra.Dsl.TypeScript.Syntax: variableKindLet :: TypedTerm VariableKind
- Hydra.Dsl.TypeScript.Syntax: variableKindVar :: TypedTerm VariableKind
- Hydra.Dsl.TypeScript.Syntax: variableKindVariableKind :: TypedName VariableKind
- Hydra.Dsl.TypeScript.Syntax: whileStatement :: TypedTerm Expression -> TypedTerm Statement -> TypedTerm WhileStatement
- Hydra.Dsl.TypeScript.Syntax: whileStatementBody :: TypedTerm WhileStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: whileStatementTest :: TypedTerm WhileStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: whileStatementWhileStatement :: TypedName WhileStatement
- Hydra.Dsl.TypeScript.Syntax: whileStatementWithBody :: TypedTerm WhileStatement -> TypedTerm Statement -> TypedTerm WhileStatement
- Hydra.Dsl.TypeScript.Syntax: whileStatementWithTest :: TypedTerm WhileStatement -> TypedTerm Expression -> TypedTerm WhileStatement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: addExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: andExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: anyType :: TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayExpr :: [Expression] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayPattern :: [Maybe Pattern] -> Pattern
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayType :: TypeExpression -> TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: arrowBlockExpr :: [String] -> [Statement] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: arrowExpr :: [String] -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: assignExpr :: Pattern -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: asyncArrowExpr :: [String] -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: asyncFuncDecl :: String -> [String] -> [Statement] -> FunctionDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: awaitExpr :: Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: bigIntLit :: Integer -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: binaryExpr :: BinaryOperator -> Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: blockComment :: String -> Comment
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: blockStmt :: [Statement] -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: boolExpr :: Bool -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: boolLit :: Bool -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: breakStmt :: Maybe String -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: callExpr :: Expression -> [Expression] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: catchClause :: Maybe Pattern -> [Statement] -> CatchClause
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: classDecl :: String -> Maybe Expression -> [MethodDefinition] -> ClassDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: classDeclStmt :: ClassDeclaration -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: computedMemberExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: condExpr :: Expression -> Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: constDecl :: String -> Maybe Expression -> VariableDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: constructorDef :: [String] -> [Statement] -> MethodDefinition
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: continueStmt :: Maybe String -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: debuggerStmt :: Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: defaultExportDecl :: Expression -> ExportDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: defaultPattern :: String -> Expression -> Pattern
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: divExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: docComment :: String -> [DocumentationTag] -> Comment
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: emptyStmt :: Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: eqExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: exportDeclStmt :: Statement -> ExportDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: exportItem :: ExportDeclaration -> ModuleItem
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: exprStmt :: Expression -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: floatExpr :: Double -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: floatLit :: Double -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: forOfStmt :: Bool -> ForInLeft -> Expression -> Statement -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: forStmt :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: funcDecl :: String -> [String] -> [Statement] -> FunctionDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: funcDeclStmt :: FunctionDeclaration -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: ident :: String -> Identifier
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: identExpr :: String -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: identPattern :: String -> Pattern
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: identType :: String -> TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: ifStmt :: Expression -> Statement -> Maybe Statement -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: importDecl :: [ImportClause] -> String -> ImportDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: importDefault :: String -> ImportClause
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: importItem :: ImportDeclaration -> ModuleItem
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: importNamed :: String -> String -> ImportClause
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: importNamespace :: String -> ImportClause
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: intExpr :: Int64 -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: intLit :: Int64 -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: letDecl :: String -> Maybe Expression -> VariableDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: lineComment :: String -> Comment
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: litExpr :: Literal -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: memberExpr :: Expression -> String -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: methodDef :: String -> [String] -> [Statement] -> MethodDefinition
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: moduleProgram :: [ModuleItem] -> Program
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: mulExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: namedExportDecl :: [(String, String)] -> Maybe String -> ExportDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: negateExpr :: Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: neqExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: neverType :: TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: newExpr :: Expression -> [Expression] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: notExpr :: Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: nullExpr :: Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: nullLit :: Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: objectExpr :: [(String, Expression)] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: objectPattern :: [Pattern] -> Pattern
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalCallExpr :: Expression -> [Expression] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalMemberExpr :: Expression -> String -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalType :: TypeExpression -> TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: orExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: paramTag :: String -> Maybe TypeExpression -> String -> DocumentationTag
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: paramType :: TypeExpression -> [TypeExpression] -> TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: parenExpr :: Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: qualifiedName :: [String] -> QualifiedName
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: restPattern :: String -> Pattern
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: returnStmt :: Maybe Expression -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: returnsTag :: Maybe TypeExpression -> String -> DocumentationTag
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: scriptProgram :: [ModuleItem] -> Program
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: spreadExpr :: Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: staticMethodDef :: String -> [String] -> [Statement] -> MethodDefinition
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: stmtItem :: Statement -> ModuleItem
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: stringExpr :: String -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: stringLit :: String -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: stringLitSingle :: String -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: subExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: switchCase :: Maybe Expression -> [Statement] -> SwitchCase
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: switchStmt :: Expression -> [SwitchCase] -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: thisExpr :: Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: throwStmt :: Expression -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: tryStmt :: [Statement] -> Maybe CatchClause -> Maybe [Statement] -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: typeTag :: TypeExpression -> DocumentationTag
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: unaryExpr :: UnaryOperator -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: undefinedExpr :: Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: undefinedLit :: Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: unionType :: [TypeExpression] -> TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: varDecl :: String -> Maybe Expression -> VariableDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: varDeclStmt :: VariableDeclaration -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: voidType :: TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: whileStmt :: Expression -> Statement -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: yieldExpr :: Maybe Expression -> Expression
- Hydra.TypeScript.Coder: analyzeTypeScriptFunction :: InferenceContext -> Graph -> Term -> Either t0 (FunctionStructure Graph)
- Hydra.TypeScript.Coder: collectForallParams :: Type -> [Name]
- Hydra.TypeScript.Coder: collectImports :: ModuleName -> Type -> Set Name
- Hydra.TypeScript.Coder: collectInnerTypeImports :: ModuleName -> Term -> Set Name
- Hydra.TypeScript.Coder: collectTermImports :: ModuleName -> Term -> Set Name
- Hydra.TypeScript.Coder: decimalDigitsAndScale :: String -> ((String, String), Int)
- Hydra.TypeScript.Coder: eagerFreeVariablesInTerm :: Term -> Set Name
- Hydra.TypeScript.Coder: encodeBindingAsStatement :: InferenceContext -> Graph -> ModuleName -> Binding -> Statement
- Hydra.TypeScript.Coder: encodeLazyCall :: InferenceContext -> Graph -> ModuleName -> Term -> [Term] -> [Bool] -> Expression
- Hydra.TypeScript.Coder: encodeLiteral :: Literal -> Expression
- Hydra.TypeScript.Coder: encodeLiteralType :: LiteralType -> TypeExpression
- Hydra.TypeScript.Coder: encodeParam :: t0 -> t1 -> ModuleName -> Name -> Type -> Pattern
- Hydra.TypeScript.Coder: encodeTerm :: InferenceContext -> Graph -> ModuleName -> Term -> Expression
- Hydra.TypeScript.Coder: encodeTermDefinition :: InferenceContext -> Graph -> ModuleName -> TermDefinition -> (Maybe String, ModuleItem)
- Hydra.TypeScript.Coder: encodeType :: t0 -> t1 -> ModuleName -> Type -> Either t2 TypeExpression
- Hydra.TypeScript.Coder: encodeTypeDefinition :: t0 -> Graph -> ModuleName -> TypeDefinition -> Either Error (Maybe String, ModuleItem)
- Hydra.TypeScript.Coder: encodeTypeOrAny :: t0 -> t1 -> ModuleName -> Type -> TypeExpression
- Hydra.TypeScript.Coder: filterNonLocalNames :: ModuleName -> Set Name -> Set Name
- Hydra.TypeScript.Coder: flattenApplication :: Term -> (Term, [Term])
- Hydra.TypeScript.Coder: forceLazyRefs :: Set Name -> Term -> Term
- Hydra.TypeScript.Coder: functionDeclarationFromTerm :: InferenceContext -> Graph -> ModuleName -> String -> Term -> Maybe Type -> FunctionDeclaration
- Hydra.TypeScript.Coder: importsToText :: Set String -> String -> ModuleName -> Set Name -> String
- Hydra.TypeScript.Coder: lazyFlagsForPrimitive :: Graph -> Name -> [Bool]
- Hydra.TypeScript.Coder: letBindingIsThunkCandidate :: Binding -> Bool
- Hydra.TypeScript.Coder: mkDocComment :: Maybe String -> Maybe DocumentationComment
- Hydra.TypeScript.Coder: moduleToTypeScript :: Set String -> Module -> [Definition] -> InferenceContext -> Graph -> Either Error (Map String String)
- Hydra.TypeScript.Coder: printInterfaceDeclaration :: InterfaceDeclaration -> String
- Hydra.TypeScript.Coder: printLiteral :: Literal -> String
- Hydra.TypeScript.Coder: printModuleItem :: ModuleItem -> String
- Hydra.TypeScript.Coder: printPropertySignature :: PropertySignature -> String
- Hydra.TypeScript.Coder: printTypeAliasDeclaration :: TypeAliasDeclaration -> String
- Hydra.TypeScript.Coder: printTypeExpression :: TypeExpression -> String
- Hydra.TypeScript.Coder: printTypeParameter :: TypeParameter -> String
- Hydra.TypeScript.Coder: printTypeParameterList :: [TypeParameter] -> String
- Hydra.TypeScript.Coder: sanitizeParamName :: Name -> String
- Hydra.TypeScript.Coder: sortBindingsTopologically :: [Binding] -> [Binding]
- Hydra.TypeScript.Coder: sortTermDefsTopologically :: t0 -> [TermDefinition] -> [TermDefinition]
- Hydra.TypeScript.Coder: stripForalls :: Type -> Type
- Hydra.TypeScript.Coder: termHeadVariable :: Term -> Maybe Name
- Hydra.TypeScript.Coder: thunkLazyBindings :: [Binding] -> Term -> ([Binding], Term)
- Hydra.TypeScript.Coder: thunkLazyLet :: Let -> Let
- Hydra.TypeScript.Coder: tsArray :: [Expression] -> Expression
- Hydra.TypeScript.Coder: tsArrow :: [String] -> Expression -> Expression
- Hydra.TypeScript.Coder: tsArrowTyped :: [Pattern] -> Expression -> Expression
- Hydra.TypeScript.Coder: tsAsAny :: Expression -> Expression
- Hydra.TypeScript.Coder: tsCall :: Expression -> [Expression] -> Expression
- Hydra.TypeScript.Coder: tsCond :: Expression -> Expression -> Expression -> Expression
- Hydra.TypeScript.Coder: tsDocEntityRef :: EntityReference -> String
- Hydra.TypeScript.Coder: tsEnvGetGraph :: t0 -> t0
- Hydra.TypeScript.Coder: tsEnvSetGraph :: t0 -> t1 -> t0
- Hydra.TypeScript.Coder: tsEscapeString :: String -> String
- Hydra.TypeScript.Coder: tsExprIdent :: String -> Expression
- Hydra.TypeScript.Coder: tsExprStr :: String -> Expression
- Hydra.TypeScript.Coder: tsIdent :: String -> Identifier
- Hydra.TypeScript.Coder: tsMember :: Expression -> String -> Expression
- Hydra.TypeScript.Coder: tsNamedType :: String -> TypeExpression
- Hydra.TypeScript.Coder: tsNew :: Expression -> [Expression] -> Expression
- Hydra.TypeScript.Coder: tsObject :: [(String, Expression)] -> Expression
- Hydra.TypeScript.Coder: tsParam :: String -> TypeParameter
- Hydra.TypeScript.Coder: tsParamApp1 :: String -> TypeExpression -> TypeExpression
- Hydra.TypeScript.Coder: tsParamApp2 :: String -> TypeExpression -> TypeExpression -> TypeExpression
- Hydra.TypeScript.Coder: tsParen :: Expression -> Expression
- Hydra.TypeScript.Coder: tsPropSig :: String -> Bool -> TypeExpression -> PropertySignature
- Hydra.TypeScript.Coder: tsPropSigWithDoc :: String -> Bool -> TypeExpression -> Maybe DocumentationComment -> PropertySignature
- Hydra.TypeScript.Coder: tsReadonlyMap :: TypeExpression -> TypeExpression -> TypeExpression
- Hydra.TypeScript.Coder: tsReadonlySet :: TypeExpression -> TypeExpression
- Hydra.TypeScript.Coder: tsTuple :: [TypeExpression] -> TypeExpression
- Hydra.TypeScript.Coder: tsTypedIdent :: String -> TypeExpression -> Pattern
- Hydra.TypeScript.Coder: tsUndefined :: Expression
- Hydra.TypeScript.Language: typeScriptLanguage :: Language
- Hydra.TypeScript.Language: typeScriptReservedWords :: Set String
- Hydra.TypeScript.Operators: addOp :: Op
- Hydra.TypeScript.Operators: appOp :: Op
- Hydra.TypeScript.Operators: arrowOp :: Op
- Hydra.TypeScript.Operators: assignOp :: Op
- Hydra.TypeScript.Operators: bitwiseAndOp :: Op
- Hydra.TypeScript.Operators: bitwiseOrOp :: Op
- Hydra.TypeScript.Operators: bitwiseXorOp :: Op
- Hydra.TypeScript.Operators: colonOp :: Op
- Hydra.TypeScript.Operators: commaOp :: Op
- Hydra.TypeScript.Operators: defineOp :: Op
- Hydra.TypeScript.Operators: divideOp :: Op
- Hydra.TypeScript.Operators: equalOp :: Op
- Hydra.TypeScript.Operators: exponentiateOp :: Op
- Hydra.TypeScript.Operators: greaterThanOp :: Op
- Hydra.TypeScript.Operators: greaterThanOrEqualOp :: Op
- Hydra.TypeScript.Operators: inOp :: Op
- Hydra.TypeScript.Operators: instanceOfOp :: Op
- Hydra.TypeScript.Operators: leftShiftOp :: Op
- Hydra.TypeScript.Operators: lessThanOp :: Op
- Hydra.TypeScript.Operators: lessThanOrEqualOp :: Op
- Hydra.TypeScript.Operators: logicalAndOp :: Op
- Hydra.TypeScript.Operators: logicalOrOp :: Op
- Hydra.TypeScript.Operators: memberOp :: Op
- Hydra.TypeScript.Operators: moduloOp :: Op
- Hydra.TypeScript.Operators: multiplyOp :: Op
- Hydra.TypeScript.Operators: notEqualOp :: Op
- Hydra.TypeScript.Operators: nullishCoalescingOp :: Op
- Hydra.TypeScript.Operators: optionalChainOp :: Op
- Hydra.TypeScript.Operators: rightShiftOp :: Op
- Hydra.TypeScript.Operators: strictEqualOp :: Op
- Hydra.TypeScript.Operators: strictNotEqualOp :: Op
- Hydra.TypeScript.Operators: subtractOp :: Op
- Hydra.TypeScript.Operators: ternaryOp :: Op
- Hydra.TypeScript.Operators: unsignedRightShiftOp :: Op
- Hydra.TypeScript.Serde: allDigits :: [Int] -> Bool
- Hydra.TypeScript.Serde: arrayElementToExpr :: ArrayElement -> Expr
- Hydra.TypeScript.Serde: arrayExpressionToExpr :: [ArrayElement] -> Expr
- Hydra.TypeScript.Serde: arrayPatternToExpr :: [Maybe Pattern] -> Expr
- Hydra.TypeScript.Serde: arrowFunctionExpressionToExpr :: ArrowFunctionExpression -> Expr
- Hydra.TypeScript.Serde: assignmentExpressionToExpr :: AssignmentExpression -> Expr
- Hydra.TypeScript.Serde: assignmentOperatorToString :: AssignmentOperator -> String
- Hydra.TypeScript.Serde: assignmentPatternToExpr :: AssignmentPattern -> Expr
- Hydra.TypeScript.Serde: binaryExpressionToExpr :: BinaryExpression -> Expr
- Hydra.TypeScript.Serde: binaryOperatorToExpr :: BinaryOperator -> Op
- Hydra.TypeScript.Serde: blockStatementToExpr :: [Statement] -> Expr
- Hydra.TypeScript.Serde: breakStatementToExpr :: Maybe Identifier -> Expr
- Hydra.TypeScript.Serde: callExpressionToExpr :: CallExpression -> Expr
- Hydra.TypeScript.Serde: catchClauseToExpr :: CatchClause -> Expr
- Hydra.TypeScript.Serde: classDeclarationToExpr :: ClassDeclaration -> Expr
- Hydra.TypeScript.Serde: classDeclarationWithCommentsToExpr :: ClassDeclarationWithComments -> Expr
- Hydra.TypeScript.Serde: conditionalExpressionToExpr :: ConditionalExpression -> Expr
- Hydra.TypeScript.Serde: continueStatementToExpr :: Maybe Identifier -> Expr
- Hydra.TypeScript.Serde: doWhileStatementToExpr :: DoWhileStatement -> Expr
- Hydra.TypeScript.Serde: documentationCommentToExpr :: DocumentationComment -> Expr
- Hydra.TypeScript.Serde: documentationTagToLine :: DocumentationTag -> String
- Hydra.TypeScript.Serde: escapeString :: String -> Bool -> String
- Hydra.TypeScript.Serde: exportAllToExpr :: ExportAllDeclaration -> Expr
- Hydra.TypeScript.Serde: exportDeclarationToExpr :: ExportDeclaration -> Expr
- Hydra.TypeScript.Serde: exportSpecifierToExpr :: ExportSpecifier -> Expr
- Hydra.TypeScript.Serde: expressionToExpr :: Expression -> Expr
- Hydra.TypeScript.Serde: forInStatementToExpr :: ForInStatement -> Expr
- Hydra.TypeScript.Serde: forOfStatementToExpr :: ForOfStatement -> Expr
- Hydra.TypeScript.Serde: forStatementToExpr :: ForStatement -> Expr
- Hydra.TypeScript.Serde: formatImportSpecifiers :: [Expr] -> Expr
- Hydra.TypeScript.Serde: functionDeclarationToExpr :: FunctionDeclaration -> Expr
- Hydra.TypeScript.Serde: functionDeclarationWithCommentsToExpr :: FunctionDeclarationWithComments -> Expr
- Hydra.TypeScript.Serde: functionExpressionToExpr :: FunctionExpression -> Expr
- Hydra.TypeScript.Serde: identifierToExpr :: Identifier -> Expr
- Hydra.TypeScript.Serde: ifStatementToExpr :: IfStatement -> Expr
- Hydra.TypeScript.Serde: importDeclarationToExpr :: ImportDeclaration -> Expr
- Hydra.TypeScript.Serde: importSpecifierToExpr :: ImportClause -> Expr
- Hydra.TypeScript.Serde: isKernelTypeVarName :: String -> Bool
- Hydra.TypeScript.Serde: labeledStatementToExpr :: LabeledStatement -> Expr
- Hydra.TypeScript.Serde: literalToExpr :: Literal -> Expr
- Hydra.TypeScript.Serde: memberExpressionToExpr :: MemberExpression -> Expr
- Hydra.TypeScript.Serde: methodDefinitionToExpr :: MethodDefinition -> Expr
- Hydra.TypeScript.Serde: moduleItemToExpr :: ModuleItem -> Expr
- Hydra.TypeScript.Serde: moduleItemWithCommentsToExpr :: ModuleItemWithComments -> Expr
- Hydra.TypeScript.Serde: namedExportToExpr :: NamedExport -> Expr
- Hydra.TypeScript.Serde: numericLiteralToExpr :: NumericLiteral -> Expr
- Hydra.TypeScript.Serde: objectExpressionToExpr :: [Property] -> Expr
- Hydra.TypeScript.Serde: objectPatternPropertyToExpr :: ObjectPatternProperty -> Expr
- Hydra.TypeScript.Serde: objectPatternToExpr :: ObjectPattern -> Expr
- Hydra.TypeScript.Serde: patternToExpr :: Pattern -> Expr
- Hydra.TypeScript.Serde: patternToString :: Pattern -> String
- Hydra.TypeScript.Serde: programToExpr :: Program -> Expr
- Hydra.TypeScript.Serde: propertyToExpr :: Property -> Expr
- Hydra.TypeScript.Serde: returnStatementToExpr :: Maybe Expression -> Expr
- Hydra.TypeScript.Serde: statementToExpr :: Statement -> Expr
- Hydra.TypeScript.Serde: stringLiteralToExpr :: StringLiteral -> Expr
- Hydra.TypeScript.Serde: switchCaseToExpr :: SwitchCase -> Expr
- Hydra.TypeScript.Serde: switchStatementToExpr :: SwitchStatement -> Expr
- Hydra.TypeScript.Serde: templateLiteralToExpr :: TemplateLiteral -> Expr
- Hydra.TypeScript.Serde: throwStatementToExpr :: ThrowStatement -> Expr
- Hydra.TypeScript.Serde: toLineComment :: String -> String
- Hydra.TypeScript.Serde: toTypeScriptComments :: String -> [DocumentationTag] -> String
- Hydra.TypeScript.Serde: tryStatementToExpr :: TryStatement -> Expr
- Hydra.TypeScript.Serde: tsTypeExpressionToString :: TypeExpression -> String
- Hydra.TypeScript.Serde: typeExpressionToString :: TypeExpression -> String
- Hydra.TypeScript.Serde: typedPatternToExpr :: TypedPattern -> Expr
- Hydra.TypeScript.Serde: unaryExpressionToExpr :: UnaryExpression -> Expr
- Hydra.TypeScript.Serde: unaryOperatorToString :: UnaryOperator -> String
- Hydra.TypeScript.Serde: variableDeclarationToExpr :: VariableDeclaration -> Expr
- Hydra.TypeScript.Serde: variableDeclaratorToExpr :: VariableDeclarator -> Expr
- Hydra.TypeScript.Serde: variableKindToExpr :: VariableKind -> Expr
- Hydra.TypeScript.Serde: whileStatementToExpr :: WhileStatement -> Expr
- Hydra.TypeScript.Syntax: ArrayElementExpression :: Expression -> ArrayElement
- Hydra.TypeScript.Syntax: ArrayElementHole :: ArrayElement
- Hydra.TypeScript.Syntax: ArrayElementSpread :: SpreadElement -> ArrayElement
- Hydra.TypeScript.Syntax: ArrayTypeExpression :: TypeExpression -> ArrayTypeExpression
- Hydra.TypeScript.Syntax: ArrowFunctionBodyBlock :: BlockStatement -> ArrowFunctionBody
- Hydra.TypeScript.Syntax: ArrowFunctionBodyExpression :: Expression -> ArrowFunctionBody
- Hydra.TypeScript.Syntax: ArrowFunctionExpression :: [Pattern] -> ArrowFunctionBody -> Bool -> ArrowFunctionExpression
- Hydra.TypeScript.Syntax: AsExpression :: Expression -> TypeExpression -> AsExpression
- Hydra.TypeScript.Syntax: AssignmentExpression :: AssignmentOperator -> Pattern -> Expression -> AssignmentExpression
- Hydra.TypeScript.Syntax: AssignmentOperatorAddAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorAndAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorBitwiseAndAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorBitwiseOrAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorBitwiseXorAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorDivideAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorExponentiateAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorLeftShiftAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorModuloAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorMultiplyAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorNullishAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorOrAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorRightShiftAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorSubtractAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorUnsignedRightShiftAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentPattern :: Pattern -> Expression -> AssignmentPattern
- Hydra.TypeScript.Syntax: BinaryExpression :: BinaryOperator -> Expression -> Expression -> BinaryExpression
- Hydra.TypeScript.Syntax: BinaryOperatorAdd :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorAnd :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorBitwiseAnd :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorBitwiseOr :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorBitwiseXor :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorDivide :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorExponentiate :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorGreaterThan :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorGreaterThanOrEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorIn :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorInstanceof :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorLeftShift :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorLessThan :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorLessThanOrEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorModulo :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorMultiply :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorNotEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorNullishCoalescing :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorOr :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorRightShift :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorStrictEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorStrictNotEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorSubtract :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorUnsignedRightShift :: BinaryOperator
- Hydra.TypeScript.Syntax: CallExpression :: Expression -> [Expression] -> Bool -> CallExpression
- Hydra.TypeScript.Syntax: CatchClause :: Maybe Pattern -> BlockStatement -> CatchClause
- Hydra.TypeScript.Syntax: ClassDeclaration :: Identifier -> Maybe Expression -> ClassBody -> ClassDeclaration
- Hydra.TypeScript.Syntax: ClassDeclarationWithComments :: ClassDeclaration -> Maybe DocumentationComment -> ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: CommentBlock :: String -> Comment
- Hydra.TypeScript.Syntax: CommentDocumentation :: DocumentationComment -> Comment
- Hydra.TypeScript.Syntax: CommentLine :: String -> Comment
- Hydra.TypeScript.Syntax: ConditionalExpression :: Expression -> Expression -> Expression -> ConditionalExpression
- Hydra.TypeScript.Syntax: DoWhileStatement :: Statement -> Expression -> DoWhileStatement
- Hydra.TypeScript.Syntax: DocumentationComment :: String -> [DocumentationTag] -> DocumentationComment
- Hydra.TypeScript.Syntax: DocumentationTag :: String -> Maybe TypeExpression -> Maybe Identifier -> String -> DocumentationTag
- Hydra.TypeScript.Syntax: ExportAllDeclaration :: Maybe Identifier -> StringLiteral -> ExportAllDeclaration
- Hydra.TypeScript.Syntax: ExportDeclarationAll :: ExportAllDeclaration -> ExportDeclaration
- Hydra.TypeScript.Syntax: ExportDeclarationDeclaration :: Statement -> ExportDeclaration
- Hydra.TypeScript.Syntax: ExportDeclarationDefault :: Expression -> ExportDeclaration
- Hydra.TypeScript.Syntax: ExportDeclarationNamed :: NamedExport -> ExportDeclaration
- Hydra.TypeScript.Syntax: ExportSpecifier :: Identifier -> Identifier -> ExportSpecifier
- Hydra.TypeScript.Syntax: ExpressionArray :: ArrayExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionArrow :: ArrowFunctionExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionAsExpression :: AsExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionAssignment :: AssignmentExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionAwait :: Expression -> Expression
- Hydra.TypeScript.Syntax: ExpressionBinary :: BinaryExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionCall :: CallExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionConditional :: ConditionalExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionFunction :: FunctionExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionIdentifier :: Identifier -> Expression
- Hydra.TypeScript.Syntax: ExpressionLiteral :: Literal -> Expression
- Hydra.TypeScript.Syntax: ExpressionMember :: MemberExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionNew :: CallExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionObject :: ObjectExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionParenthesized :: Expression -> Expression
- Hydra.TypeScript.Syntax: ExpressionSequence :: [Expression] -> Expression
- Hydra.TypeScript.Syntax: ExpressionSpread :: SpreadElement -> Expression
- Hydra.TypeScript.Syntax: ExpressionThis :: Expression
- Hydra.TypeScript.Syntax: ExpressionUnary :: UnaryExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionYield :: Maybe Expression -> Expression
- Hydra.TypeScript.Syntax: ForInLeftPattern :: Pattern -> ForInLeft
- Hydra.TypeScript.Syntax: ForInLeftVariable :: VariableDeclaration -> ForInLeft
- Hydra.TypeScript.Syntax: ForInStatement :: ForInLeft -> Expression -> Statement -> ForInStatement
- Hydra.TypeScript.Syntax: ForInitExpression :: Expression -> ForInit
- Hydra.TypeScript.Syntax: ForInitVariable :: VariableDeclaration -> ForInit
- Hydra.TypeScript.Syntax: ForOfStatement :: Bool -> ForInLeft -> Expression -> Statement -> ForOfStatement
- Hydra.TypeScript.Syntax: ForStatement :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> ForStatement
- Hydra.TypeScript.Syntax: FunctionDeclaration :: Identifier -> [Pattern] -> BlockStatement -> Bool -> Bool -> FunctionDeclaration
- Hydra.TypeScript.Syntax: FunctionDeclarationWithComments :: FunctionDeclaration -> Maybe DocumentationComment -> FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: FunctionExpression :: Maybe Identifier -> [Pattern] -> BlockStatement -> Bool -> Bool -> FunctionExpression
- Hydra.TypeScript.Syntax: FunctionTypeExpression :: [TypeParameter] -> [TypeExpression] -> TypeExpression -> FunctionTypeExpression
- Hydra.TypeScript.Syntax: Identifier :: String -> Identifier
- Hydra.TypeScript.Syntax: IfStatement :: Expression -> Statement -> Maybe Statement -> IfStatement
- Hydra.TypeScript.Syntax: ImportClauseDefault :: ImportDefaultSpecifier -> ImportClause
- Hydra.TypeScript.Syntax: ImportClauseNamed :: ImportSpecifier -> ImportClause
- Hydra.TypeScript.Syntax: ImportClauseNamespace :: ImportNamespaceSpecifier -> ImportClause
- Hydra.TypeScript.Syntax: ImportDeclaration :: [ImportClause] -> StringLiteral -> ImportDeclaration
- Hydra.TypeScript.Syntax: ImportDefaultSpecifier :: Identifier -> ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: ImportNamespaceSpecifier :: Identifier -> ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: ImportSpecifier :: Identifier -> Identifier -> ImportSpecifier
- Hydra.TypeScript.Syntax: InterfaceDeclaration :: Identifier -> [TypeParameter] -> [TypeExpression] -> [PropertySignature] -> InterfaceDeclaration
- Hydra.TypeScript.Syntax: LabeledStatement :: Identifier -> Statement -> LabeledStatement
- Hydra.TypeScript.Syntax: LiteralBigInt :: Integer -> Literal
- Hydra.TypeScript.Syntax: LiteralBoolean :: Bool -> Literal
- Hydra.TypeScript.Syntax: LiteralNull :: Literal
- Hydra.TypeScript.Syntax: LiteralNumber :: NumericLiteral -> Literal
- Hydra.TypeScript.Syntax: LiteralString :: StringLiteral -> Literal
- Hydra.TypeScript.Syntax: LiteralTemplate :: TemplateLiteral -> Literal
- Hydra.TypeScript.Syntax: LiteralUndefined :: Literal
- Hydra.TypeScript.Syntax: MemberExpression :: Expression -> Expression -> Bool -> Bool -> MemberExpression
- Hydra.TypeScript.Syntax: MethodDefinition :: Expression -> FunctionExpression -> MethodKind -> Bool -> Bool -> MethodDefinition
- Hydra.TypeScript.Syntax: MethodKindConstructor :: MethodKind
- Hydra.TypeScript.Syntax: MethodKindGet :: MethodKind
- Hydra.TypeScript.Syntax: MethodKindMethod :: MethodKind
- Hydra.TypeScript.Syntax: MethodKindSet :: MethodKind
- Hydra.TypeScript.Syntax: ModuleItemExport :: ExportDeclaration -> ModuleItem
- Hydra.TypeScript.Syntax: ModuleItemImport :: ImportDeclaration -> ModuleItem
- Hydra.TypeScript.Syntax: ModuleItemInterface :: InterfaceDeclaration -> ModuleItem
- Hydra.TypeScript.Syntax: ModuleItemStatement :: Statement -> ModuleItem
- Hydra.TypeScript.Syntax: ModuleItemTypeAlias :: TypeAliasDeclaration -> ModuleItem
- Hydra.TypeScript.Syntax: ModuleItemWithComments :: ModuleItem -> Maybe DocumentationComment -> ModuleItemWithComments
- Hydra.TypeScript.Syntax: NamedExport :: [ExportSpecifier] -> Maybe StringLiteral -> NamedExport
- Hydra.TypeScript.Syntax: NumericLiteralFloat :: Double -> NumericLiteral
- Hydra.TypeScript.Syntax: NumericLiteralInteger :: Int64 -> NumericLiteral
- Hydra.TypeScript.Syntax: ObjectPattern :: [ObjectPatternProperty] -> ObjectPattern
- Hydra.TypeScript.Syntax: ObjectPatternPropertyProperty :: Property -> ObjectPatternProperty
- Hydra.TypeScript.Syntax: ObjectPatternPropertyRest :: RestElement -> ObjectPatternProperty
- Hydra.TypeScript.Syntax: ParameterizedTypeExpression :: TypeExpression -> [TypeExpression] -> ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: PatternArray :: ArrayPattern -> Pattern
- Hydra.TypeScript.Syntax: PatternAssignment :: AssignmentPattern -> Pattern
- Hydra.TypeScript.Syntax: PatternIdentifier :: Identifier -> Pattern
- Hydra.TypeScript.Syntax: PatternObject :: ObjectPattern -> Pattern
- Hydra.TypeScript.Syntax: PatternRest :: RestElement -> Pattern
- Hydra.TypeScript.Syntax: PatternTyped :: TypedPattern -> Pattern
- Hydra.TypeScript.Syntax: Program :: [ModuleItem] -> SourceType -> Program
- Hydra.TypeScript.Syntax: Property :: Expression -> Expression -> PropertyKind -> Bool -> Bool -> Property
- Hydra.TypeScript.Syntax: PropertyKindGet :: PropertyKind
- Hydra.TypeScript.Syntax: PropertyKindInit :: PropertyKind
- Hydra.TypeScript.Syntax: PropertyKindSet :: PropertyKind
- Hydra.TypeScript.Syntax: PropertySignature :: Identifier -> TypeExpression -> Bool -> Bool -> Maybe DocumentationComment -> PropertySignature
- Hydra.TypeScript.Syntax: RestElement :: Pattern -> RestElement
- Hydra.TypeScript.Syntax: SourceTypeModule :: SourceType
- Hydra.TypeScript.Syntax: SourceTypeScript :: SourceType
- Hydra.TypeScript.Syntax: SpreadElement :: Expression -> SpreadElement
- Hydra.TypeScript.Syntax: StatementBlock :: BlockStatement -> Statement
- Hydra.TypeScript.Syntax: StatementBreak :: BreakStatement -> Statement
- Hydra.TypeScript.Syntax: StatementClassDeclaration :: ClassDeclaration -> Statement
- Hydra.TypeScript.Syntax: StatementContinue :: ContinueStatement -> Statement
- Hydra.TypeScript.Syntax: StatementDebugger :: Statement
- Hydra.TypeScript.Syntax: StatementDoWhile :: DoWhileStatement -> Statement
- Hydra.TypeScript.Syntax: StatementEmpty :: Statement
- Hydra.TypeScript.Syntax: StatementExpression :: Expression -> Statement
- Hydra.TypeScript.Syntax: StatementFor :: ForStatement -> Statement
- Hydra.TypeScript.Syntax: StatementForIn :: ForInStatement -> Statement
- Hydra.TypeScript.Syntax: StatementForOf :: ForOfStatement -> Statement
- Hydra.TypeScript.Syntax: StatementFunctionDeclaration :: FunctionDeclaration -> Statement
- Hydra.TypeScript.Syntax: StatementIf :: IfStatement -> Statement
- Hydra.TypeScript.Syntax: StatementLabeled :: LabeledStatement -> Statement
- Hydra.TypeScript.Syntax: StatementReturn :: ReturnStatement -> Statement
- Hydra.TypeScript.Syntax: StatementSwitch :: SwitchStatement -> Statement
- Hydra.TypeScript.Syntax: StatementThrow :: ThrowStatement -> Statement
- Hydra.TypeScript.Syntax: StatementTry :: TryStatement -> Statement
- Hydra.TypeScript.Syntax: StatementVariableDeclaration :: VariableDeclaration -> Statement
- Hydra.TypeScript.Syntax: StatementWhile :: WhileStatement -> Statement
- Hydra.TypeScript.Syntax: StatementWithComments :: Statement -> Maybe DocumentationComment -> StatementWithComments
- Hydra.TypeScript.Syntax: StringLiteral :: String -> Bool -> StringLiteral
- Hydra.TypeScript.Syntax: SwitchCase :: Maybe Expression -> [Statement] -> SwitchCase
- Hydra.TypeScript.Syntax: SwitchStatement :: Expression -> [SwitchCase] -> SwitchStatement
- Hydra.TypeScript.Syntax: TemplateElement :: String -> Bool -> TemplateElement
- Hydra.TypeScript.Syntax: TemplateLiteral :: [TemplateElement] -> [Expression] -> TemplateLiteral
- Hydra.TypeScript.Syntax: ThrowStatement :: Expression -> ThrowStatement
- Hydra.TypeScript.Syntax: TryStatement :: BlockStatement -> Maybe CatchClause -> Maybe BlockStatement -> TryStatement
- Hydra.TypeScript.Syntax: TypeAliasDeclaration :: Identifier -> [TypeParameter] -> TypeExpression -> TypeAliasDeclaration
- Hydra.TypeScript.Syntax: TypeAnnotation :: TypeExpression -> TypeAnnotation
- Hydra.TypeScript.Syntax: TypeExpressionAny :: TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionArray :: ArrayTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionFunction :: FunctionTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionIdentifier :: Identifier -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionIntersection :: IntersectionTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionLiteral :: Literal -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionNever :: TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionObject :: ObjectTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionOptional :: TypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionParameterized :: ParameterizedTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionReadonly :: TypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionTuple :: TupleTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionUnion :: UnionTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionUnknown :: TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionVoid :: TypeExpression
- Hydra.TypeScript.Syntax: TypeParameter :: Identifier -> Maybe TypeExpression -> Maybe TypeExpression -> TypeParameter
- Hydra.TypeScript.Syntax: TypedPattern :: Pattern -> TypeExpression -> TypedPattern
- Hydra.TypeScript.Syntax: UnaryExpression :: UnaryOperator -> Expression -> Bool -> UnaryExpression
- Hydra.TypeScript.Syntax: UnaryOperatorBitwiseNot :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorDecrement :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorDelete :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorIncrement :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorNegate :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorNot :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorPlus :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorTypeof :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorVoid :: UnaryOperator
- Hydra.TypeScript.Syntax: VariableDeclaration :: VariableKind -> [VariableDeclarator] -> VariableDeclaration
- Hydra.TypeScript.Syntax: VariableDeclarator :: Pattern -> Maybe Expression -> VariableDeclarator
- Hydra.TypeScript.Syntax: VariableKindConst :: VariableKind
- Hydra.TypeScript.Syntax: VariableKindLet :: VariableKind
- Hydra.TypeScript.Syntax: VariableKindVar :: VariableKind
- Hydra.TypeScript.Syntax: WhileStatement :: Expression -> Statement -> WhileStatement
- Hydra.TypeScript.Syntax: [arrowFunctionExpressionAsync] :: ArrowFunctionExpression -> Bool
- Hydra.TypeScript.Syntax: [arrowFunctionExpressionBody] :: ArrowFunctionExpression -> ArrowFunctionBody
- Hydra.TypeScript.Syntax: [arrowFunctionExpressionParams] :: ArrowFunctionExpression -> [Pattern]
- Hydra.TypeScript.Syntax: [asExpressionExpression] :: AsExpression -> Expression
- Hydra.TypeScript.Syntax: [asExpressionType] :: AsExpression -> TypeExpression
- Hydra.TypeScript.Syntax: [assignmentExpressionLeft] :: AssignmentExpression -> Pattern
- Hydra.TypeScript.Syntax: [assignmentExpressionOperator] :: AssignmentExpression -> AssignmentOperator
- Hydra.TypeScript.Syntax: [assignmentExpressionRight] :: AssignmentExpression -> Expression
- Hydra.TypeScript.Syntax: [assignmentPatternLeft] :: AssignmentPattern -> Pattern
- Hydra.TypeScript.Syntax: [assignmentPatternRight] :: AssignmentPattern -> Expression
- Hydra.TypeScript.Syntax: [binaryExpressionLeft] :: BinaryExpression -> Expression
- Hydra.TypeScript.Syntax: [binaryExpressionOperator] :: BinaryExpression -> BinaryOperator
- Hydra.TypeScript.Syntax: [binaryExpressionRight] :: BinaryExpression -> Expression
- Hydra.TypeScript.Syntax: [callExpressionArguments] :: CallExpression -> [Expression]
- Hydra.TypeScript.Syntax: [callExpressionCallee] :: CallExpression -> Expression
- Hydra.TypeScript.Syntax: [callExpressionOptional] :: CallExpression -> Bool
- Hydra.TypeScript.Syntax: [catchClauseBody] :: CatchClause -> BlockStatement
- Hydra.TypeScript.Syntax: [catchClauseParam] :: CatchClause -> Maybe Pattern
- Hydra.TypeScript.Syntax: [classDeclarationBody] :: ClassDeclaration -> ClassBody
- Hydra.TypeScript.Syntax: [classDeclarationId] :: ClassDeclaration -> Identifier
- Hydra.TypeScript.Syntax: [classDeclarationSuperClass] :: ClassDeclaration -> Maybe Expression
- Hydra.TypeScript.Syntax: [classDeclarationWithCommentsBody] :: ClassDeclarationWithComments -> ClassDeclaration
- Hydra.TypeScript.Syntax: [classDeclarationWithCommentsComments] :: ClassDeclarationWithComments -> Maybe DocumentationComment
- Hydra.TypeScript.Syntax: [conditionalExpressionAlternate] :: ConditionalExpression -> Expression
- Hydra.TypeScript.Syntax: [conditionalExpressionConsequent] :: ConditionalExpression -> Expression
- Hydra.TypeScript.Syntax: [conditionalExpressionTest] :: ConditionalExpression -> Expression
- Hydra.TypeScript.Syntax: [doWhileStatementBody] :: DoWhileStatement -> Statement
- Hydra.TypeScript.Syntax: [doWhileStatementTest] :: DoWhileStatement -> Expression
- Hydra.TypeScript.Syntax: [documentationCommentDescription] :: DocumentationComment -> String
- Hydra.TypeScript.Syntax: [documentationCommentTags] :: DocumentationComment -> [DocumentationTag]
- Hydra.TypeScript.Syntax: [documentationTagDescription] :: DocumentationTag -> String
- Hydra.TypeScript.Syntax: [documentationTagName] :: DocumentationTag -> String
- Hydra.TypeScript.Syntax: [documentationTagParamName] :: DocumentationTag -> Maybe Identifier
- Hydra.TypeScript.Syntax: [documentationTagType] :: DocumentationTag -> Maybe TypeExpression
- Hydra.TypeScript.Syntax: [exportAllDeclarationExported] :: ExportAllDeclaration -> Maybe Identifier
- Hydra.TypeScript.Syntax: [exportAllDeclarationSource] :: ExportAllDeclaration -> StringLiteral
- Hydra.TypeScript.Syntax: [exportSpecifierExported] :: ExportSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [exportSpecifierLocal] :: ExportSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [forInStatementBody] :: ForInStatement -> Statement
- Hydra.TypeScript.Syntax: [forInStatementLeft] :: ForInStatement -> ForInLeft
- Hydra.TypeScript.Syntax: [forInStatementRight] :: ForInStatement -> Expression
- Hydra.TypeScript.Syntax: [forOfStatementAwait] :: ForOfStatement -> Bool
- Hydra.TypeScript.Syntax: [forOfStatementBody] :: ForOfStatement -> Statement
- Hydra.TypeScript.Syntax: [forOfStatementLeft] :: ForOfStatement -> ForInLeft
- Hydra.TypeScript.Syntax: [forOfStatementRight] :: ForOfStatement -> Expression
- Hydra.TypeScript.Syntax: [forStatementBody] :: ForStatement -> Statement
- Hydra.TypeScript.Syntax: [forStatementInit] :: ForStatement -> Maybe ForInit
- Hydra.TypeScript.Syntax: [forStatementTest] :: ForStatement -> Maybe Expression
- Hydra.TypeScript.Syntax: [forStatementUpdate] :: ForStatement -> Maybe Expression
- Hydra.TypeScript.Syntax: [functionDeclarationAsync] :: FunctionDeclaration -> Bool
- Hydra.TypeScript.Syntax: [functionDeclarationBody] :: FunctionDeclaration -> BlockStatement
- Hydra.TypeScript.Syntax: [functionDeclarationGenerator] :: FunctionDeclaration -> Bool
- Hydra.TypeScript.Syntax: [functionDeclarationId] :: FunctionDeclaration -> Identifier
- Hydra.TypeScript.Syntax: [functionDeclarationParams] :: FunctionDeclaration -> [Pattern]
- Hydra.TypeScript.Syntax: [functionDeclarationWithCommentsBody] :: FunctionDeclarationWithComments -> FunctionDeclaration
- Hydra.TypeScript.Syntax: [functionDeclarationWithCommentsComments] :: FunctionDeclarationWithComments -> Maybe DocumentationComment
- Hydra.TypeScript.Syntax: [functionExpressionAsync] :: FunctionExpression -> Bool
- Hydra.TypeScript.Syntax: [functionExpressionBody] :: FunctionExpression -> BlockStatement
- Hydra.TypeScript.Syntax: [functionExpressionGenerator] :: FunctionExpression -> Bool
- Hydra.TypeScript.Syntax: [functionExpressionId] :: FunctionExpression -> Maybe Identifier
- Hydra.TypeScript.Syntax: [functionExpressionParams] :: FunctionExpression -> [Pattern]
- Hydra.TypeScript.Syntax: [functionTypeExpressionParameters] :: FunctionTypeExpression -> [TypeExpression]
- Hydra.TypeScript.Syntax: [functionTypeExpressionReturnType] :: FunctionTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: [functionTypeExpressionTypeParameters] :: FunctionTypeExpression -> [TypeParameter]
- Hydra.TypeScript.Syntax: [ifStatementAlternate] :: IfStatement -> Maybe Statement
- Hydra.TypeScript.Syntax: [ifStatementConsequent] :: IfStatement -> Statement
- Hydra.TypeScript.Syntax: [ifStatementTest] :: IfStatement -> Expression
- Hydra.TypeScript.Syntax: [importDeclarationSource] :: ImportDeclaration -> StringLiteral
- Hydra.TypeScript.Syntax: [importDeclarationSpecifiers] :: ImportDeclaration -> [ImportClause]
- Hydra.TypeScript.Syntax: [importSpecifierImported] :: ImportSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [importSpecifierLocal] :: ImportSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [interfaceDeclarationExtends] :: InterfaceDeclaration -> [TypeExpression]
- Hydra.TypeScript.Syntax: [interfaceDeclarationMembers] :: InterfaceDeclaration -> [PropertySignature]
- Hydra.TypeScript.Syntax: [interfaceDeclarationName] :: InterfaceDeclaration -> Identifier
- Hydra.TypeScript.Syntax: [interfaceDeclarationTypeParameters] :: InterfaceDeclaration -> [TypeParameter]
- Hydra.TypeScript.Syntax: [labeledStatementBody] :: LabeledStatement -> Statement
- Hydra.TypeScript.Syntax: [labeledStatementLabel] :: LabeledStatement -> Identifier
- Hydra.TypeScript.Syntax: [memberExpressionComputed] :: MemberExpression -> Bool
- Hydra.TypeScript.Syntax: [memberExpressionObject] :: MemberExpression -> Expression
- Hydra.TypeScript.Syntax: [memberExpressionOptional] :: MemberExpression -> Bool
- Hydra.TypeScript.Syntax: [memberExpressionProperty] :: MemberExpression -> Expression
- Hydra.TypeScript.Syntax: [methodDefinitionComputed] :: MethodDefinition -> Bool
- Hydra.TypeScript.Syntax: [methodDefinitionKey] :: MethodDefinition -> Expression
- Hydra.TypeScript.Syntax: [methodDefinitionKind] :: MethodDefinition -> MethodKind
- Hydra.TypeScript.Syntax: [methodDefinitionStatic] :: MethodDefinition -> Bool
- Hydra.TypeScript.Syntax: [methodDefinitionValue] :: MethodDefinition -> FunctionExpression
- Hydra.TypeScript.Syntax: [moduleItemWithCommentsBody] :: ModuleItemWithComments -> ModuleItem
- Hydra.TypeScript.Syntax: [moduleItemWithCommentsComments] :: ModuleItemWithComments -> Maybe DocumentationComment
- Hydra.TypeScript.Syntax: [namedExportSource] :: NamedExport -> Maybe StringLiteral
- Hydra.TypeScript.Syntax: [namedExportSpecifiers] :: NamedExport -> [ExportSpecifier]
- Hydra.TypeScript.Syntax: [objectPatternProperties] :: ObjectPattern -> [ObjectPatternProperty]
- Hydra.TypeScript.Syntax: [parameterizedTypeExpressionArguments] :: ParameterizedTypeExpression -> [TypeExpression]
- Hydra.TypeScript.Syntax: [parameterizedTypeExpressionBase] :: ParameterizedTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: [programBody] :: Program -> [ModuleItem]
- Hydra.TypeScript.Syntax: [programSourceType] :: Program -> SourceType
- Hydra.TypeScript.Syntax: [propertyComputed] :: Property -> Bool
- Hydra.TypeScript.Syntax: [propertyKey] :: Property -> Expression
- Hydra.TypeScript.Syntax: [propertyKind] :: Property -> PropertyKind
- Hydra.TypeScript.Syntax: [propertyShorthand] :: Property -> Bool
- Hydra.TypeScript.Syntax: [propertySignatureComments] :: PropertySignature -> Maybe DocumentationComment
- Hydra.TypeScript.Syntax: [propertySignatureName] :: PropertySignature -> Identifier
- Hydra.TypeScript.Syntax: [propertySignatureOptional] :: PropertySignature -> Bool
- Hydra.TypeScript.Syntax: [propertySignatureReadonly] :: PropertySignature -> Bool
- Hydra.TypeScript.Syntax: [propertySignatureType] :: PropertySignature -> TypeExpression
- Hydra.TypeScript.Syntax: [propertyValue] :: Property -> Expression
- Hydra.TypeScript.Syntax: [statementWithCommentsBody] :: StatementWithComments -> Statement
- Hydra.TypeScript.Syntax: [statementWithCommentsComments] :: StatementWithComments -> Maybe DocumentationComment
- Hydra.TypeScript.Syntax: [stringLiteralSingleQuote] :: StringLiteral -> Bool
- Hydra.TypeScript.Syntax: [stringLiteralValue] :: StringLiteral -> String
- Hydra.TypeScript.Syntax: [switchCaseConsequent] :: SwitchCase -> [Statement]
- Hydra.TypeScript.Syntax: [switchCaseTest] :: SwitchCase -> Maybe Expression
- Hydra.TypeScript.Syntax: [switchStatementCases] :: SwitchStatement -> [SwitchCase]
- Hydra.TypeScript.Syntax: [switchStatementDiscriminant] :: SwitchStatement -> Expression
- Hydra.TypeScript.Syntax: [templateElementTail] :: TemplateElement -> Bool
- Hydra.TypeScript.Syntax: [templateElementValue] :: TemplateElement -> String
- Hydra.TypeScript.Syntax: [templateLiteralExpressions] :: TemplateLiteral -> [Expression]
- Hydra.TypeScript.Syntax: [templateLiteralQuasis] :: TemplateLiteral -> [TemplateElement]
- Hydra.TypeScript.Syntax: [tryStatementBlock] :: TryStatement -> BlockStatement
- Hydra.TypeScript.Syntax: [tryStatementFinalizer] :: TryStatement -> Maybe BlockStatement
- Hydra.TypeScript.Syntax: [tryStatementHandler] :: TryStatement -> Maybe CatchClause
- Hydra.TypeScript.Syntax: [typeAliasDeclarationName] :: TypeAliasDeclaration -> Identifier
- Hydra.TypeScript.Syntax: [typeAliasDeclarationTypeParameters] :: TypeAliasDeclaration -> [TypeParameter]
- Hydra.TypeScript.Syntax: [typeAliasDeclarationType] :: TypeAliasDeclaration -> TypeExpression
- Hydra.TypeScript.Syntax: [typeParameterConstraint] :: TypeParameter -> Maybe TypeExpression
- Hydra.TypeScript.Syntax: [typeParameterDefault] :: TypeParameter -> Maybe TypeExpression
- Hydra.TypeScript.Syntax: [typeParameterName] :: TypeParameter -> Identifier
- Hydra.TypeScript.Syntax: [typedPatternPattern] :: TypedPattern -> Pattern
- Hydra.TypeScript.Syntax: [typedPatternType] :: TypedPattern -> TypeExpression
- Hydra.TypeScript.Syntax: [unArrayTypeExpression] :: ArrayTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: [unIdentifier] :: Identifier -> String
- Hydra.TypeScript.Syntax: [unImportDefaultSpecifier] :: ImportDefaultSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [unImportNamespaceSpecifier] :: ImportNamespaceSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [unRestElement] :: RestElement -> Pattern
- Hydra.TypeScript.Syntax: [unSpreadElement] :: SpreadElement -> Expression
- Hydra.TypeScript.Syntax: [unThrowStatement] :: ThrowStatement -> Expression
- Hydra.TypeScript.Syntax: [unTypeAnnotation] :: TypeAnnotation -> TypeExpression
- Hydra.TypeScript.Syntax: [unaryExpressionArgument] :: UnaryExpression -> Expression
- Hydra.TypeScript.Syntax: [unaryExpressionOperator] :: UnaryExpression -> UnaryOperator
- Hydra.TypeScript.Syntax: [unaryExpressionPrefix] :: UnaryExpression -> Bool
- Hydra.TypeScript.Syntax: [variableDeclarationDeclarations] :: VariableDeclaration -> [VariableDeclarator]
- Hydra.TypeScript.Syntax: [variableDeclarationKind] :: VariableDeclaration -> VariableKind
- Hydra.TypeScript.Syntax: [variableDeclaratorId] :: VariableDeclarator -> Pattern
- Hydra.TypeScript.Syntax: [variableDeclaratorInit] :: VariableDeclarator -> Maybe Expression
- Hydra.TypeScript.Syntax: [whileStatementBody] :: WhileStatement -> Statement
- Hydra.TypeScript.Syntax: [whileStatementTest] :: WhileStatement -> Expression
- Hydra.TypeScript.Syntax: _ArrayElement :: Name
- Hydra.TypeScript.Syntax: _ArrayElement_expression :: Name
- Hydra.TypeScript.Syntax: _ArrayElement_hole :: Name
- Hydra.TypeScript.Syntax: _ArrayElement_spread :: Name
- Hydra.TypeScript.Syntax: _ArrayExpression :: Name
- Hydra.TypeScript.Syntax: _ArrayPattern :: Name
- Hydra.TypeScript.Syntax: _ArrayTypeExpression :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionBody :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionBody_block :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionBody_expression :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionExpression :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionExpression_async :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionExpression_body :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionExpression_params :: Name
- Hydra.TypeScript.Syntax: _AsExpression :: Name
- Hydra.TypeScript.Syntax: _AsExpression_expression :: Name
- Hydra.TypeScript.Syntax: _AsExpression_type :: Name
- Hydra.TypeScript.Syntax: _AssignmentExpression :: Name
- Hydra.TypeScript.Syntax: _AssignmentExpression_left :: Name
- Hydra.TypeScript.Syntax: _AssignmentExpression_operator :: Name
- Hydra.TypeScript.Syntax: _AssignmentExpression_right :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_addAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_andAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_assign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_bitwiseAndAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_bitwiseOrAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_bitwiseXorAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_divideAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_exponentiateAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_leftShiftAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_moduloAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_multiplyAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_nullishAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_orAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_rightShiftAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_subtractAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_unsignedRightShiftAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentPattern :: Name
- Hydra.TypeScript.Syntax: _AssignmentPattern_left :: Name
- Hydra.TypeScript.Syntax: _AssignmentPattern_right :: Name
- Hydra.TypeScript.Syntax: _BinaryExpression :: Name
- Hydra.TypeScript.Syntax: _BinaryExpression_left :: Name
- Hydra.TypeScript.Syntax: _BinaryExpression_operator :: Name
- Hydra.TypeScript.Syntax: _BinaryExpression_right :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_add :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_and :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_bitwiseAnd :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_bitwiseOr :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_bitwiseXor :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_divide :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_equal :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_exponentiate :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_greaterThan :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_greaterThanOrEqual :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_in :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_instanceof :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_leftShift :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_lessThan :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_lessThanOrEqual :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_modulo :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_multiply :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_notEqual :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_nullishCoalescing :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_or :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_rightShift :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_strictEqual :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_strictNotEqual :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_subtract :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_unsignedRightShift :: Name
- Hydra.TypeScript.Syntax: _BlockStatement :: Name
- Hydra.TypeScript.Syntax: _BreakStatement :: Name
- Hydra.TypeScript.Syntax: _CallExpression :: Name
- Hydra.TypeScript.Syntax: _CallExpression_arguments :: Name
- Hydra.TypeScript.Syntax: _CallExpression_callee :: Name
- Hydra.TypeScript.Syntax: _CallExpression_optional :: Name
- Hydra.TypeScript.Syntax: _CatchClause :: Name
- Hydra.TypeScript.Syntax: _CatchClause_body :: Name
- Hydra.TypeScript.Syntax: _CatchClause_param :: Name
- Hydra.TypeScript.Syntax: _ClassBody :: Name
- Hydra.TypeScript.Syntax: _ClassDeclaration :: Name
- Hydra.TypeScript.Syntax: _ClassDeclarationWithComments :: Name
- Hydra.TypeScript.Syntax: _ClassDeclarationWithComments_body :: Name
- Hydra.TypeScript.Syntax: _ClassDeclarationWithComments_comments :: Name
- Hydra.TypeScript.Syntax: _ClassDeclaration_body :: Name
- Hydra.TypeScript.Syntax: _ClassDeclaration_id :: Name
- Hydra.TypeScript.Syntax: _ClassDeclaration_superClass :: Name
- Hydra.TypeScript.Syntax: _Comment :: Name
- Hydra.TypeScript.Syntax: _Comment_block :: Name
- Hydra.TypeScript.Syntax: _Comment_documentation :: Name
- Hydra.TypeScript.Syntax: _Comment_line :: Name
- Hydra.TypeScript.Syntax: _ConditionalExpression :: Name
- Hydra.TypeScript.Syntax: _ConditionalExpression_alternate :: Name
- Hydra.TypeScript.Syntax: _ConditionalExpression_consequent :: Name
- Hydra.TypeScript.Syntax: _ConditionalExpression_test :: Name
- Hydra.TypeScript.Syntax: _ContinueStatement :: Name
- Hydra.TypeScript.Syntax: _DoWhileStatement :: Name
- Hydra.TypeScript.Syntax: _DoWhileStatement_body :: Name
- Hydra.TypeScript.Syntax: _DoWhileStatement_test :: Name
- Hydra.TypeScript.Syntax: _DocumentationComment :: Name
- Hydra.TypeScript.Syntax: _DocumentationComment_description :: Name
- Hydra.TypeScript.Syntax: _DocumentationComment_tags :: Name
- Hydra.TypeScript.Syntax: _DocumentationTag :: Name
- Hydra.TypeScript.Syntax: _DocumentationTag_description :: Name
- Hydra.TypeScript.Syntax: _DocumentationTag_name :: Name
- Hydra.TypeScript.Syntax: _DocumentationTag_paramName :: Name
- Hydra.TypeScript.Syntax: _DocumentationTag_type :: Name
- Hydra.TypeScript.Syntax: _ExportAllDeclaration :: Name
- Hydra.TypeScript.Syntax: _ExportAllDeclaration_exported :: Name
- Hydra.TypeScript.Syntax: _ExportAllDeclaration_source :: Name
- Hydra.TypeScript.Syntax: _ExportDeclaration :: Name
- Hydra.TypeScript.Syntax: _ExportDeclaration_all :: Name
- Hydra.TypeScript.Syntax: _ExportDeclaration_declaration :: Name
- Hydra.TypeScript.Syntax: _ExportDeclaration_default :: Name
- Hydra.TypeScript.Syntax: _ExportDeclaration_named :: Name
- Hydra.TypeScript.Syntax: _ExportSpecifier :: Name
- Hydra.TypeScript.Syntax: _ExportSpecifier_exported :: Name
- Hydra.TypeScript.Syntax: _ExportSpecifier_local :: Name
- Hydra.TypeScript.Syntax: _Expression :: Name
- Hydra.TypeScript.Syntax: _Expression_array :: Name
- Hydra.TypeScript.Syntax: _Expression_arrow :: Name
- Hydra.TypeScript.Syntax: _Expression_asExpression :: Name
- Hydra.TypeScript.Syntax: _Expression_assignment :: Name
- Hydra.TypeScript.Syntax: _Expression_await :: Name
- Hydra.TypeScript.Syntax: _Expression_binary :: Name
- Hydra.TypeScript.Syntax: _Expression_call :: Name
- Hydra.TypeScript.Syntax: _Expression_conditional :: Name
- Hydra.TypeScript.Syntax: _Expression_function :: Name
- Hydra.TypeScript.Syntax: _Expression_identifier :: Name
- Hydra.TypeScript.Syntax: _Expression_literal :: Name
- Hydra.TypeScript.Syntax: _Expression_member :: Name
- Hydra.TypeScript.Syntax: _Expression_new :: Name
- Hydra.TypeScript.Syntax: _Expression_object :: Name
- Hydra.TypeScript.Syntax: _Expression_parenthesized :: Name
- Hydra.TypeScript.Syntax: _Expression_sequence :: Name
- Hydra.TypeScript.Syntax: _Expression_spread :: Name
- Hydra.TypeScript.Syntax: _Expression_this :: Name
- Hydra.TypeScript.Syntax: _Expression_unary :: Name
- Hydra.TypeScript.Syntax: _Expression_yield :: Name
- Hydra.TypeScript.Syntax: _ForInLeft :: Name
- Hydra.TypeScript.Syntax: _ForInLeft_pattern :: Name
- Hydra.TypeScript.Syntax: _ForInLeft_variable :: Name
- Hydra.TypeScript.Syntax: _ForInStatement :: Name
- Hydra.TypeScript.Syntax: _ForInStatement_body :: Name
- Hydra.TypeScript.Syntax: _ForInStatement_left :: Name
- Hydra.TypeScript.Syntax: _ForInStatement_right :: Name
- Hydra.TypeScript.Syntax: _ForInit :: Name
- Hydra.TypeScript.Syntax: _ForInit_expression :: Name
- Hydra.TypeScript.Syntax: _ForInit_variable :: Name
- Hydra.TypeScript.Syntax: _ForOfStatement :: Name
- Hydra.TypeScript.Syntax: _ForOfStatement_await :: Name
- Hydra.TypeScript.Syntax: _ForOfStatement_body :: Name
- Hydra.TypeScript.Syntax: _ForOfStatement_left :: Name
- Hydra.TypeScript.Syntax: _ForOfStatement_right :: Name
- Hydra.TypeScript.Syntax: _ForStatement :: Name
- Hydra.TypeScript.Syntax: _ForStatement_body :: Name
- Hydra.TypeScript.Syntax: _ForStatement_init :: Name
- Hydra.TypeScript.Syntax: _ForStatement_test :: Name
- Hydra.TypeScript.Syntax: _ForStatement_update :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclarationWithComments :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclarationWithComments_body :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclarationWithComments_comments :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration_async :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration_body :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration_generator :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration_id :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration_params :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression_async :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression_body :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression_generator :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression_id :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression_params :: Name
- Hydra.TypeScript.Syntax: _FunctionTypeExpression :: Name
- Hydra.TypeScript.Syntax: _FunctionTypeExpression_parameters :: Name
- Hydra.TypeScript.Syntax: _FunctionTypeExpression_returnType :: Name
- Hydra.TypeScript.Syntax: _FunctionTypeExpression_typeParameters :: Name
- Hydra.TypeScript.Syntax: _Identifier :: Name
- Hydra.TypeScript.Syntax: _IfStatement :: Name
- Hydra.TypeScript.Syntax: _IfStatement_alternate :: Name
- Hydra.TypeScript.Syntax: _IfStatement_consequent :: Name
- Hydra.TypeScript.Syntax: _IfStatement_test :: Name
- Hydra.TypeScript.Syntax: _ImportClause :: Name
- Hydra.TypeScript.Syntax: _ImportClause_default :: Name
- Hydra.TypeScript.Syntax: _ImportClause_named :: Name
- Hydra.TypeScript.Syntax: _ImportClause_namespace :: Name
- Hydra.TypeScript.Syntax: _ImportDeclaration :: Name
- Hydra.TypeScript.Syntax: _ImportDeclaration_source :: Name
- Hydra.TypeScript.Syntax: _ImportDeclaration_specifiers :: Name
- Hydra.TypeScript.Syntax: _ImportDefaultSpecifier :: Name
- Hydra.TypeScript.Syntax: _ImportNamespaceSpecifier :: Name
- Hydra.TypeScript.Syntax: _ImportSpecifier :: Name
- Hydra.TypeScript.Syntax: _ImportSpecifier_imported :: Name
- Hydra.TypeScript.Syntax: _ImportSpecifier_local :: Name
- Hydra.TypeScript.Syntax: _InterfaceDeclaration :: Name
- Hydra.TypeScript.Syntax: _InterfaceDeclaration_extends :: Name
- Hydra.TypeScript.Syntax: _InterfaceDeclaration_members :: Name
- Hydra.TypeScript.Syntax: _InterfaceDeclaration_name :: Name
- Hydra.TypeScript.Syntax: _InterfaceDeclaration_typeParameters :: Name
- Hydra.TypeScript.Syntax: _IntersectionTypeExpression :: Name
- Hydra.TypeScript.Syntax: _LabeledStatement :: Name
- Hydra.TypeScript.Syntax: _LabeledStatement_body :: Name
- Hydra.TypeScript.Syntax: _LabeledStatement_label :: Name
- Hydra.TypeScript.Syntax: _Literal :: Name
- Hydra.TypeScript.Syntax: _Literal_bigInt :: Name
- Hydra.TypeScript.Syntax: _Literal_boolean :: Name
- Hydra.TypeScript.Syntax: _Literal_null :: Name
- Hydra.TypeScript.Syntax: _Literal_number :: Name
- Hydra.TypeScript.Syntax: _Literal_string :: Name
- Hydra.TypeScript.Syntax: _Literal_template :: Name
- Hydra.TypeScript.Syntax: _Literal_undefined :: Name
- Hydra.TypeScript.Syntax: _MemberExpression :: Name
- Hydra.TypeScript.Syntax: _MemberExpression_computed :: Name
- Hydra.TypeScript.Syntax: _MemberExpression_object :: Name
- Hydra.TypeScript.Syntax: _MemberExpression_optional :: Name
- Hydra.TypeScript.Syntax: _MemberExpression_property :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition_computed :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition_key :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition_kind :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition_static :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition_value :: Name
- Hydra.TypeScript.Syntax: _MethodKind :: Name
- Hydra.TypeScript.Syntax: _MethodKind_constructor :: Name
- Hydra.TypeScript.Syntax: _MethodKind_get :: Name
- Hydra.TypeScript.Syntax: _MethodKind_method :: Name
- Hydra.TypeScript.Syntax: _MethodKind_set :: Name
- Hydra.TypeScript.Syntax: _ModuleItem :: Name
- Hydra.TypeScript.Syntax: _ModuleItemWithComments :: Name
- Hydra.TypeScript.Syntax: _ModuleItemWithComments_body :: Name
- Hydra.TypeScript.Syntax: _ModuleItemWithComments_comments :: Name
- Hydra.TypeScript.Syntax: _ModuleItem_export :: Name
- Hydra.TypeScript.Syntax: _ModuleItem_import :: Name
- Hydra.TypeScript.Syntax: _ModuleItem_interface :: Name
- Hydra.TypeScript.Syntax: _ModuleItem_statement :: Name
- Hydra.TypeScript.Syntax: _ModuleItem_typeAlias :: Name
- Hydra.TypeScript.Syntax: _NamedExport :: Name
- Hydra.TypeScript.Syntax: _NamedExport_source :: Name
- Hydra.TypeScript.Syntax: _NamedExport_specifiers :: Name
- Hydra.TypeScript.Syntax: _NumericLiteral :: Name
- Hydra.TypeScript.Syntax: _NumericLiteral_float :: Name
- Hydra.TypeScript.Syntax: _NumericLiteral_integer :: Name
- Hydra.TypeScript.Syntax: _ObjectExpression :: Name
- Hydra.TypeScript.Syntax: _ObjectPattern :: Name
- Hydra.TypeScript.Syntax: _ObjectPatternProperty :: Name
- Hydra.TypeScript.Syntax: _ObjectPatternProperty_property :: Name
- Hydra.TypeScript.Syntax: _ObjectPatternProperty_rest :: Name
- Hydra.TypeScript.Syntax: _ObjectPattern_properties :: Name
- Hydra.TypeScript.Syntax: _ObjectTypeExpression :: Name
- Hydra.TypeScript.Syntax: _ParameterizedTypeExpression :: Name
- Hydra.TypeScript.Syntax: _ParameterizedTypeExpression_arguments :: Name
- Hydra.TypeScript.Syntax: _ParameterizedTypeExpression_base :: Name
- Hydra.TypeScript.Syntax: _Pattern :: Name
- Hydra.TypeScript.Syntax: _Pattern_array :: Name
- Hydra.TypeScript.Syntax: _Pattern_assignment :: Name
- Hydra.TypeScript.Syntax: _Pattern_identifier :: Name
- Hydra.TypeScript.Syntax: _Pattern_object :: Name
- Hydra.TypeScript.Syntax: _Pattern_rest :: Name
- Hydra.TypeScript.Syntax: _Pattern_typed :: Name
- Hydra.TypeScript.Syntax: _Program :: Name
- Hydra.TypeScript.Syntax: _Program_body :: Name
- Hydra.TypeScript.Syntax: _Program_sourceType :: Name
- Hydra.TypeScript.Syntax: _Property :: Name
- Hydra.TypeScript.Syntax: _PropertyKind :: Name
- Hydra.TypeScript.Syntax: _PropertyKind_get :: Name
- Hydra.TypeScript.Syntax: _PropertyKind_init :: Name
- Hydra.TypeScript.Syntax: _PropertyKind_set :: Name
- Hydra.TypeScript.Syntax: _PropertySignature :: Name
- Hydra.TypeScript.Syntax: _PropertySignature_comments :: Name
- Hydra.TypeScript.Syntax: _PropertySignature_name :: Name
- Hydra.TypeScript.Syntax: _PropertySignature_optional :: Name
- Hydra.TypeScript.Syntax: _PropertySignature_readonly :: Name
- Hydra.TypeScript.Syntax: _PropertySignature_type :: Name
- Hydra.TypeScript.Syntax: _Property_computed :: Name
- Hydra.TypeScript.Syntax: _Property_key :: Name
- Hydra.TypeScript.Syntax: _Property_kind :: Name
- Hydra.TypeScript.Syntax: _Property_shorthand :: Name
- Hydra.TypeScript.Syntax: _Property_value :: Name
- Hydra.TypeScript.Syntax: _QualifiedName :: Name
- Hydra.TypeScript.Syntax: _RestElement :: Name
- Hydra.TypeScript.Syntax: _ReturnStatement :: Name
- Hydra.TypeScript.Syntax: _SourceType :: Name
- Hydra.TypeScript.Syntax: _SourceType_module :: Name
- Hydra.TypeScript.Syntax: _SourceType_script :: Name
- Hydra.TypeScript.Syntax: _SpreadElement :: Name
- Hydra.TypeScript.Syntax: _Statement :: Name
- Hydra.TypeScript.Syntax: _StatementWithComments :: Name
- Hydra.TypeScript.Syntax: _StatementWithComments_body :: Name
- Hydra.TypeScript.Syntax: _StatementWithComments_comments :: Name
- Hydra.TypeScript.Syntax: _Statement_block :: Name
- Hydra.TypeScript.Syntax: _Statement_break :: Name
- Hydra.TypeScript.Syntax: _Statement_classDeclaration :: Name
- Hydra.TypeScript.Syntax: _Statement_continue :: Name
- Hydra.TypeScript.Syntax: _Statement_debugger :: Name
- Hydra.TypeScript.Syntax: _Statement_doWhile :: Name
- Hydra.TypeScript.Syntax: _Statement_empty :: Name
- Hydra.TypeScript.Syntax: _Statement_expression :: Name
- Hydra.TypeScript.Syntax: _Statement_for :: Name
- Hydra.TypeScript.Syntax: _Statement_forIn :: Name
- Hydra.TypeScript.Syntax: _Statement_forOf :: Name
- Hydra.TypeScript.Syntax: _Statement_functionDeclaration :: Name
- Hydra.TypeScript.Syntax: _Statement_if :: Name
- Hydra.TypeScript.Syntax: _Statement_labeled :: Name
- Hydra.TypeScript.Syntax: _Statement_return :: Name
- Hydra.TypeScript.Syntax: _Statement_switch :: Name
- Hydra.TypeScript.Syntax: _Statement_throw :: Name
- Hydra.TypeScript.Syntax: _Statement_try :: Name
- Hydra.TypeScript.Syntax: _Statement_variableDeclaration :: Name
- Hydra.TypeScript.Syntax: _Statement_while :: Name
- Hydra.TypeScript.Syntax: _StringLiteral :: Name
- Hydra.TypeScript.Syntax: _StringLiteral_singleQuote :: Name
- Hydra.TypeScript.Syntax: _StringLiteral_value :: Name
- Hydra.TypeScript.Syntax: _SwitchCase :: Name
- Hydra.TypeScript.Syntax: _SwitchCase_consequent :: Name
- Hydra.TypeScript.Syntax: _SwitchCase_test :: Name
- Hydra.TypeScript.Syntax: _SwitchStatement :: Name
- Hydra.TypeScript.Syntax: _SwitchStatement_cases :: Name
- Hydra.TypeScript.Syntax: _SwitchStatement_discriminant :: Name
- Hydra.TypeScript.Syntax: _TemplateElement :: Name
- Hydra.TypeScript.Syntax: _TemplateElement_tail :: Name
- Hydra.TypeScript.Syntax: _TemplateElement_value :: Name
- Hydra.TypeScript.Syntax: _TemplateLiteral :: Name
- Hydra.TypeScript.Syntax: _TemplateLiteral_expressions :: Name
- Hydra.TypeScript.Syntax: _TemplateLiteral_quasis :: Name
- Hydra.TypeScript.Syntax: _ThrowStatement :: Name
- Hydra.TypeScript.Syntax: _TryStatement :: Name
- Hydra.TypeScript.Syntax: _TryStatement_block :: Name
- Hydra.TypeScript.Syntax: _TryStatement_finalizer :: Name
- Hydra.TypeScript.Syntax: _TryStatement_handler :: Name
- Hydra.TypeScript.Syntax: _TupleTypeExpression :: Name
- Hydra.TypeScript.Syntax: _TypeAliasDeclaration :: Name
- Hydra.TypeScript.Syntax: _TypeAliasDeclaration_name :: Name
- Hydra.TypeScript.Syntax: _TypeAliasDeclaration_type :: Name
- Hydra.TypeScript.Syntax: _TypeAliasDeclaration_typeParameters :: Name
- Hydra.TypeScript.Syntax: _TypeAnnotation :: Name
- Hydra.TypeScript.Syntax: _TypeExpression :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_any :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_array :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_function :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_identifier :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_intersection :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_literal :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_never :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_object :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_optional :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_parameterized :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_readonly :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_tuple :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_union :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_unknown :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_void :: Name
- Hydra.TypeScript.Syntax: _TypeParameter :: Name
- Hydra.TypeScript.Syntax: _TypeParameter_constraint :: Name
- Hydra.TypeScript.Syntax: _TypeParameter_default :: Name
- Hydra.TypeScript.Syntax: _TypeParameter_name :: Name
- Hydra.TypeScript.Syntax: _TypedPattern :: Name
- Hydra.TypeScript.Syntax: _TypedPattern_pattern :: Name
- Hydra.TypeScript.Syntax: _TypedPattern_type :: Name
- Hydra.TypeScript.Syntax: _UnaryExpression :: Name
- Hydra.TypeScript.Syntax: _UnaryExpression_argument :: Name
- Hydra.TypeScript.Syntax: _UnaryExpression_operator :: Name
- Hydra.TypeScript.Syntax: _UnaryExpression_prefix :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_bitwiseNot :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_decrement :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_delete :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_increment :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_negate :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_not :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_plus :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_typeof :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_void :: Name
- Hydra.TypeScript.Syntax: _UnionTypeExpression :: Name
- Hydra.TypeScript.Syntax: _VariableDeclaration :: Name
- Hydra.TypeScript.Syntax: _VariableDeclaration_declarations :: Name
- Hydra.TypeScript.Syntax: _VariableDeclaration_kind :: Name
- Hydra.TypeScript.Syntax: _VariableDeclarator :: Name
- Hydra.TypeScript.Syntax: _VariableDeclarator_id :: Name
- Hydra.TypeScript.Syntax: _VariableDeclarator_init :: Name
- Hydra.TypeScript.Syntax: _VariableKind :: Name
- Hydra.TypeScript.Syntax: _VariableKind_const :: Name
- Hydra.TypeScript.Syntax: _VariableKind_let :: Name
- Hydra.TypeScript.Syntax: _VariableKind_var :: Name
- Hydra.TypeScript.Syntax: _WhileStatement :: Name
- Hydra.TypeScript.Syntax: _WhileStatement_body :: Name
- Hydra.TypeScript.Syntax: _WhileStatement_test :: Name
- Hydra.TypeScript.Syntax: data ArrayElement
- Hydra.TypeScript.Syntax: data ArrowFunctionBody
- Hydra.TypeScript.Syntax: data ArrowFunctionExpression
- Hydra.TypeScript.Syntax: data AsExpression
- Hydra.TypeScript.Syntax: data AssignmentExpression
- Hydra.TypeScript.Syntax: data AssignmentOperator
- Hydra.TypeScript.Syntax: data AssignmentPattern
- Hydra.TypeScript.Syntax: data BinaryExpression
- Hydra.TypeScript.Syntax: data BinaryOperator
- Hydra.TypeScript.Syntax: data CallExpression
- Hydra.TypeScript.Syntax: data CatchClause
- Hydra.TypeScript.Syntax: data ClassDeclaration
- Hydra.TypeScript.Syntax: data ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: data Comment
- Hydra.TypeScript.Syntax: data ConditionalExpression
- Hydra.TypeScript.Syntax: data DoWhileStatement
- Hydra.TypeScript.Syntax: data DocumentationComment
- Hydra.TypeScript.Syntax: data DocumentationTag
- Hydra.TypeScript.Syntax: data ExportAllDeclaration
- Hydra.TypeScript.Syntax: data ExportDeclaration
- Hydra.TypeScript.Syntax: data ExportSpecifier
- Hydra.TypeScript.Syntax: data Expression
- Hydra.TypeScript.Syntax: data ForInLeft
- Hydra.TypeScript.Syntax: data ForInStatement
- Hydra.TypeScript.Syntax: data ForInit
- Hydra.TypeScript.Syntax: data ForOfStatement
- Hydra.TypeScript.Syntax: data ForStatement
- Hydra.TypeScript.Syntax: data FunctionDeclaration
- Hydra.TypeScript.Syntax: data FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: data FunctionExpression
- Hydra.TypeScript.Syntax: data FunctionTypeExpression
- Hydra.TypeScript.Syntax: data IfStatement
- Hydra.TypeScript.Syntax: data ImportClause
- Hydra.TypeScript.Syntax: data ImportDeclaration
- Hydra.TypeScript.Syntax: data ImportSpecifier
- Hydra.TypeScript.Syntax: data InterfaceDeclaration
- Hydra.TypeScript.Syntax: data LabeledStatement
- Hydra.TypeScript.Syntax: data Literal
- Hydra.TypeScript.Syntax: data MemberExpression
- Hydra.TypeScript.Syntax: data MethodDefinition
- Hydra.TypeScript.Syntax: data MethodKind
- Hydra.TypeScript.Syntax: data ModuleItem
- Hydra.TypeScript.Syntax: data ModuleItemWithComments
- Hydra.TypeScript.Syntax: data NamedExport
- Hydra.TypeScript.Syntax: data NumericLiteral
- Hydra.TypeScript.Syntax: data ObjectPattern
- Hydra.TypeScript.Syntax: data ObjectPatternProperty
- Hydra.TypeScript.Syntax: data ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: data Pattern
- Hydra.TypeScript.Syntax: data Program
- Hydra.TypeScript.Syntax: data Property
- Hydra.TypeScript.Syntax: data PropertyKind
- Hydra.TypeScript.Syntax: data PropertySignature
- Hydra.TypeScript.Syntax: data SourceType
- Hydra.TypeScript.Syntax: data Statement
- Hydra.TypeScript.Syntax: data StatementWithComments
- Hydra.TypeScript.Syntax: data StringLiteral
- Hydra.TypeScript.Syntax: data SwitchCase
- Hydra.TypeScript.Syntax: data SwitchStatement
- Hydra.TypeScript.Syntax: data TemplateElement
- Hydra.TypeScript.Syntax: data TemplateLiteral
- Hydra.TypeScript.Syntax: data TryStatement
- Hydra.TypeScript.Syntax: data TypeAliasDeclaration
- Hydra.TypeScript.Syntax: data TypeExpression
- Hydra.TypeScript.Syntax: data TypeParameter
- Hydra.TypeScript.Syntax: data TypedPattern
- Hydra.TypeScript.Syntax: data UnaryExpression
- Hydra.TypeScript.Syntax: data UnaryOperator
- Hydra.TypeScript.Syntax: data VariableDeclaration
- Hydra.TypeScript.Syntax: data VariableDeclarator
- Hydra.TypeScript.Syntax: data VariableKind
- Hydra.TypeScript.Syntax: data WhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ArrayElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ArrayTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ArrowFunctionBody
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ArrowFunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.AsExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.AssignmentExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.AssignmentOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.AssignmentPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.BinaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.BinaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.CallExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.CatchClause
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ClassDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Comment
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ConditionalExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.DoWhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.DocumentationComment
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.DocumentationTag
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ExportAllDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ExportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ExportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Expression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ForInLeft
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ForInStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ForInit
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ForOfStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ForStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.FunctionDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.FunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.FunctionTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Identifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.IfStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ImportClause
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ImportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ImportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.InterfaceDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.LabeledStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Literal
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.MemberExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.MethodDefinition
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.MethodKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ModuleItem
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ModuleItemWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.NamedExport
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.NumericLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ObjectPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ObjectPatternProperty
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Pattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Program
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Property
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.PropertyKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.PropertySignature
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.RestElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.SourceType
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.SpreadElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Statement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.StatementWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.StringLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.SwitchCase
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.SwitchStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TemplateElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TemplateLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ThrowStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TryStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TypeAliasDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TypeAnnotation
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TypeParameter
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TypedPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.UnaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.UnaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.VariableDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.VariableDeclarator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.VariableKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.WhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ArrayElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ArrayTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ArrowFunctionBody
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ArrowFunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.AsExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.AssignmentExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.AssignmentOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.AssignmentPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.BinaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.BinaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.CallExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.CatchClause
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ClassDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Comment
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ConditionalExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.DoWhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.DocumentationComment
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.DocumentationTag
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ExportAllDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ExportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ExportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Expression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ForInLeft
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ForInStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ForInit
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ForOfStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ForStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.FunctionDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.FunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.FunctionTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Identifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.IfStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ImportClause
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ImportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ImportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.InterfaceDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.LabeledStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Literal
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.MemberExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.MethodDefinition
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.MethodKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ModuleItem
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ModuleItemWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.NamedExport
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.NumericLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ObjectPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ObjectPatternProperty
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Pattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Program
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Property
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.PropertyKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.PropertySignature
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.RestElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.SourceType
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.SpreadElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Statement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.StatementWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.StringLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.SwitchCase
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.SwitchStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TemplateElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TemplateLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ThrowStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TryStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TypeAliasDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TypeAnnotation
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TypeParameter
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TypedPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.UnaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.UnaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.VariableDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.VariableDeclarator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.VariableKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.WhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ArrayElement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ArrayTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ArrowFunctionBody
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ArrowFunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.AsExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.AssignmentExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.AssignmentOperator
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.AssignmentPattern
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.BinaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.BinaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.CallExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.CatchClause
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ClassDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Comment
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ConditionalExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.DoWhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.DocumentationComment
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.DocumentationTag
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ExportAllDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ExportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ExportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Expression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ForInLeft
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ForInStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ForInit
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ForOfStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ForStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.FunctionDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.FunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.FunctionTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Identifier
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.IfStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ImportClause
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ImportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ImportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.InterfaceDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.LabeledStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Literal
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.MemberExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.MethodDefinition
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.MethodKind
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ModuleItem
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ModuleItemWithComments
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.NamedExport
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.NumericLiteral
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ObjectPattern
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ObjectPatternProperty
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Pattern
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Program
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Property
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.PropertyKind
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.PropertySignature
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.RestElement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.SourceType
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.SpreadElement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Statement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.StatementWithComments
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.StringLiteral
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.SwitchCase
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.SwitchStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TemplateElement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TemplateLiteral
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ThrowStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TryStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TypeAliasDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TypeAnnotation
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TypeParameter
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TypedPattern
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.UnaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.UnaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.VariableDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.VariableDeclarator
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.VariableKind
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.WhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ArrayElement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ArrayTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ArrowFunctionBody
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ArrowFunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.AsExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.AssignmentExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.AssignmentOperator
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.AssignmentPattern
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.BinaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.BinaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.CallExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.CatchClause
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ClassDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Comment
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ConditionalExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.DoWhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.DocumentationComment
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.DocumentationTag
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ExportAllDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ExportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ExportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Expression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ForInLeft
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ForInStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ForInit
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ForOfStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ForStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.FunctionDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.FunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.FunctionTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Identifier
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.IfStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ImportClause
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ImportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ImportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.InterfaceDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.LabeledStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Literal
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.MemberExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.MethodDefinition
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.MethodKind
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ModuleItem
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ModuleItemWithComments
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.NamedExport
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.NumericLiteral
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ObjectPattern
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ObjectPatternProperty
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Pattern
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Program
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Property
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.PropertyKind
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.PropertySignature
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.RestElement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.SourceType
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.SpreadElement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Statement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.StatementWithComments
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.StringLiteral
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.SwitchCase
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.SwitchStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TemplateElement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TemplateLiteral
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ThrowStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TryStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TypeAliasDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TypeAnnotation
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TypeParameter
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TypedPattern
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.UnaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.UnaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.VariableDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.VariableDeclarator
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.VariableKind
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.WhileStatement
- Hydra.TypeScript.Syntax: newtype ArrayTypeExpression
- Hydra.TypeScript.Syntax: newtype Identifier
- Hydra.TypeScript.Syntax: newtype ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: newtype ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: newtype RestElement
- Hydra.TypeScript.Syntax: newtype SpreadElement
- Hydra.TypeScript.Syntax: newtype ThrowStatement
- Hydra.TypeScript.Syntax: newtype TypeAnnotation
- Hydra.TypeScript.Syntax: type ArrayExpression = [ArrayElement]
- Hydra.TypeScript.Syntax: type ArrayPattern = [Maybe Pattern]
- Hydra.TypeScript.Syntax: type BlockStatement = [Statement]
- Hydra.TypeScript.Syntax: type BreakStatement = Maybe Identifier
- Hydra.TypeScript.Syntax: type ClassBody = [MethodDefinition]
- Hydra.TypeScript.Syntax: type ContinueStatement = Maybe Identifier
- Hydra.TypeScript.Syntax: type IntersectionTypeExpression = [TypeExpression]
- Hydra.TypeScript.Syntax: type ObjectExpression = [Property]
- Hydra.TypeScript.Syntax: type ObjectTypeExpression = [PropertySignature]
- Hydra.TypeScript.Syntax: type QualifiedName = [Identifier]
- Hydra.TypeScript.Syntax: type ReturnStatement = Maybe Expression
- Hydra.TypeScript.Syntax: type TupleTypeExpression = [TypeExpression]
- Hydra.TypeScript.Syntax: type UnionTypeExpression = [TypeExpression]
+ Hydra.Typescript.Coder: analyzeTypeScriptFunction :: InferenceContext -> Graph -> Term -> Either t0 (FunctionStructure Graph)
+ Hydra.Typescript.Coder: collectForallParams :: Type -> [Name]
+ Hydra.Typescript.Coder: collectImports :: ModuleName -> Type -> Set Name
+ Hydra.Typescript.Coder: collectInnerTypeImports :: ModuleName -> Term -> Set Name
+ Hydra.Typescript.Coder: collectTermImports :: ModuleName -> Term -> Set Name
+ Hydra.Typescript.Coder: decimalDigitsAndScale :: String -> ((String, String), Int)
+ Hydra.Typescript.Coder: eagerFreeVariablesInTerm :: Term -> Set Name
+ Hydra.Typescript.Coder: encodeBindingAsStatement :: InferenceContext -> Graph -> ModuleName -> Binding -> Statement
+ Hydra.Typescript.Coder: encodeLazyCall :: InferenceContext -> Graph -> ModuleName -> Term -> [Term] -> [Bool] -> Expression
+ Hydra.Typescript.Coder: encodeLiteral :: Literal -> Expression
+ Hydra.Typescript.Coder: encodeLiteralType :: LiteralType -> TypeExpression
+ Hydra.Typescript.Coder: encodeParam :: t0 -> t1 -> ModuleName -> Name -> Type -> Pattern
+ Hydra.Typescript.Coder: encodeTerm :: InferenceContext -> Graph -> ModuleName -> Term -> Expression
+ Hydra.Typescript.Coder: encodeTermDefinition :: InferenceContext -> Graph -> ModuleName -> TermDefinition -> (Maybe String, ModuleItem)
+ Hydra.Typescript.Coder: encodeType :: t0 -> t1 -> ModuleName -> Type -> Either t2 TypeExpression
+ Hydra.Typescript.Coder: encodeTypeDefinition :: t0 -> Graph -> ModuleName -> TypeDefinition -> Either Error (Maybe String, ModuleItem)
+ Hydra.Typescript.Coder: encodeTypeOrAny :: t0 -> t1 -> ModuleName -> Type -> TypeExpression
+ Hydra.Typescript.Coder: filterNonLocalNames :: ModuleName -> Set Name -> Set Name
+ Hydra.Typescript.Coder: flattenApplication :: Term -> (Term, [Term])
+ Hydra.Typescript.Coder: forceLazyRefs :: Set Name -> Term -> Term
+ Hydra.Typescript.Coder: functionDeclarationFromTerm :: InferenceContext -> Graph -> ModuleName -> String -> Term -> Maybe Type -> FunctionDeclaration
+ Hydra.Typescript.Coder: importsToText :: Set String -> String -> ModuleName -> Set Name -> String
+ Hydra.Typescript.Coder: lazyFlagsForPrimitive :: Graph -> Name -> [Bool]
+ Hydra.Typescript.Coder: letBindingIsThunkCandidate :: Binding -> Bool
+ Hydra.Typescript.Coder: mkDocComment :: Maybe String -> Maybe DocumentationComment
+ Hydra.Typescript.Coder: moduleToTypeScript :: Set String -> Module -> [Definition] -> InferenceContext -> Graph -> Either Error (Map String String)
+ Hydra.Typescript.Coder: printInterfaceDeclaration :: InterfaceDeclaration -> String
+ Hydra.Typescript.Coder: printLiteral :: Literal -> String
+ Hydra.Typescript.Coder: printModuleItem :: ModuleItem -> String
+ Hydra.Typescript.Coder: printPropertySignature :: PropertySignature -> String
+ Hydra.Typescript.Coder: printTypeAliasDeclaration :: TypeAliasDeclaration -> String
+ Hydra.Typescript.Coder: printTypeExpression :: TypeExpression -> String
+ Hydra.Typescript.Coder: printTypeParameter :: TypeParameter -> String
+ Hydra.Typescript.Coder: printTypeParameterList :: [TypeParameter] -> String
+ Hydra.Typescript.Coder: sanitizeParamName :: Name -> String
+ Hydra.Typescript.Coder: sortBindingsTopologically :: [Binding] -> [Binding]
+ Hydra.Typescript.Coder: sortTermDefsTopologically :: t0 -> [TermDefinition] -> [TermDefinition]
+ Hydra.Typescript.Coder: stripForalls :: Type -> Type
+ Hydra.Typescript.Coder: termHeadVariable :: Term -> Maybe Name
+ Hydra.Typescript.Coder: thunkLazyBindings :: [Binding] -> Term -> ([Binding], Term)
+ Hydra.Typescript.Coder: thunkLazyLet :: Let -> Let
+ Hydra.Typescript.Coder: tsArray :: [Expression] -> Expression
+ Hydra.Typescript.Coder: tsArrow :: [String] -> Expression -> Expression
+ Hydra.Typescript.Coder: tsArrowTyped :: [Pattern] -> Expression -> Expression
+ Hydra.Typescript.Coder: tsAsAny :: Expression -> Expression
+ Hydra.Typescript.Coder: tsCall :: Expression -> [Expression] -> Expression
+ Hydra.Typescript.Coder: tsCond :: Expression -> Expression -> Expression -> Expression
+ Hydra.Typescript.Coder: tsDocEntityRef :: EntityReference -> String
+ Hydra.Typescript.Coder: tsEnvGetGraph :: t0 -> t0
+ Hydra.Typescript.Coder: tsEnvSetGraph :: t0 -> t1 -> t0
+ Hydra.Typescript.Coder: tsEscapeString :: String -> String
+ Hydra.Typescript.Coder: tsExprIdent :: String -> Expression
+ Hydra.Typescript.Coder: tsExprStr :: String -> Expression
+ Hydra.Typescript.Coder: tsIdent :: String -> Identifier
+ Hydra.Typescript.Coder: tsMember :: Expression -> String -> Expression
+ Hydra.Typescript.Coder: tsNamedType :: String -> TypeExpression
+ Hydra.Typescript.Coder: tsNew :: Expression -> [Expression] -> Expression
+ Hydra.Typescript.Coder: tsObject :: [(String, Expression)] -> Expression
+ Hydra.Typescript.Coder: tsParam :: String -> TypeParameter
+ Hydra.Typescript.Coder: tsParamApp1 :: String -> TypeExpression -> TypeExpression
+ Hydra.Typescript.Coder: tsParamApp2 :: String -> TypeExpression -> TypeExpression -> TypeExpression
+ Hydra.Typescript.Coder: tsParen :: Expression -> Expression
+ Hydra.Typescript.Coder: tsPropSig :: String -> Bool -> TypeExpression -> PropertySignature
+ Hydra.Typescript.Coder: tsPropSigWithDoc :: String -> Bool -> TypeExpression -> Maybe DocumentationComment -> PropertySignature
+ Hydra.Typescript.Coder: tsReadonlyMap :: TypeExpression -> TypeExpression -> TypeExpression
+ Hydra.Typescript.Coder: tsReadonlySet :: TypeExpression -> TypeExpression
+ Hydra.Typescript.Coder: tsTuple :: [TypeExpression] -> TypeExpression
+ Hydra.Typescript.Coder: tsTypedIdent :: String -> TypeExpression -> Pattern
+ Hydra.Typescript.Coder: tsUndefined :: Expression
+ Hydra.Typescript.Dsl.Syntax: arrayElementArrayElement :: TypedName ArrayElement
+ Hydra.Typescript.Dsl.Syntax: arrayElementExpression :: TypedTerm Expression -> TypedTerm ArrayElement
+ Hydra.Typescript.Dsl.Syntax: arrayElementHole :: TypedTerm ArrayElement
+ Hydra.Typescript.Dsl.Syntax: arrayElementSpread :: TypedTerm SpreadElement -> TypedTerm ArrayElement
+ Hydra.Typescript.Dsl.Syntax: arrayTypeExpression :: TypedTerm TypeExpression -> TypedTerm ArrayTypeExpression
+ Hydra.Typescript.Dsl.Syntax: arrayTypeExpressionArrayTypeExpression :: TypedName ArrayTypeExpression
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionBodyArrowFunctionBody :: TypedName ArrowFunctionBody
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionBodyBlock :: TypedTerm BlockStatement -> TypedTerm ArrowFunctionBody
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionBodyExpression :: TypedTerm Expression -> TypedTerm ArrowFunctionBody
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpression :: TypedTerm [Pattern] -> TypedTerm ArrowFunctionBody -> TypedTerm Bool -> TypedTerm ArrowFunctionExpression
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionArrowFunctionExpression :: TypedName ArrowFunctionExpression
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionAsync :: TypedTerm ArrowFunctionExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionBody :: TypedTerm ArrowFunctionExpression -> TypedTerm ArrowFunctionBody
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionParams :: TypedTerm ArrowFunctionExpression -> TypedTerm [Pattern]
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionWithAsync :: TypedTerm ArrowFunctionExpression -> TypedTerm Bool -> TypedTerm ArrowFunctionExpression
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionWithBody :: TypedTerm ArrowFunctionExpression -> TypedTerm ArrowFunctionBody -> TypedTerm ArrowFunctionExpression
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionWithParams :: TypedTerm ArrowFunctionExpression -> TypedTerm [Pattern] -> TypedTerm ArrowFunctionExpression
+ Hydra.Typescript.Dsl.Syntax: asExpression :: TypedTerm Expression -> TypedTerm TypeExpression -> TypedTerm AsExpression
+ Hydra.Typescript.Dsl.Syntax: asExpressionAsExpression :: TypedName AsExpression
+ Hydra.Typescript.Dsl.Syntax: asExpressionExpression :: TypedTerm AsExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: asExpressionType :: TypedTerm AsExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: asExpressionWithExpression :: TypedTerm AsExpression -> TypedTerm Expression -> TypedTerm AsExpression
+ Hydra.Typescript.Dsl.Syntax: asExpressionWithType :: TypedTerm AsExpression -> TypedTerm TypeExpression -> TypedTerm AsExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpression :: TypedTerm AssignmentOperator -> TypedTerm Pattern -> TypedTerm Expression -> TypedTerm AssignmentExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionAssignmentExpression :: TypedName AssignmentExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionLeft :: TypedTerm AssignmentExpression -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionOperator :: TypedTerm AssignmentExpression -> TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionRight :: TypedTerm AssignmentExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionWithLeft :: TypedTerm AssignmentExpression -> TypedTerm Pattern -> TypedTerm AssignmentExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionWithOperator :: TypedTerm AssignmentExpression -> TypedTerm AssignmentOperator -> TypedTerm AssignmentExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionWithRight :: TypedTerm AssignmentExpression -> TypedTerm Expression -> TypedTerm AssignmentExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorAddAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorAndAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorAssignmentOperator :: TypedName AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorBitwiseAndAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorBitwiseOrAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorBitwiseXorAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorDivideAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorExponentiateAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorLeftShiftAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorModuloAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorMultiplyAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorNullishAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorOrAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorRightShiftAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorSubtractAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorUnsignedRightShiftAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentPattern :: TypedTerm Pattern -> TypedTerm Expression -> TypedTerm AssignmentPattern
+ Hydra.Typescript.Dsl.Syntax: assignmentPatternAssignmentPattern :: TypedName AssignmentPattern
+ Hydra.Typescript.Dsl.Syntax: assignmentPatternLeft :: TypedTerm AssignmentPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: assignmentPatternRight :: TypedTerm AssignmentPattern -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: assignmentPatternWithLeft :: TypedTerm AssignmentPattern -> TypedTerm Pattern -> TypedTerm AssignmentPattern
+ Hydra.Typescript.Dsl.Syntax: assignmentPatternWithRight :: TypedTerm AssignmentPattern -> TypedTerm Expression -> TypedTerm AssignmentPattern
+ Hydra.Typescript.Dsl.Syntax: binaryExpression :: TypedTerm BinaryOperator -> TypedTerm Expression -> TypedTerm Expression -> TypedTerm BinaryExpression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionBinaryExpression :: TypedName BinaryExpression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionLeft :: TypedTerm BinaryExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionOperator :: TypedTerm BinaryExpression -> TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionRight :: TypedTerm BinaryExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionWithLeft :: TypedTerm BinaryExpression -> TypedTerm Expression -> TypedTerm BinaryExpression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionWithOperator :: TypedTerm BinaryExpression -> TypedTerm BinaryOperator -> TypedTerm BinaryExpression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionWithRight :: TypedTerm BinaryExpression -> TypedTerm Expression -> TypedTerm BinaryExpression
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorAdd :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorAnd :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorBinaryOperator :: TypedName BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorBitwiseAnd :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorBitwiseOr :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorBitwiseXor :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorDivide :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorExponentiate :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorGreaterThan :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorGreaterThanOrEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorIn :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorInstanceof :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorLeftShift :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorLessThan :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorLessThanOrEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorModulo :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorMultiply :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorNotEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorNullishCoalescing :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorOr :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorRightShift :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorStrictEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorStrictNotEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorSubtract :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorUnsignedRightShift :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: callExpression :: TypedTerm Expression -> TypedTerm [Expression] -> TypedTerm Bool -> TypedTerm CallExpression
+ Hydra.Typescript.Dsl.Syntax: callExpressionArguments :: TypedTerm CallExpression -> TypedTerm [Expression]
+ Hydra.Typescript.Dsl.Syntax: callExpressionCallExpression :: TypedName CallExpression
+ Hydra.Typescript.Dsl.Syntax: callExpressionCallee :: TypedTerm CallExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: callExpressionOptional :: TypedTerm CallExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: callExpressionWithArguments :: TypedTerm CallExpression -> TypedTerm [Expression] -> TypedTerm CallExpression
+ Hydra.Typescript.Dsl.Syntax: callExpressionWithCallee :: TypedTerm CallExpression -> TypedTerm Expression -> TypedTerm CallExpression
+ Hydra.Typescript.Dsl.Syntax: callExpressionWithOptional :: TypedTerm CallExpression -> TypedTerm Bool -> TypedTerm CallExpression
+ Hydra.Typescript.Dsl.Syntax: catchClause :: TypedTerm (Maybe Pattern) -> TypedTerm BlockStatement -> TypedTerm CatchClause
+ Hydra.Typescript.Dsl.Syntax: catchClauseBody :: TypedTerm CatchClause -> TypedTerm BlockStatement
+ Hydra.Typescript.Dsl.Syntax: catchClauseCatchClause :: TypedName CatchClause
+ Hydra.Typescript.Dsl.Syntax: catchClauseParam :: TypedTerm CatchClause -> TypedTerm (Maybe Pattern)
+ Hydra.Typescript.Dsl.Syntax: catchClauseWithBody :: TypedTerm CatchClause -> TypedTerm BlockStatement -> TypedTerm CatchClause
+ Hydra.Typescript.Dsl.Syntax: catchClauseWithParam :: TypedTerm CatchClause -> TypedTerm (Maybe Pattern) -> TypedTerm CatchClause
+ Hydra.Typescript.Dsl.Syntax: classDeclaration :: TypedTerm Identifier -> TypedTerm (Maybe Expression) -> TypedTerm ClassBody -> TypedTerm ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: classDeclarationBody :: TypedTerm ClassDeclaration -> TypedTerm ClassBody
+ Hydra.Typescript.Dsl.Syntax: classDeclarationClassDeclaration :: TypedName ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: classDeclarationId :: TypedTerm ClassDeclaration -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: classDeclarationSuperClass :: TypedTerm ClassDeclaration -> TypedTerm (Maybe Expression)
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithBody :: TypedTerm ClassDeclaration -> TypedTerm ClassBody -> TypedTerm ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithComments :: TypedTerm ClassDeclaration -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ClassDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithCommentsBody :: TypedTerm ClassDeclarationWithComments -> TypedTerm ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithCommentsClassDeclarationWithComments :: TypedName ClassDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithCommentsComments :: TypedTerm ClassDeclarationWithComments -> TypedTerm (Maybe DocumentationComment)
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithCommentsWithBody :: TypedTerm ClassDeclarationWithComments -> TypedTerm ClassDeclaration -> TypedTerm ClassDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithCommentsWithComments :: TypedTerm ClassDeclarationWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ClassDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithId :: TypedTerm ClassDeclaration -> TypedTerm Identifier -> TypedTerm ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithSuperClass :: TypedTerm ClassDeclaration -> TypedTerm (Maybe Expression) -> TypedTerm ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: commentBlock :: TypedTerm String -> TypedTerm Comment
+ Hydra.Typescript.Dsl.Syntax: commentComment :: TypedName Comment
+ Hydra.Typescript.Dsl.Syntax: commentDocumentation :: TypedTerm DocumentationComment -> TypedTerm Comment
+ Hydra.Typescript.Dsl.Syntax: commentLine :: TypedTerm String -> TypedTerm Comment
+ Hydra.Typescript.Dsl.Syntax: conditionalExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm Expression -> TypedTerm ConditionalExpression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionAlternate :: TypedTerm ConditionalExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionConditionalExpression :: TypedName ConditionalExpression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionConsequent :: TypedTerm ConditionalExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionTest :: TypedTerm ConditionalExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionWithAlternate :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionWithConsequent :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionWithTest :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
+ Hydra.Typescript.Dsl.Syntax: doWhileStatement :: TypedTerm Statement -> TypedTerm Expression -> TypedTerm DoWhileStatement
+ Hydra.Typescript.Dsl.Syntax: doWhileStatementBody :: TypedTerm DoWhileStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: doWhileStatementDoWhileStatement :: TypedName DoWhileStatement
+ Hydra.Typescript.Dsl.Syntax: doWhileStatementTest :: TypedTerm DoWhileStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: doWhileStatementWithBody :: TypedTerm DoWhileStatement -> TypedTerm Statement -> TypedTerm DoWhileStatement
+ Hydra.Typescript.Dsl.Syntax: doWhileStatementWithTest :: TypedTerm DoWhileStatement -> TypedTerm Expression -> TypedTerm DoWhileStatement
+ Hydra.Typescript.Dsl.Syntax: documentationComment :: TypedTerm String -> TypedTerm [DocumentationTag] -> TypedTerm DocumentationComment
+ Hydra.Typescript.Dsl.Syntax: documentationCommentDescription :: TypedTerm DocumentationComment -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: documentationCommentDocumentationComment :: TypedName DocumentationComment
+ Hydra.Typescript.Dsl.Syntax: documentationCommentTags :: TypedTerm DocumentationComment -> TypedTerm [DocumentationTag]
+ Hydra.Typescript.Dsl.Syntax: documentationCommentWithDescription :: TypedTerm DocumentationComment -> TypedTerm String -> TypedTerm DocumentationComment
+ Hydra.Typescript.Dsl.Syntax: documentationCommentWithTags :: TypedTerm DocumentationComment -> TypedTerm [DocumentationTag] -> TypedTerm DocumentationComment
+ Hydra.Typescript.Dsl.Syntax: documentationTag :: TypedTerm String -> TypedTerm (Maybe TypeExpression) -> TypedTerm (Maybe Identifier) -> TypedTerm String -> TypedTerm DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: documentationTagDescription :: TypedTerm DocumentationTag -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: documentationTagDocumentationTag :: TypedName DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: documentationTagName :: TypedTerm DocumentationTag -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: documentationTagParamName :: TypedTerm DocumentationTag -> TypedTerm (Maybe Identifier)
+ Hydra.Typescript.Dsl.Syntax: documentationTagType :: TypedTerm DocumentationTag -> TypedTerm (Maybe TypeExpression)
+ Hydra.Typescript.Dsl.Syntax: documentationTagWithDescription :: TypedTerm DocumentationTag -> TypedTerm String -> TypedTerm DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: documentationTagWithName :: TypedTerm DocumentationTag -> TypedTerm String -> TypedTerm DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: documentationTagWithParamName :: TypedTerm DocumentationTag -> TypedTerm (Maybe Identifier) -> TypedTerm DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: documentationTagWithType :: TypedTerm DocumentationTag -> TypedTerm (Maybe TypeExpression) -> TypedTerm DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclaration :: TypedTerm (Maybe Identifier) -> TypedTerm StringLiteral -> TypedTerm ExportAllDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclarationExportAllDeclaration :: TypedName ExportAllDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclarationExported :: TypedTerm ExportAllDeclaration -> TypedTerm (Maybe Identifier)
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclarationSource :: TypedTerm ExportAllDeclaration -> TypedTerm StringLiteral
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclarationWithExported :: TypedTerm ExportAllDeclaration -> TypedTerm (Maybe Identifier) -> TypedTerm ExportAllDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclarationWithSource :: TypedTerm ExportAllDeclaration -> TypedTerm StringLiteral -> TypedTerm ExportAllDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportDeclarationAll :: TypedTerm ExportAllDeclaration -> TypedTerm ExportDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportDeclarationDeclaration :: TypedTerm Statement -> TypedTerm ExportDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportDeclarationDefault :: TypedTerm Expression -> TypedTerm ExportDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportDeclarationExportDeclaration :: TypedName ExportDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportDeclarationNamed :: TypedTerm NamedExport -> TypedTerm ExportDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportSpecifier :: TypedTerm Identifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
+ Hydra.Typescript.Dsl.Syntax: exportSpecifierExportSpecifier :: TypedName ExportSpecifier
+ Hydra.Typescript.Dsl.Syntax: exportSpecifierExported :: TypedTerm ExportSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: exportSpecifierLocal :: TypedTerm ExportSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: exportSpecifierWithExported :: TypedTerm ExportSpecifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
+ Hydra.Typescript.Dsl.Syntax: exportSpecifierWithLocal :: TypedTerm ExportSpecifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
+ Hydra.Typescript.Dsl.Syntax: expressionArray :: TypedTerm ArrayExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionArrow :: TypedTerm ArrowFunctionExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionAsExpression :: TypedTerm AsExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionAssignment :: TypedTerm AssignmentExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionAwait :: TypedTerm Expression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionBinary :: TypedTerm BinaryExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionCall :: TypedTerm CallExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionConditional :: TypedTerm ConditionalExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionExpression :: TypedName Expression
+ Hydra.Typescript.Dsl.Syntax: expressionFunction :: TypedTerm FunctionExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionIdentifier :: TypedTerm Identifier -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionLiteral :: TypedTerm Literal -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionMember :: TypedTerm MemberExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionNew :: TypedTerm CallExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionObject :: TypedTerm ObjectExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionParenthesized :: TypedTerm Expression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionSequence :: TypedTerm [Expression] -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionSpread :: TypedTerm SpreadElement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionThis :: TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionUnary :: TypedTerm UnaryExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionYield :: TypedTerm (Maybe Expression) -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: forInLeftForInLeft :: TypedName ForInLeft
+ Hydra.Typescript.Dsl.Syntax: forInLeftPattern :: TypedTerm Pattern -> TypedTerm ForInLeft
+ Hydra.Typescript.Dsl.Syntax: forInLeftVariable :: TypedTerm VariableDeclaration -> TypedTerm ForInLeft
+ Hydra.Typescript.Dsl.Syntax: forInStatement :: TypedTerm ForInLeft -> TypedTerm Expression -> TypedTerm Statement -> TypedTerm ForInStatement
+ Hydra.Typescript.Dsl.Syntax: forInStatementBody :: TypedTerm ForInStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: forInStatementForInStatement :: TypedName ForInStatement
+ Hydra.Typescript.Dsl.Syntax: forInStatementLeft :: TypedTerm ForInStatement -> TypedTerm ForInLeft
+ Hydra.Typescript.Dsl.Syntax: forInStatementRight :: TypedTerm ForInStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: forInStatementWithBody :: TypedTerm ForInStatement -> TypedTerm Statement -> TypedTerm ForInStatement
+ Hydra.Typescript.Dsl.Syntax: forInStatementWithLeft :: TypedTerm ForInStatement -> TypedTerm ForInLeft -> TypedTerm ForInStatement
+ Hydra.Typescript.Dsl.Syntax: forInStatementWithRight :: TypedTerm ForInStatement -> TypedTerm Expression -> TypedTerm ForInStatement
+ Hydra.Typescript.Dsl.Syntax: forInitExpression :: TypedTerm Expression -> TypedTerm ForInit
+ Hydra.Typescript.Dsl.Syntax: forInitForInit :: TypedName ForInit
+ Hydra.Typescript.Dsl.Syntax: forInitVariable :: TypedTerm VariableDeclaration -> TypedTerm ForInit
+ Hydra.Typescript.Dsl.Syntax: forOfStatement :: TypedTerm Bool -> TypedTerm ForInLeft -> TypedTerm Expression -> TypedTerm Statement -> TypedTerm ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementAwait :: TypedTerm ForOfStatement -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: forOfStatementBody :: TypedTerm ForOfStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementForOfStatement :: TypedName ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementLeft :: TypedTerm ForOfStatement -> TypedTerm ForInLeft
+ Hydra.Typescript.Dsl.Syntax: forOfStatementRight :: TypedTerm ForOfStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: forOfStatementWithAwait :: TypedTerm ForOfStatement -> TypedTerm Bool -> TypedTerm ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementWithBody :: TypedTerm ForOfStatement -> TypedTerm Statement -> TypedTerm ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementWithLeft :: TypedTerm ForOfStatement -> TypedTerm ForInLeft -> TypedTerm ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementWithRight :: TypedTerm ForOfStatement -> TypedTerm Expression -> TypedTerm ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forStatement :: TypedTerm (Maybe ForInit) -> TypedTerm (Maybe Expression) -> TypedTerm (Maybe Expression) -> TypedTerm Statement -> TypedTerm ForStatement
+ Hydra.Typescript.Dsl.Syntax: forStatementBody :: TypedTerm ForStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: forStatementForStatement :: TypedName ForStatement
+ Hydra.Typescript.Dsl.Syntax: forStatementInit :: TypedTerm ForStatement -> TypedTerm (Maybe ForInit)
+ Hydra.Typescript.Dsl.Syntax: forStatementTest :: TypedTerm ForStatement -> TypedTerm (Maybe Expression)
+ Hydra.Typescript.Dsl.Syntax: forStatementUpdate :: TypedTerm ForStatement -> TypedTerm (Maybe Expression)
+ Hydra.Typescript.Dsl.Syntax: forStatementWithBody :: TypedTerm ForStatement -> TypedTerm Statement -> TypedTerm ForStatement
+ Hydra.Typescript.Dsl.Syntax: forStatementWithInit :: TypedTerm ForStatement -> TypedTerm (Maybe ForInit) -> TypedTerm ForStatement
+ Hydra.Typescript.Dsl.Syntax: forStatementWithTest :: TypedTerm ForStatement -> TypedTerm (Maybe Expression) -> TypedTerm ForStatement
+ Hydra.Typescript.Dsl.Syntax: forStatementWithUpdate :: TypedTerm ForStatement -> TypedTerm (Maybe Expression) -> TypedTerm ForStatement
+ Hydra.Typescript.Dsl.Syntax: functionDeclaration :: TypedTerm Identifier -> TypedTerm [Pattern] -> TypedTerm BlockStatement -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationAsync :: TypedTerm FunctionDeclaration -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationBody :: TypedTerm FunctionDeclaration -> TypedTerm BlockStatement
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationFunctionDeclaration :: TypedName FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationGenerator :: TypedTerm FunctionDeclaration -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationId :: TypedTerm FunctionDeclaration -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationParams :: TypedTerm FunctionDeclaration -> TypedTerm [Pattern]
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithAsync :: TypedTerm FunctionDeclaration -> TypedTerm Bool -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithBody :: TypedTerm FunctionDeclaration -> TypedTerm BlockStatement -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithComments :: TypedTerm FunctionDeclaration -> TypedTerm (Maybe DocumentationComment) -> TypedTerm FunctionDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithCommentsBody :: TypedTerm FunctionDeclarationWithComments -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithCommentsComments :: TypedTerm FunctionDeclarationWithComments -> TypedTerm (Maybe DocumentationComment)
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithCommentsFunctionDeclarationWithComments :: TypedName FunctionDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithCommentsWithBody :: TypedTerm FunctionDeclarationWithComments -> TypedTerm FunctionDeclaration -> TypedTerm FunctionDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithCommentsWithComments :: TypedTerm FunctionDeclarationWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm FunctionDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithGenerator :: TypedTerm FunctionDeclaration -> TypedTerm Bool -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithId :: TypedTerm FunctionDeclaration -> TypedTerm Identifier -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithParams :: TypedTerm FunctionDeclaration -> TypedTerm [Pattern] -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionExpression :: TypedTerm (Maybe Identifier) -> TypedTerm [Pattern] -> TypedTerm BlockStatement -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionAsync :: TypedTerm FunctionExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: functionExpressionBody :: TypedTerm FunctionExpression -> TypedTerm BlockStatement
+ Hydra.Typescript.Dsl.Syntax: functionExpressionFunctionExpression :: TypedName FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionGenerator :: TypedTerm FunctionExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: functionExpressionId :: TypedTerm FunctionExpression -> TypedTerm (Maybe Identifier)
+ Hydra.Typescript.Dsl.Syntax: functionExpressionParams :: TypedTerm FunctionExpression -> TypedTerm [Pattern]
+ Hydra.Typescript.Dsl.Syntax: functionExpressionWithAsync :: TypedTerm FunctionExpression -> TypedTerm Bool -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionWithBody :: TypedTerm FunctionExpression -> TypedTerm BlockStatement -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionWithGenerator :: TypedTerm FunctionExpression -> TypedTerm Bool -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionWithId :: TypedTerm FunctionExpression -> TypedTerm (Maybe Identifier) -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionWithParams :: TypedTerm FunctionExpression -> TypedTerm [Pattern] -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpression :: TypedTerm [TypeParameter] -> TypedTerm [TypeExpression] -> TypedTerm TypeExpression -> TypedTerm FunctionTypeExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionFunctionTypeExpression :: TypedName FunctionTypeExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeExpression]
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionReturnType :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionTypeParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeParameter]
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionWithParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeExpression] -> TypedTerm FunctionTypeExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionWithReturnType :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression -> TypedTerm FunctionTypeExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionWithTypeParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeParameter] -> TypedTerm FunctionTypeExpression
+ Hydra.Typescript.Dsl.Syntax: identifier :: TypedTerm String -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: identifierIdentifier :: TypedName Identifier
+ Hydra.Typescript.Dsl.Syntax: ifStatement :: TypedTerm Expression -> TypedTerm Statement -> TypedTerm (Maybe Statement) -> TypedTerm IfStatement
+ Hydra.Typescript.Dsl.Syntax: ifStatementAlternate :: TypedTerm IfStatement -> TypedTerm (Maybe Statement)
+ Hydra.Typescript.Dsl.Syntax: ifStatementConsequent :: TypedTerm IfStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: ifStatementIfStatement :: TypedName IfStatement
+ Hydra.Typescript.Dsl.Syntax: ifStatementTest :: TypedTerm IfStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: ifStatementWithAlternate :: TypedTerm IfStatement -> TypedTerm (Maybe Statement) -> TypedTerm IfStatement
+ Hydra.Typescript.Dsl.Syntax: ifStatementWithConsequent :: TypedTerm IfStatement -> TypedTerm Statement -> TypedTerm IfStatement
+ Hydra.Typescript.Dsl.Syntax: ifStatementWithTest :: TypedTerm IfStatement -> TypedTerm Expression -> TypedTerm IfStatement
+ Hydra.Typescript.Dsl.Syntax: importClauseDefault :: TypedTerm ImportDefaultSpecifier -> TypedTerm ImportClause
+ Hydra.Typescript.Dsl.Syntax: importClauseImportClause :: TypedName ImportClause
+ Hydra.Typescript.Dsl.Syntax: importClauseNamed :: TypedTerm ImportSpecifier -> TypedTerm ImportClause
+ Hydra.Typescript.Dsl.Syntax: importClauseNamespace :: TypedTerm ImportNamespaceSpecifier -> TypedTerm ImportClause
+ Hydra.Typescript.Dsl.Syntax: importDeclaration :: TypedTerm [ImportClause] -> TypedTerm StringLiteral -> TypedTerm ImportDeclaration
+ Hydra.Typescript.Dsl.Syntax: importDeclarationImportDeclaration :: TypedName ImportDeclaration
+ Hydra.Typescript.Dsl.Syntax: importDeclarationSource :: TypedTerm ImportDeclaration -> TypedTerm StringLiteral
+ Hydra.Typescript.Dsl.Syntax: importDeclarationSpecifiers :: TypedTerm ImportDeclaration -> TypedTerm [ImportClause]
+ Hydra.Typescript.Dsl.Syntax: importDeclarationWithSource :: TypedTerm ImportDeclaration -> TypedTerm StringLiteral -> TypedTerm ImportDeclaration
+ Hydra.Typescript.Dsl.Syntax: importDeclarationWithSpecifiers :: TypedTerm ImportDeclaration -> TypedTerm [ImportClause] -> TypedTerm ImportDeclaration
+ Hydra.Typescript.Dsl.Syntax: importDefaultSpecifier :: TypedTerm Identifier -> TypedTerm ImportDefaultSpecifier
+ Hydra.Typescript.Dsl.Syntax: importDefaultSpecifierImportDefaultSpecifier :: TypedName ImportDefaultSpecifier
+ Hydra.Typescript.Dsl.Syntax: importNamespaceSpecifier :: TypedTerm Identifier -> TypedTerm ImportNamespaceSpecifier
+ Hydra.Typescript.Dsl.Syntax: importNamespaceSpecifierImportNamespaceSpecifier :: TypedName ImportNamespaceSpecifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifier :: TypedTerm Identifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifierImportSpecifier :: TypedName ImportSpecifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifierImported :: TypedTerm ImportSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifierLocal :: TypedTerm ImportSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifierWithImported :: TypedTerm ImportSpecifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifierWithLocal :: TypedTerm ImportSpecifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclaration :: TypedTerm Identifier -> TypedTerm [TypeParameter] -> TypedTerm [TypeExpression] -> TypedTerm [PropertySignature] -> TypedTerm InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationExtends :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeExpression]
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationInterfaceDeclaration :: TypedName InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationMembers :: TypedTerm InterfaceDeclaration -> TypedTerm [PropertySignature]
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationName :: TypedTerm InterfaceDeclaration -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationTypeParameters :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeParameter]
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationWithExtends :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeExpression] -> TypedTerm InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationWithMembers :: TypedTerm InterfaceDeclaration -> TypedTerm [PropertySignature] -> TypedTerm InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationWithName :: TypedTerm InterfaceDeclaration -> TypedTerm Identifier -> TypedTerm InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationWithTypeParameters :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeParameter] -> TypedTerm InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: labeledStatement :: TypedTerm Identifier -> TypedTerm Statement -> TypedTerm LabeledStatement
+ Hydra.Typescript.Dsl.Syntax: labeledStatementBody :: TypedTerm LabeledStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: labeledStatementLabel :: TypedTerm LabeledStatement -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: labeledStatementLabeledStatement :: TypedName LabeledStatement
+ Hydra.Typescript.Dsl.Syntax: labeledStatementWithBody :: TypedTerm LabeledStatement -> TypedTerm Statement -> TypedTerm LabeledStatement
+ Hydra.Typescript.Dsl.Syntax: labeledStatementWithLabel :: TypedTerm LabeledStatement -> TypedTerm Identifier -> TypedTerm LabeledStatement
+ Hydra.Typescript.Dsl.Syntax: literalBigInt :: TypedTerm Integer -> TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalBoolean :: TypedTerm Bool -> TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalLiteral :: TypedName Literal
+ Hydra.Typescript.Dsl.Syntax: literalNull :: TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalNumber :: TypedTerm NumericLiteral -> TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalString :: TypedTerm StringLiteral -> TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalTemplate :: TypedTerm TemplateLiteral -> TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalUndefined :: TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: memberExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm MemberExpression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionComputed :: TypedTerm MemberExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: memberExpressionMemberExpression :: TypedName MemberExpression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionObject :: TypedTerm MemberExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionOptional :: TypedTerm MemberExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: memberExpressionProperty :: TypedTerm MemberExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionWithComputed :: TypedTerm MemberExpression -> TypedTerm Bool -> TypedTerm MemberExpression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionWithObject :: TypedTerm MemberExpression -> TypedTerm Expression -> TypedTerm MemberExpression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionWithOptional :: TypedTerm MemberExpression -> TypedTerm Bool -> TypedTerm MemberExpression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionWithProperty :: TypedTerm MemberExpression -> TypedTerm Expression -> TypedTerm MemberExpression
+ Hydra.Typescript.Dsl.Syntax: methodDefinition :: TypedTerm Expression -> TypedTerm FunctionExpression -> TypedTerm MethodKind -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionComputed :: TypedTerm MethodDefinition -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionKey :: TypedTerm MethodDefinition -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionKind :: TypedTerm MethodDefinition -> TypedTerm MethodKind
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionMethodDefinition :: TypedName MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionStatic :: TypedTerm MethodDefinition -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionValue :: TypedTerm MethodDefinition -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionWithComputed :: TypedTerm MethodDefinition -> TypedTerm Bool -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionWithKey :: TypedTerm MethodDefinition -> TypedTerm Expression -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionWithKind :: TypedTerm MethodDefinition -> TypedTerm MethodKind -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionWithStatic :: TypedTerm MethodDefinition -> TypedTerm Bool -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionWithValue :: TypedTerm MethodDefinition -> TypedTerm FunctionExpression -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodKindConstructor :: TypedTerm MethodKind
+ Hydra.Typescript.Dsl.Syntax: methodKindGet :: TypedTerm MethodKind
+ Hydra.Typescript.Dsl.Syntax: methodKindMethod :: TypedTerm MethodKind
+ Hydra.Typescript.Dsl.Syntax: methodKindMethodKind :: TypedName MethodKind
+ Hydra.Typescript.Dsl.Syntax: methodKindSet :: TypedTerm MethodKind
+ Hydra.Typescript.Dsl.Syntax: moduleItemExport :: TypedTerm ExportDeclaration -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemImport :: TypedTerm ImportDeclaration -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemInterface :: TypedTerm InterfaceDeclaration -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemModuleItem :: TypedName ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemStatement :: TypedTerm Statement -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemTypeAlias :: TypedTerm TypeAliasDeclaration -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithComments :: TypedTerm ModuleItem -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ModuleItemWithComments
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithCommentsBody :: TypedTerm ModuleItemWithComments -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithCommentsComments :: TypedTerm ModuleItemWithComments -> TypedTerm (Maybe DocumentationComment)
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithCommentsModuleItemWithComments :: TypedName ModuleItemWithComments
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithCommentsWithBody :: TypedTerm ModuleItemWithComments -> TypedTerm ModuleItem -> TypedTerm ModuleItemWithComments
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithCommentsWithComments :: TypedTerm ModuleItemWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ModuleItemWithComments
+ Hydra.Typescript.Dsl.Syntax: namedExport :: TypedTerm [ExportSpecifier] -> TypedTerm (Maybe StringLiteral) -> TypedTerm NamedExport
+ Hydra.Typescript.Dsl.Syntax: namedExportNamedExport :: TypedName NamedExport
+ Hydra.Typescript.Dsl.Syntax: namedExportSource :: TypedTerm NamedExport -> TypedTerm (Maybe StringLiteral)
+ Hydra.Typescript.Dsl.Syntax: namedExportSpecifiers :: TypedTerm NamedExport -> TypedTerm [ExportSpecifier]
+ Hydra.Typescript.Dsl.Syntax: namedExportWithSource :: TypedTerm NamedExport -> TypedTerm (Maybe StringLiteral) -> TypedTerm NamedExport
+ Hydra.Typescript.Dsl.Syntax: namedExportWithSpecifiers :: TypedTerm NamedExport -> TypedTerm [ExportSpecifier] -> TypedTerm NamedExport
+ Hydra.Typescript.Dsl.Syntax: numericLiteralFloat :: TypedTerm Double -> TypedTerm NumericLiteral
+ Hydra.Typescript.Dsl.Syntax: numericLiteralInteger :: TypedTerm Int64 -> TypedTerm NumericLiteral
+ Hydra.Typescript.Dsl.Syntax: numericLiteralNumericLiteral :: TypedName NumericLiteral
+ Hydra.Typescript.Dsl.Syntax: objectPattern :: TypedTerm [ObjectPatternProperty] -> TypedTerm ObjectPattern
+ Hydra.Typescript.Dsl.Syntax: objectPatternObjectPattern :: TypedName ObjectPattern
+ Hydra.Typescript.Dsl.Syntax: objectPatternProperties :: TypedTerm ObjectPattern -> TypedTerm [ObjectPatternProperty]
+ Hydra.Typescript.Dsl.Syntax: objectPatternPropertyObjectPatternProperty :: TypedName ObjectPatternProperty
+ Hydra.Typescript.Dsl.Syntax: objectPatternPropertyProperty :: TypedTerm Property -> TypedTerm ObjectPatternProperty
+ Hydra.Typescript.Dsl.Syntax: objectPatternPropertyRest :: TypedTerm RestElement -> TypedTerm ObjectPatternProperty
+ Hydra.Typescript.Dsl.Syntax: objectPatternWithProperties :: TypedTerm ObjectPattern -> TypedTerm [ObjectPatternProperty] -> TypedTerm ObjectPattern
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpression :: TypedTerm TypeExpression -> TypedTerm [TypeExpression] -> TypedTerm ParameterizedTypeExpression
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpressionArguments :: TypedTerm ParameterizedTypeExpression -> TypedTerm [TypeExpression]
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpressionBase :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpressionParameterizedTypeExpression :: TypedName ParameterizedTypeExpression
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpressionWithArguments :: TypedTerm ParameterizedTypeExpression -> TypedTerm [TypeExpression] -> TypedTerm ParameterizedTypeExpression
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpressionWithBase :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression -> TypedTerm ParameterizedTypeExpression
+ Hydra.Typescript.Dsl.Syntax: patternArray :: TypedTerm ArrayPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: patternAssignment :: TypedTerm AssignmentPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: patternIdentifier :: TypedTerm Identifier -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: patternObject :: TypedTerm ObjectPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: patternPattern :: TypedName Pattern
+ Hydra.Typescript.Dsl.Syntax: patternRest :: TypedTerm RestElement -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: patternTyped :: TypedTerm TypedPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: program :: TypedTerm [ModuleItem] -> TypedTerm SourceType -> TypedTerm Program
+ Hydra.Typescript.Dsl.Syntax: programBody :: TypedTerm Program -> TypedTerm [ModuleItem]
+ Hydra.Typescript.Dsl.Syntax: programProgram :: TypedName Program
+ Hydra.Typescript.Dsl.Syntax: programSourceType :: TypedTerm Program -> TypedTerm SourceType
+ Hydra.Typescript.Dsl.Syntax: programWithBody :: TypedTerm Program -> TypedTerm [ModuleItem] -> TypedTerm Program
+ Hydra.Typescript.Dsl.Syntax: programWithSourceType :: TypedTerm Program -> TypedTerm SourceType -> TypedTerm Program
+ Hydra.Typescript.Dsl.Syntax: property :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm PropertyKind -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: propertyComputed :: TypedTerm Property -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: propertyKey :: TypedTerm Property -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: propertyKind :: TypedTerm Property -> TypedTerm PropertyKind
+ Hydra.Typescript.Dsl.Syntax: propertyKindGet :: TypedTerm PropertyKind
+ Hydra.Typescript.Dsl.Syntax: propertyKindInit :: TypedTerm PropertyKind
+ Hydra.Typescript.Dsl.Syntax: propertyKindPropertyKind :: TypedName PropertyKind
+ Hydra.Typescript.Dsl.Syntax: propertyKindSet :: TypedTerm PropertyKind
+ Hydra.Typescript.Dsl.Syntax: propertyProperty :: TypedName Property
+ Hydra.Typescript.Dsl.Syntax: propertyShorthand :: TypedTerm Property -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: propertySignature :: TypedTerm Identifier -> TypedTerm TypeExpression -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm (Maybe DocumentationComment) -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureComments :: TypedTerm PropertySignature -> TypedTerm (Maybe DocumentationComment)
+ Hydra.Typescript.Dsl.Syntax: propertySignatureName :: TypedTerm PropertySignature -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: propertySignatureOptional :: TypedTerm PropertySignature -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: propertySignaturePropertySignature :: TypedName PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureReadonly :: TypedTerm PropertySignature -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: propertySignatureType :: TypedTerm PropertySignature -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: propertySignatureWithComments :: TypedTerm PropertySignature -> TypedTerm (Maybe DocumentationComment) -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureWithName :: TypedTerm PropertySignature -> TypedTerm Identifier -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureWithOptional :: TypedTerm PropertySignature -> TypedTerm Bool -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureWithReadonly :: TypedTerm PropertySignature -> TypedTerm Bool -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureWithType :: TypedTerm PropertySignature -> TypedTerm TypeExpression -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertyValue :: TypedTerm Property -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: propertyWithComputed :: TypedTerm Property -> TypedTerm Bool -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: propertyWithKey :: TypedTerm Property -> TypedTerm Expression -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: propertyWithKind :: TypedTerm Property -> TypedTerm PropertyKind -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: propertyWithShorthand :: TypedTerm Property -> TypedTerm Bool -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: propertyWithValue :: TypedTerm Property -> TypedTerm Expression -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: restElement :: TypedTerm Pattern -> TypedTerm RestElement
+ Hydra.Typescript.Dsl.Syntax: restElementRestElement :: TypedName RestElement
+ Hydra.Typescript.Dsl.Syntax: sourceTypeModule :: TypedTerm SourceType
+ Hydra.Typescript.Dsl.Syntax: sourceTypeScript :: TypedTerm SourceType
+ Hydra.Typescript.Dsl.Syntax: sourceTypeSourceType :: TypedName SourceType
+ Hydra.Typescript.Dsl.Syntax: spreadElement :: TypedTerm Expression -> TypedTerm SpreadElement
+ Hydra.Typescript.Dsl.Syntax: spreadElementSpreadElement :: TypedName SpreadElement
+ Hydra.Typescript.Dsl.Syntax: statementBlock :: TypedTerm BlockStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementBreak :: TypedTerm BreakStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementClassDeclaration :: TypedTerm ClassDeclaration -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementContinue :: TypedTerm ContinueStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementDebugger :: TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementDoWhile :: TypedTerm DoWhileStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementEmpty :: TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementExpression :: TypedTerm Expression -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementFor :: TypedTerm ForStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementForIn :: TypedTerm ForInStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementForOf :: TypedTerm ForOfStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementFunctionDeclaration :: TypedTerm FunctionDeclaration -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementIf :: TypedTerm IfStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementLabeled :: TypedTerm LabeledStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementReturn :: TypedTerm ReturnStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementStatement :: TypedName Statement
+ Hydra.Typescript.Dsl.Syntax: statementSwitch :: TypedTerm SwitchStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementThrow :: TypedTerm ThrowStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementTry :: TypedTerm TryStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementVariableDeclaration :: TypedTerm VariableDeclaration -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementWhile :: TypedTerm WhileStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementWithComments :: TypedTerm Statement -> TypedTerm (Maybe DocumentationComment) -> TypedTerm StatementWithComments
+ Hydra.Typescript.Dsl.Syntax: statementWithCommentsBody :: TypedTerm StatementWithComments -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementWithCommentsComments :: TypedTerm StatementWithComments -> TypedTerm (Maybe DocumentationComment)
+ Hydra.Typescript.Dsl.Syntax: statementWithCommentsStatementWithComments :: TypedName StatementWithComments
+ Hydra.Typescript.Dsl.Syntax: statementWithCommentsWithBody :: TypedTerm StatementWithComments -> TypedTerm Statement -> TypedTerm StatementWithComments
+ Hydra.Typescript.Dsl.Syntax: statementWithCommentsWithComments :: TypedTerm StatementWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm StatementWithComments
+ Hydra.Typescript.Dsl.Syntax: stringLiteral :: TypedTerm String -> TypedTerm Bool -> TypedTerm StringLiteral
+ Hydra.Typescript.Dsl.Syntax: stringLiteralSingleQuote :: TypedTerm StringLiteral -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: stringLiteralStringLiteral :: TypedName StringLiteral
+ Hydra.Typescript.Dsl.Syntax: stringLiteralValue :: TypedTerm StringLiteral -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: stringLiteralWithSingleQuote :: TypedTerm StringLiteral -> TypedTerm Bool -> TypedTerm StringLiteral
+ Hydra.Typescript.Dsl.Syntax: stringLiteralWithValue :: TypedTerm StringLiteral -> TypedTerm String -> TypedTerm StringLiteral
+ Hydra.Typescript.Dsl.Syntax: switchCase :: TypedTerm (Maybe Expression) -> TypedTerm [Statement] -> TypedTerm SwitchCase
+ Hydra.Typescript.Dsl.Syntax: switchCaseConsequent :: TypedTerm SwitchCase -> TypedTerm [Statement]
+ Hydra.Typescript.Dsl.Syntax: switchCaseSwitchCase :: TypedName SwitchCase
+ Hydra.Typescript.Dsl.Syntax: switchCaseTest :: TypedTerm SwitchCase -> TypedTerm (Maybe Expression)
+ Hydra.Typescript.Dsl.Syntax: switchCaseWithConsequent :: TypedTerm SwitchCase -> TypedTerm [Statement] -> TypedTerm SwitchCase
+ Hydra.Typescript.Dsl.Syntax: switchCaseWithTest :: TypedTerm SwitchCase -> TypedTerm (Maybe Expression) -> TypedTerm SwitchCase
+ Hydra.Typescript.Dsl.Syntax: switchStatement :: TypedTerm Expression -> TypedTerm [SwitchCase] -> TypedTerm SwitchStatement
+ Hydra.Typescript.Dsl.Syntax: switchStatementCases :: TypedTerm SwitchStatement -> TypedTerm [SwitchCase]
+ Hydra.Typescript.Dsl.Syntax: switchStatementDiscriminant :: TypedTerm SwitchStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: switchStatementSwitchStatement :: TypedName SwitchStatement
+ Hydra.Typescript.Dsl.Syntax: switchStatementWithCases :: TypedTerm SwitchStatement -> TypedTerm [SwitchCase] -> TypedTerm SwitchStatement
+ Hydra.Typescript.Dsl.Syntax: switchStatementWithDiscriminant :: TypedTerm SwitchStatement -> TypedTerm Expression -> TypedTerm SwitchStatement
+ Hydra.Typescript.Dsl.Syntax: templateElement :: TypedTerm String -> TypedTerm Bool -> TypedTerm TemplateElement
+ Hydra.Typescript.Dsl.Syntax: templateElementTail :: TypedTerm TemplateElement -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: templateElementTemplateElement :: TypedName TemplateElement
+ Hydra.Typescript.Dsl.Syntax: templateElementValue :: TypedTerm TemplateElement -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: templateElementWithTail :: TypedTerm TemplateElement -> TypedTerm Bool -> TypedTerm TemplateElement
+ Hydra.Typescript.Dsl.Syntax: templateElementWithValue :: TypedTerm TemplateElement -> TypedTerm String -> TypedTerm TemplateElement
+ Hydra.Typescript.Dsl.Syntax: templateLiteral :: TypedTerm [TemplateElement] -> TypedTerm [Expression] -> TypedTerm TemplateLiteral
+ Hydra.Typescript.Dsl.Syntax: templateLiteralExpressions :: TypedTerm TemplateLiteral -> TypedTerm [Expression]
+ Hydra.Typescript.Dsl.Syntax: templateLiteralQuasis :: TypedTerm TemplateLiteral -> TypedTerm [TemplateElement]
+ Hydra.Typescript.Dsl.Syntax: templateLiteralTemplateLiteral :: TypedName TemplateLiteral
+ Hydra.Typescript.Dsl.Syntax: templateLiteralWithExpressions :: TypedTerm TemplateLiteral -> TypedTerm [Expression] -> TypedTerm TemplateLiteral
+ Hydra.Typescript.Dsl.Syntax: templateLiteralWithQuasis :: TypedTerm TemplateLiteral -> TypedTerm [TemplateElement] -> TypedTerm TemplateLiteral
+ Hydra.Typescript.Dsl.Syntax: throwStatement :: TypedTerm Expression -> TypedTerm ThrowStatement
+ Hydra.Typescript.Dsl.Syntax: throwStatementThrowStatement :: TypedName ThrowStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatement :: TypedTerm BlockStatement -> TypedTerm (Maybe CatchClause) -> TypedTerm (Maybe BlockStatement) -> TypedTerm TryStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatementBlock :: TypedTerm TryStatement -> TypedTerm BlockStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatementFinalizer :: TypedTerm TryStatement -> TypedTerm (Maybe BlockStatement)
+ Hydra.Typescript.Dsl.Syntax: tryStatementHandler :: TypedTerm TryStatement -> TypedTerm (Maybe CatchClause)
+ Hydra.Typescript.Dsl.Syntax: tryStatementTryStatement :: TypedName TryStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatementWithBlock :: TypedTerm TryStatement -> TypedTerm BlockStatement -> TypedTerm TryStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatementWithFinalizer :: TypedTerm TryStatement -> TypedTerm (Maybe BlockStatement) -> TypedTerm TryStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatementWithHandler :: TypedTerm TryStatement -> TypedTerm (Maybe CatchClause) -> TypedTerm TryStatement
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclaration :: TypedTerm Identifier -> TypedTerm [TypeParameter] -> TypedTerm TypeExpression -> TypedTerm TypeAliasDeclaration
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationName :: TypedTerm TypeAliasDeclaration -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationType :: TypedTerm TypeAliasDeclaration -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationTypeAliasDeclaration :: TypedName TypeAliasDeclaration
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationTypeParameters :: TypedTerm TypeAliasDeclaration -> TypedTerm [TypeParameter]
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationWithName :: TypedTerm TypeAliasDeclaration -> TypedTerm Identifier -> TypedTerm TypeAliasDeclaration
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationWithType :: TypedTerm TypeAliasDeclaration -> TypedTerm TypeExpression -> TypedTerm TypeAliasDeclaration
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationWithTypeParameters :: TypedTerm TypeAliasDeclaration -> TypedTerm [TypeParameter] -> TypedTerm TypeAliasDeclaration
+ Hydra.Typescript.Dsl.Syntax: typeAnnotation :: TypedTerm TypeExpression -> TypedTerm TypeAnnotation
+ Hydra.Typescript.Dsl.Syntax: typeAnnotationTypeAnnotation :: TypedName TypeAnnotation
+ Hydra.Typescript.Dsl.Syntax: typeExpressionAny :: TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionArray :: TypedTerm ArrayTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionFunction :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionIdentifier :: TypedTerm Identifier -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionIntersection :: TypedTerm IntersectionTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionLiteral :: TypedTerm Literal -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionNever :: TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionObject :: TypedTerm ObjectTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionOptional :: TypedTerm TypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionParameterized :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionReadonly :: TypedTerm TypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionTuple :: TypedTerm TupleTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionTypeExpression :: TypedName TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionUnion :: TypedTerm UnionTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionUnknown :: TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionVoid :: TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeParameter :: TypedTerm Identifier -> TypedTerm (Maybe TypeExpression) -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
+ Hydra.Typescript.Dsl.Syntax: typeParameterConstraint :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression)
+ Hydra.Typescript.Dsl.Syntax: typeParameterDefault :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression)
+ Hydra.Typescript.Dsl.Syntax: typeParameterName :: TypedTerm TypeParameter -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: typeParameterTypeParameter :: TypedName TypeParameter
+ Hydra.Typescript.Dsl.Syntax: typeParameterWithConstraint :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
+ Hydra.Typescript.Dsl.Syntax: typeParameterWithDefault :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
+ Hydra.Typescript.Dsl.Syntax: typeParameterWithName :: TypedTerm TypeParameter -> TypedTerm Identifier -> TypedTerm TypeParameter
+ Hydra.Typescript.Dsl.Syntax: typedPattern :: TypedTerm Pattern -> TypedTerm TypeExpression -> TypedTerm TypedPattern
+ Hydra.Typescript.Dsl.Syntax: typedPatternPattern :: TypedTerm TypedPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: typedPatternType :: TypedTerm TypedPattern -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typedPatternTypedPattern :: TypedName TypedPattern
+ Hydra.Typescript.Dsl.Syntax: typedPatternWithPattern :: TypedTerm TypedPattern -> TypedTerm Pattern -> TypedTerm TypedPattern
+ Hydra.Typescript.Dsl.Syntax: typedPatternWithType :: TypedTerm TypedPattern -> TypedTerm TypeExpression -> TypedTerm TypedPattern
+ Hydra.Typescript.Dsl.Syntax: unArrayTypeExpression :: TypedTerm ArrayTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: unIdentifier :: TypedTerm Identifier -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: unImportDefaultSpecifier :: TypedTerm ImportDefaultSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: unImportNamespaceSpecifier :: TypedTerm ImportNamespaceSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: unRestElement :: TypedTerm RestElement -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: unSpreadElement :: TypedTerm SpreadElement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: unThrowStatement :: TypedTerm ThrowStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: unTypeAnnotation :: TypedTerm TypeAnnotation -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: unaryExpression :: TypedTerm UnaryOperator -> TypedTerm Expression -> TypedTerm Bool -> TypedTerm UnaryExpression
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionArgument :: TypedTerm UnaryExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionOperator :: TypedTerm UnaryExpression -> TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionPrefix :: TypedTerm UnaryExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionUnaryExpression :: TypedName UnaryExpression
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionWithArgument :: TypedTerm UnaryExpression -> TypedTerm Expression -> TypedTerm UnaryExpression
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionWithOperator :: TypedTerm UnaryExpression -> TypedTerm UnaryOperator -> TypedTerm UnaryExpression
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionWithPrefix :: TypedTerm UnaryExpression -> TypedTerm Bool -> TypedTerm UnaryExpression
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorBitwiseNot :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorDecrement :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorDelete :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorIncrement :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorNegate :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorNot :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorPlus :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorTypeof :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorUnaryOperator :: TypedName UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorVoid :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: variableDeclaration :: TypedTerm VariableKind -> TypedTerm [VariableDeclarator] -> TypedTerm VariableDeclaration
+ Hydra.Typescript.Dsl.Syntax: variableDeclarationDeclarations :: TypedTerm VariableDeclaration -> TypedTerm [VariableDeclarator]
+ Hydra.Typescript.Dsl.Syntax: variableDeclarationKind :: TypedTerm VariableDeclaration -> TypedTerm VariableKind
+ Hydra.Typescript.Dsl.Syntax: variableDeclarationVariableDeclaration :: TypedName VariableDeclaration
+ Hydra.Typescript.Dsl.Syntax: variableDeclarationWithDeclarations :: TypedTerm VariableDeclaration -> TypedTerm [VariableDeclarator] -> TypedTerm VariableDeclaration
+ Hydra.Typescript.Dsl.Syntax: variableDeclarationWithKind :: TypedTerm VariableDeclaration -> TypedTerm VariableKind -> TypedTerm VariableDeclaration
+ Hydra.Typescript.Dsl.Syntax: variableDeclarator :: TypedTerm Pattern -> TypedTerm (Maybe Expression) -> TypedTerm VariableDeclarator
+ Hydra.Typescript.Dsl.Syntax: variableDeclaratorId :: TypedTerm VariableDeclarator -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: variableDeclaratorInit :: TypedTerm VariableDeclarator -> TypedTerm (Maybe Expression)
+ Hydra.Typescript.Dsl.Syntax: variableDeclaratorVariableDeclarator :: TypedName VariableDeclarator
+ Hydra.Typescript.Dsl.Syntax: variableDeclaratorWithId :: TypedTerm VariableDeclarator -> TypedTerm Pattern -> TypedTerm VariableDeclarator
+ Hydra.Typescript.Dsl.Syntax: variableDeclaratorWithInit :: TypedTerm VariableDeclarator -> TypedTerm (Maybe Expression) -> TypedTerm VariableDeclarator
+ Hydra.Typescript.Dsl.Syntax: variableKindConst :: TypedTerm VariableKind
+ Hydra.Typescript.Dsl.Syntax: variableKindLet :: TypedTerm VariableKind
+ Hydra.Typescript.Dsl.Syntax: variableKindVar :: TypedTerm VariableKind
+ Hydra.Typescript.Dsl.Syntax: variableKindVariableKind :: TypedName VariableKind
+ Hydra.Typescript.Dsl.Syntax: whileStatement :: TypedTerm Expression -> TypedTerm Statement -> TypedTerm WhileStatement
+ Hydra.Typescript.Dsl.Syntax: whileStatementBody :: TypedTerm WhileStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: whileStatementTest :: TypedTerm WhileStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: whileStatementWhileStatement :: TypedName WhileStatement
+ Hydra.Typescript.Dsl.Syntax: whileStatementWithBody :: TypedTerm WhileStatement -> TypedTerm Statement -> TypedTerm WhileStatement
+ Hydra.Typescript.Dsl.Syntax: whileStatementWithTest :: TypedTerm WhileStatement -> TypedTerm Expression -> TypedTerm WhileStatement
+ Hydra.Typescript.Language: typeScriptLanguage :: Language
+ Hydra.Typescript.Language: typeScriptReservedWords :: Set String
+ Hydra.Typescript.Operators: addOp :: Op
+ Hydra.Typescript.Operators: appOp :: Op
+ Hydra.Typescript.Operators: arrowOp :: Op
+ Hydra.Typescript.Operators: assignOp :: Op
+ Hydra.Typescript.Operators: bitwiseAndOp :: Op
+ Hydra.Typescript.Operators: bitwiseOrOp :: Op
+ Hydra.Typescript.Operators: bitwiseXorOp :: Op
+ Hydra.Typescript.Operators: colonOp :: Op
+ Hydra.Typescript.Operators: commaOp :: Op
+ Hydra.Typescript.Operators: defineOp :: Op
+ Hydra.Typescript.Operators: divideOp :: Op
+ Hydra.Typescript.Operators: equalOp :: Op
+ Hydra.Typescript.Operators: exponentiateOp :: Op
+ Hydra.Typescript.Operators: greaterThanOp :: Op
+ Hydra.Typescript.Operators: greaterThanOrEqualOp :: Op
+ Hydra.Typescript.Operators: inOp :: Op
+ Hydra.Typescript.Operators: instanceOfOp :: Op
+ Hydra.Typescript.Operators: leftShiftOp :: Op
+ Hydra.Typescript.Operators: lessThanOp :: Op
+ Hydra.Typescript.Operators: lessThanOrEqualOp :: Op
+ Hydra.Typescript.Operators: logicalAndOp :: Op
+ Hydra.Typescript.Operators: logicalOrOp :: Op
+ Hydra.Typescript.Operators: memberOp :: Op
+ Hydra.Typescript.Operators: moduloOp :: Op
+ Hydra.Typescript.Operators: multiplyOp :: Op
+ Hydra.Typescript.Operators: notEqualOp :: Op
+ Hydra.Typescript.Operators: nullishCoalescingOp :: Op
+ Hydra.Typescript.Operators: optionalChainOp :: Op
+ Hydra.Typescript.Operators: rightShiftOp :: Op
+ Hydra.Typescript.Operators: strictEqualOp :: Op
+ Hydra.Typescript.Operators: strictNotEqualOp :: Op
+ Hydra.Typescript.Operators: subtractOp :: Op
+ Hydra.Typescript.Operators: ternaryOp :: Op
+ Hydra.Typescript.Operators: unsignedRightShiftOp :: Op
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: addExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: andExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: anyType :: TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayExpr :: [Expression] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayPattern :: [Maybe Pattern] -> Pattern
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayType :: TypeExpression -> TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: arrowBlockExpr :: [String] -> [Statement] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: arrowExpr :: [String] -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: assignExpr :: Pattern -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: asyncArrowExpr :: [String] -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: asyncFuncDecl :: String -> [String] -> [Statement] -> FunctionDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: awaitExpr :: Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: bigIntLit :: Integer -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: binaryExpr :: BinaryOperator -> Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: blockComment :: String -> Comment
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: blockStmt :: [Statement] -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: boolExpr :: Bool -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: boolLit :: Bool -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: breakStmt :: Maybe String -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: callExpr :: Expression -> [Expression] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: catchClause :: Maybe Pattern -> [Statement] -> CatchClause
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: classDecl :: String -> Maybe Expression -> [MethodDefinition] -> ClassDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: classDeclStmt :: ClassDeclaration -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: computedMemberExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: condExpr :: Expression -> Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: constDecl :: String -> Maybe Expression -> VariableDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: constructorDef :: [String] -> [Statement] -> MethodDefinition
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: continueStmt :: Maybe String -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: debuggerStmt :: Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: defaultExportDecl :: Expression -> ExportDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: defaultPattern :: String -> Expression -> Pattern
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: divExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: docComment :: String -> [DocumentationTag] -> Comment
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: emptyStmt :: Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: eqExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: exportDeclStmt :: Statement -> ExportDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: exportItem :: ExportDeclaration -> ModuleItem
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: exprStmt :: Expression -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: floatExpr :: Double -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: floatLit :: Double -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: forOfStmt :: Bool -> ForInLeft -> Expression -> Statement -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: forStmt :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: funcDecl :: String -> [String] -> [Statement] -> FunctionDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: funcDeclStmt :: FunctionDeclaration -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: ident :: String -> Identifier
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: identExpr :: String -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: identPattern :: String -> Pattern
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: identType :: String -> TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: ifStmt :: Expression -> Statement -> Maybe Statement -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: importDecl :: [ImportClause] -> String -> ImportDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: importDefault :: String -> ImportClause
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: importItem :: ImportDeclaration -> ModuleItem
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: importNamed :: String -> String -> ImportClause
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: importNamespace :: String -> ImportClause
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: intExpr :: Int64 -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: intLit :: Int64 -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: letDecl :: String -> Maybe Expression -> VariableDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: lineComment :: String -> Comment
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: litExpr :: Literal -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: memberExpr :: Expression -> String -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: methodDef :: String -> [String] -> [Statement] -> MethodDefinition
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: moduleProgram :: [ModuleItem] -> Program
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: mulExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: namedExportDecl :: [(String, String)] -> Maybe String -> ExportDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: negateExpr :: Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: neqExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: neverType :: TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: newExpr :: Expression -> [Expression] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: notExpr :: Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: nullExpr :: Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: nullLit :: Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: objectExpr :: [(String, Expression)] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: objectPattern :: [Pattern] -> Pattern
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalCallExpr :: Expression -> [Expression] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalMemberExpr :: Expression -> String -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalType :: TypeExpression -> TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: orExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: paramTag :: String -> Maybe TypeExpression -> String -> DocumentationTag
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: paramType :: TypeExpression -> [TypeExpression] -> TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: parenExpr :: Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: qualifiedName :: [String] -> QualifiedName
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: restPattern :: String -> Pattern
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: returnStmt :: Maybe Expression -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: returnsTag :: Maybe TypeExpression -> String -> DocumentationTag
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: scriptProgram :: [ModuleItem] -> Program
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: spreadExpr :: Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: staticMethodDef :: String -> [String] -> [Statement] -> MethodDefinition
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: stmtItem :: Statement -> ModuleItem
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: stringExpr :: String -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: stringLit :: String -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: stringLitSingle :: String -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: subExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: switchCase :: Maybe Expression -> [Statement] -> SwitchCase
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: switchStmt :: Expression -> [SwitchCase] -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: thisExpr :: Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: throwStmt :: Expression -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: tryStmt :: [Statement] -> Maybe CatchClause -> Maybe [Statement] -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: typeTag :: TypeExpression -> DocumentationTag
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: unaryExpr :: UnaryOperator -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: undefinedExpr :: Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: undefinedLit :: Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: unionType :: [TypeExpression] -> TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: varDecl :: String -> Maybe Expression -> VariableDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: varDeclStmt :: VariableDeclaration -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: voidType :: TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: whileStmt :: Expression -> Statement -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: yieldExpr :: Maybe Expression -> Expression
+ Hydra.Typescript.Serde: allDigits :: [Int] -> Bool
+ Hydra.Typescript.Serde: arrayElementToExpr :: ArrayElement -> Expr
+ Hydra.Typescript.Serde: arrayExpressionToExpr :: [ArrayElement] -> Expr
+ Hydra.Typescript.Serde: arrayPatternToExpr :: [Maybe Pattern] -> Expr
+ Hydra.Typescript.Serde: arrowFunctionExpressionToExpr :: ArrowFunctionExpression -> Expr
+ Hydra.Typescript.Serde: assignmentExpressionToExpr :: AssignmentExpression -> Expr
+ Hydra.Typescript.Serde: assignmentOperatorToString :: AssignmentOperator -> String
+ Hydra.Typescript.Serde: assignmentPatternToExpr :: AssignmentPattern -> Expr
+ Hydra.Typescript.Serde: binaryExpressionToExpr :: BinaryExpression -> Expr
+ Hydra.Typescript.Serde: binaryOperatorToExpr :: BinaryOperator -> Op
+ Hydra.Typescript.Serde: blockStatementToExpr :: [Statement] -> Expr
+ Hydra.Typescript.Serde: breakStatementToExpr :: Maybe Identifier -> Expr
+ Hydra.Typescript.Serde: callExpressionToExpr :: CallExpression -> Expr
+ Hydra.Typescript.Serde: catchClauseToExpr :: CatchClause -> Expr
+ Hydra.Typescript.Serde: classDeclarationToExpr :: ClassDeclaration -> Expr
+ Hydra.Typescript.Serde: classDeclarationWithCommentsToExpr :: ClassDeclarationWithComments -> Expr
+ Hydra.Typescript.Serde: conditionalExpressionToExpr :: ConditionalExpression -> Expr
+ Hydra.Typescript.Serde: continueStatementToExpr :: Maybe Identifier -> Expr
+ Hydra.Typescript.Serde: doWhileStatementToExpr :: DoWhileStatement -> Expr
+ Hydra.Typescript.Serde: documentationCommentToExpr :: DocumentationComment -> Expr
+ Hydra.Typescript.Serde: documentationTagToLine :: DocumentationTag -> String
+ Hydra.Typescript.Serde: escapeString :: String -> Bool -> String
+ Hydra.Typescript.Serde: exportAllToExpr :: ExportAllDeclaration -> Expr
+ Hydra.Typescript.Serde: exportDeclarationToExpr :: ExportDeclaration -> Expr
+ Hydra.Typescript.Serde: exportSpecifierToExpr :: ExportSpecifier -> Expr
+ Hydra.Typescript.Serde: expressionToExpr :: Expression -> Expr
+ Hydra.Typescript.Serde: forInStatementToExpr :: ForInStatement -> Expr
+ Hydra.Typescript.Serde: forOfStatementToExpr :: ForOfStatement -> Expr
+ Hydra.Typescript.Serde: forStatementToExpr :: ForStatement -> Expr
+ Hydra.Typescript.Serde: formatImportSpecifiers :: [Expr] -> Expr
+ Hydra.Typescript.Serde: functionDeclarationToExpr :: FunctionDeclaration -> Expr
+ Hydra.Typescript.Serde: functionDeclarationWithCommentsToExpr :: FunctionDeclarationWithComments -> Expr
+ Hydra.Typescript.Serde: functionExpressionToExpr :: FunctionExpression -> Expr
+ Hydra.Typescript.Serde: identifierToExpr :: Identifier -> Expr
+ Hydra.Typescript.Serde: ifStatementToExpr :: IfStatement -> Expr
+ Hydra.Typescript.Serde: importDeclarationToExpr :: ImportDeclaration -> Expr
+ Hydra.Typescript.Serde: importSpecifierToExpr :: ImportClause -> Expr
+ Hydra.Typescript.Serde: isKernelTypeVarName :: String -> Bool
+ Hydra.Typescript.Serde: labeledStatementToExpr :: LabeledStatement -> Expr
+ Hydra.Typescript.Serde: literalToExpr :: Literal -> Expr
+ Hydra.Typescript.Serde: memberExpressionToExpr :: MemberExpression -> Expr
+ Hydra.Typescript.Serde: methodDefinitionToExpr :: MethodDefinition -> Expr
+ Hydra.Typescript.Serde: moduleItemToExpr :: ModuleItem -> Expr
+ Hydra.Typescript.Serde: moduleItemWithCommentsToExpr :: ModuleItemWithComments -> Expr
+ Hydra.Typescript.Serde: namedExportToExpr :: NamedExport -> Expr
+ Hydra.Typescript.Serde: numericLiteralToExpr :: NumericLiteral -> Expr
+ Hydra.Typescript.Serde: objectExpressionToExpr :: [Property] -> Expr
+ Hydra.Typescript.Serde: objectPatternPropertyToExpr :: ObjectPatternProperty -> Expr
+ Hydra.Typescript.Serde: objectPatternToExpr :: ObjectPattern -> Expr
+ Hydra.Typescript.Serde: patternToExpr :: Pattern -> Expr
+ Hydra.Typescript.Serde: patternToString :: Pattern -> String
+ Hydra.Typescript.Serde: programToExpr :: Program -> Expr
+ Hydra.Typescript.Serde: propertyToExpr :: Property -> Expr
+ Hydra.Typescript.Serde: returnStatementToExpr :: Maybe Expression -> Expr
+ Hydra.Typescript.Serde: statementToExpr :: Statement -> Expr
+ Hydra.Typescript.Serde: stringLiteralToExpr :: StringLiteral -> Expr
+ Hydra.Typescript.Serde: switchCaseToExpr :: SwitchCase -> Expr
+ Hydra.Typescript.Serde: switchStatementToExpr :: SwitchStatement -> Expr
+ Hydra.Typescript.Serde: templateLiteralToExpr :: TemplateLiteral -> Expr
+ Hydra.Typescript.Serde: throwStatementToExpr :: ThrowStatement -> Expr
+ Hydra.Typescript.Serde: toLineComment :: String -> String
+ Hydra.Typescript.Serde: toTypeScriptComments :: String -> [DocumentationTag] -> String
+ Hydra.Typescript.Serde: tryStatementToExpr :: TryStatement -> Expr
+ Hydra.Typescript.Serde: tsTypeExpressionToString :: TypeExpression -> String
+ Hydra.Typescript.Serde: typeExpressionToString :: TypeExpression -> String
+ Hydra.Typescript.Serde: typedPatternToExpr :: TypedPattern -> Expr
+ Hydra.Typescript.Serde: unaryExpressionToExpr :: UnaryExpression -> Expr
+ Hydra.Typescript.Serde: unaryOperatorToString :: UnaryOperator -> String
+ Hydra.Typescript.Serde: variableDeclarationToExpr :: VariableDeclaration -> Expr
+ Hydra.Typescript.Serde: variableDeclaratorToExpr :: VariableDeclarator -> Expr
+ Hydra.Typescript.Serde: variableKindToExpr :: VariableKind -> Expr
+ Hydra.Typescript.Serde: whileStatementToExpr :: WhileStatement -> Expr
+ Hydra.Typescript.Syntax: ArrayElementExpression :: Expression -> ArrayElement
+ Hydra.Typescript.Syntax: ArrayElementHole :: ArrayElement
+ Hydra.Typescript.Syntax: ArrayElementSpread :: SpreadElement -> ArrayElement
+ Hydra.Typescript.Syntax: ArrayTypeExpression :: TypeExpression -> ArrayTypeExpression
+ Hydra.Typescript.Syntax: ArrowFunctionBodyBlock :: BlockStatement -> ArrowFunctionBody
+ Hydra.Typescript.Syntax: ArrowFunctionBodyExpression :: Expression -> ArrowFunctionBody
+ Hydra.Typescript.Syntax: ArrowFunctionExpression :: [Pattern] -> ArrowFunctionBody -> Bool -> ArrowFunctionExpression
+ Hydra.Typescript.Syntax: AsExpression :: Expression -> TypeExpression -> AsExpression
+ Hydra.Typescript.Syntax: AssignmentExpression :: AssignmentOperator -> Pattern -> Expression -> AssignmentExpression
+ Hydra.Typescript.Syntax: AssignmentOperatorAddAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorAndAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorBitwiseAndAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorBitwiseOrAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorBitwiseXorAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorDivideAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorExponentiateAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorLeftShiftAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorModuloAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorMultiplyAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorNullishAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorOrAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorRightShiftAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorSubtractAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorUnsignedRightShiftAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentPattern :: Pattern -> Expression -> AssignmentPattern
+ Hydra.Typescript.Syntax: BinaryExpression :: BinaryOperator -> Expression -> Expression -> BinaryExpression
+ Hydra.Typescript.Syntax: BinaryOperatorAdd :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorAnd :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorBitwiseAnd :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorBitwiseOr :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorBitwiseXor :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorDivide :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorExponentiate :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorGreaterThan :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorGreaterThanOrEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorIn :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorInstanceof :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorLeftShift :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorLessThan :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorLessThanOrEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorModulo :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorMultiply :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorNotEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorNullishCoalescing :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorOr :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorRightShift :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorStrictEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorStrictNotEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorSubtract :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorUnsignedRightShift :: BinaryOperator
+ Hydra.Typescript.Syntax: CallExpression :: Expression -> [Expression] -> Bool -> CallExpression
+ Hydra.Typescript.Syntax: CatchClause :: Maybe Pattern -> BlockStatement -> CatchClause
+ Hydra.Typescript.Syntax: ClassDeclaration :: Identifier -> Maybe Expression -> ClassBody -> ClassDeclaration
+ Hydra.Typescript.Syntax: ClassDeclarationWithComments :: ClassDeclaration -> Maybe DocumentationComment -> ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: CommentBlock :: String -> Comment
+ Hydra.Typescript.Syntax: CommentDocumentation :: DocumentationComment -> Comment
+ Hydra.Typescript.Syntax: CommentLine :: String -> Comment
+ Hydra.Typescript.Syntax: ConditionalExpression :: Expression -> Expression -> Expression -> ConditionalExpression
+ Hydra.Typescript.Syntax: DoWhileStatement :: Statement -> Expression -> DoWhileStatement
+ Hydra.Typescript.Syntax: DocumentationComment :: String -> [DocumentationTag] -> DocumentationComment
+ Hydra.Typescript.Syntax: DocumentationTag :: String -> Maybe TypeExpression -> Maybe Identifier -> String -> DocumentationTag
+ Hydra.Typescript.Syntax: ExportAllDeclaration :: Maybe Identifier -> StringLiteral -> ExportAllDeclaration
+ Hydra.Typescript.Syntax: ExportDeclarationAll :: ExportAllDeclaration -> ExportDeclaration
+ Hydra.Typescript.Syntax: ExportDeclarationDeclaration :: Statement -> ExportDeclaration
+ Hydra.Typescript.Syntax: ExportDeclarationDefault :: Expression -> ExportDeclaration
+ Hydra.Typescript.Syntax: ExportDeclarationNamed :: NamedExport -> ExportDeclaration
+ Hydra.Typescript.Syntax: ExportSpecifier :: Identifier -> Identifier -> ExportSpecifier
+ Hydra.Typescript.Syntax: ExpressionArray :: ArrayExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionArrow :: ArrowFunctionExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionAsExpression :: AsExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionAssignment :: AssignmentExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionAwait :: Expression -> Expression
+ Hydra.Typescript.Syntax: ExpressionBinary :: BinaryExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionCall :: CallExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionConditional :: ConditionalExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionFunction :: FunctionExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionIdentifier :: Identifier -> Expression
+ Hydra.Typescript.Syntax: ExpressionLiteral :: Literal -> Expression
+ Hydra.Typescript.Syntax: ExpressionMember :: MemberExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionNew :: CallExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionObject :: ObjectExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionParenthesized :: Expression -> Expression
+ Hydra.Typescript.Syntax: ExpressionSequence :: [Expression] -> Expression
+ Hydra.Typescript.Syntax: ExpressionSpread :: SpreadElement -> Expression
+ Hydra.Typescript.Syntax: ExpressionThis :: Expression
+ Hydra.Typescript.Syntax: ExpressionUnary :: UnaryExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionYield :: Maybe Expression -> Expression
+ Hydra.Typescript.Syntax: ForInLeftPattern :: Pattern -> ForInLeft
+ Hydra.Typescript.Syntax: ForInLeftVariable :: VariableDeclaration -> ForInLeft
+ Hydra.Typescript.Syntax: ForInStatement :: ForInLeft -> Expression -> Statement -> ForInStatement
+ Hydra.Typescript.Syntax: ForInitExpression :: Expression -> ForInit
+ Hydra.Typescript.Syntax: ForInitVariable :: VariableDeclaration -> ForInit
+ Hydra.Typescript.Syntax: ForOfStatement :: Bool -> ForInLeft -> Expression -> Statement -> ForOfStatement
+ Hydra.Typescript.Syntax: ForStatement :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> ForStatement
+ Hydra.Typescript.Syntax: FunctionDeclaration :: Identifier -> [Pattern] -> BlockStatement -> Bool -> Bool -> FunctionDeclaration
+ Hydra.Typescript.Syntax: FunctionDeclarationWithComments :: FunctionDeclaration -> Maybe DocumentationComment -> FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: FunctionExpression :: Maybe Identifier -> [Pattern] -> BlockStatement -> Bool -> Bool -> FunctionExpression
+ Hydra.Typescript.Syntax: FunctionTypeExpression :: [TypeParameter] -> [TypeExpression] -> TypeExpression -> FunctionTypeExpression
+ Hydra.Typescript.Syntax: Identifier :: String -> Identifier
+ Hydra.Typescript.Syntax: IfStatement :: Expression -> Statement -> Maybe Statement -> IfStatement
+ Hydra.Typescript.Syntax: ImportClauseDefault :: ImportDefaultSpecifier -> ImportClause
+ Hydra.Typescript.Syntax: ImportClauseNamed :: ImportSpecifier -> ImportClause
+ Hydra.Typescript.Syntax: ImportClauseNamespace :: ImportNamespaceSpecifier -> ImportClause
+ Hydra.Typescript.Syntax: ImportDeclaration :: [ImportClause] -> StringLiteral -> ImportDeclaration
+ Hydra.Typescript.Syntax: ImportDefaultSpecifier :: Identifier -> ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: ImportNamespaceSpecifier :: Identifier -> ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: ImportSpecifier :: Identifier -> Identifier -> ImportSpecifier
+ Hydra.Typescript.Syntax: InterfaceDeclaration :: Identifier -> [TypeParameter] -> [TypeExpression] -> [PropertySignature] -> InterfaceDeclaration
+ Hydra.Typescript.Syntax: LabeledStatement :: Identifier -> Statement -> LabeledStatement
+ Hydra.Typescript.Syntax: LiteralBigInt :: Integer -> Literal
+ Hydra.Typescript.Syntax: LiteralBoolean :: Bool -> Literal
+ Hydra.Typescript.Syntax: LiteralNull :: Literal
+ Hydra.Typescript.Syntax: LiteralNumber :: NumericLiteral -> Literal
+ Hydra.Typescript.Syntax: LiteralString :: StringLiteral -> Literal
+ Hydra.Typescript.Syntax: LiteralTemplate :: TemplateLiteral -> Literal
+ Hydra.Typescript.Syntax: LiteralUndefined :: Literal
+ Hydra.Typescript.Syntax: MemberExpression :: Expression -> Expression -> Bool -> Bool -> MemberExpression
+ Hydra.Typescript.Syntax: MethodDefinition :: Expression -> FunctionExpression -> MethodKind -> Bool -> Bool -> MethodDefinition
+ Hydra.Typescript.Syntax: MethodKindConstructor :: MethodKind
+ Hydra.Typescript.Syntax: MethodKindGet :: MethodKind
+ Hydra.Typescript.Syntax: MethodKindMethod :: MethodKind
+ Hydra.Typescript.Syntax: MethodKindSet :: MethodKind
+ Hydra.Typescript.Syntax: ModuleItemExport :: ExportDeclaration -> ModuleItem
+ Hydra.Typescript.Syntax: ModuleItemImport :: ImportDeclaration -> ModuleItem
+ Hydra.Typescript.Syntax: ModuleItemInterface :: InterfaceDeclaration -> ModuleItem
+ Hydra.Typescript.Syntax: ModuleItemStatement :: Statement -> ModuleItem
+ Hydra.Typescript.Syntax: ModuleItemTypeAlias :: TypeAliasDeclaration -> ModuleItem
+ Hydra.Typescript.Syntax: ModuleItemWithComments :: ModuleItem -> Maybe DocumentationComment -> ModuleItemWithComments
+ Hydra.Typescript.Syntax: NamedExport :: [ExportSpecifier] -> Maybe StringLiteral -> NamedExport
+ Hydra.Typescript.Syntax: NumericLiteralFloat :: Double -> NumericLiteral
+ Hydra.Typescript.Syntax: NumericLiteralInteger :: Int64 -> NumericLiteral
+ Hydra.Typescript.Syntax: ObjectPattern :: [ObjectPatternProperty] -> ObjectPattern
+ Hydra.Typescript.Syntax: ObjectPatternPropertyProperty :: Property -> ObjectPatternProperty
+ Hydra.Typescript.Syntax: ObjectPatternPropertyRest :: RestElement -> ObjectPatternProperty
+ Hydra.Typescript.Syntax: ParameterizedTypeExpression :: TypeExpression -> [TypeExpression] -> ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: PatternArray :: ArrayPattern -> Pattern
+ Hydra.Typescript.Syntax: PatternAssignment :: AssignmentPattern -> Pattern
+ Hydra.Typescript.Syntax: PatternIdentifier :: Identifier -> Pattern
+ Hydra.Typescript.Syntax: PatternObject :: ObjectPattern -> Pattern
+ Hydra.Typescript.Syntax: PatternRest :: RestElement -> Pattern
+ Hydra.Typescript.Syntax: PatternTyped :: TypedPattern -> Pattern
+ Hydra.Typescript.Syntax: Program :: [ModuleItem] -> SourceType -> Program
+ Hydra.Typescript.Syntax: Property :: Expression -> Expression -> PropertyKind -> Bool -> Bool -> Property
+ Hydra.Typescript.Syntax: PropertyKindGet :: PropertyKind
+ Hydra.Typescript.Syntax: PropertyKindInit :: PropertyKind
+ Hydra.Typescript.Syntax: PropertyKindSet :: PropertyKind
+ Hydra.Typescript.Syntax: PropertySignature :: Identifier -> TypeExpression -> Bool -> Bool -> Maybe DocumentationComment -> PropertySignature
+ Hydra.Typescript.Syntax: RestElement :: Pattern -> RestElement
+ Hydra.Typescript.Syntax: SourceTypeModule :: SourceType
+ Hydra.Typescript.Syntax: SourceTypeScript :: SourceType
+ Hydra.Typescript.Syntax: SpreadElement :: Expression -> SpreadElement
+ Hydra.Typescript.Syntax: StatementBlock :: BlockStatement -> Statement
+ Hydra.Typescript.Syntax: StatementBreak :: BreakStatement -> Statement
+ Hydra.Typescript.Syntax: StatementClassDeclaration :: ClassDeclaration -> Statement
+ Hydra.Typescript.Syntax: StatementContinue :: ContinueStatement -> Statement
+ Hydra.Typescript.Syntax: StatementDebugger :: Statement
+ Hydra.Typescript.Syntax: StatementDoWhile :: DoWhileStatement -> Statement
+ Hydra.Typescript.Syntax: StatementEmpty :: Statement
+ Hydra.Typescript.Syntax: StatementExpression :: Expression -> Statement
+ Hydra.Typescript.Syntax: StatementFor :: ForStatement -> Statement
+ Hydra.Typescript.Syntax: StatementForIn :: ForInStatement -> Statement
+ Hydra.Typescript.Syntax: StatementForOf :: ForOfStatement -> Statement
+ Hydra.Typescript.Syntax: StatementFunctionDeclaration :: FunctionDeclaration -> Statement
+ Hydra.Typescript.Syntax: StatementIf :: IfStatement -> Statement
+ Hydra.Typescript.Syntax: StatementLabeled :: LabeledStatement -> Statement
+ Hydra.Typescript.Syntax: StatementReturn :: ReturnStatement -> Statement
+ Hydra.Typescript.Syntax: StatementSwitch :: SwitchStatement -> Statement
+ Hydra.Typescript.Syntax: StatementThrow :: ThrowStatement -> Statement
+ Hydra.Typescript.Syntax: StatementTry :: TryStatement -> Statement
+ Hydra.Typescript.Syntax: StatementVariableDeclaration :: VariableDeclaration -> Statement
+ Hydra.Typescript.Syntax: StatementWhile :: WhileStatement -> Statement
+ Hydra.Typescript.Syntax: StatementWithComments :: Statement -> Maybe DocumentationComment -> StatementWithComments
+ Hydra.Typescript.Syntax: StringLiteral :: String -> Bool -> StringLiteral
+ Hydra.Typescript.Syntax: SwitchCase :: Maybe Expression -> [Statement] -> SwitchCase
+ Hydra.Typescript.Syntax: SwitchStatement :: Expression -> [SwitchCase] -> SwitchStatement
+ Hydra.Typescript.Syntax: TemplateElement :: String -> Bool -> TemplateElement
+ Hydra.Typescript.Syntax: TemplateLiteral :: [TemplateElement] -> [Expression] -> TemplateLiteral
+ Hydra.Typescript.Syntax: ThrowStatement :: Expression -> ThrowStatement
+ Hydra.Typescript.Syntax: TryStatement :: BlockStatement -> Maybe CatchClause -> Maybe BlockStatement -> TryStatement
+ Hydra.Typescript.Syntax: TypeAliasDeclaration :: Identifier -> [TypeParameter] -> TypeExpression -> TypeAliasDeclaration
+ Hydra.Typescript.Syntax: TypeAnnotation :: TypeExpression -> TypeAnnotation
+ Hydra.Typescript.Syntax: TypeExpressionAny :: TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionArray :: ArrayTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionFunction :: FunctionTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionIdentifier :: Identifier -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionIntersection :: IntersectionTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionLiteral :: Literal -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionNever :: TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionObject :: ObjectTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionOptional :: TypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionParameterized :: ParameterizedTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionReadonly :: TypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionTuple :: TupleTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionUnion :: UnionTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionUnknown :: TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionVoid :: TypeExpression
+ Hydra.Typescript.Syntax: TypeParameter :: Identifier -> Maybe TypeExpression -> Maybe TypeExpression -> TypeParameter
+ Hydra.Typescript.Syntax: TypedPattern :: Pattern -> TypeExpression -> TypedPattern
+ Hydra.Typescript.Syntax: UnaryExpression :: UnaryOperator -> Expression -> Bool -> UnaryExpression
+ Hydra.Typescript.Syntax: UnaryOperatorBitwiseNot :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorDecrement :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorDelete :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorIncrement :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorNegate :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorNot :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorPlus :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorTypeof :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorVoid :: UnaryOperator
+ Hydra.Typescript.Syntax: VariableDeclaration :: VariableKind -> [VariableDeclarator] -> VariableDeclaration
+ Hydra.Typescript.Syntax: VariableDeclarator :: Pattern -> Maybe Expression -> VariableDeclarator
+ Hydra.Typescript.Syntax: VariableKindConst :: VariableKind
+ Hydra.Typescript.Syntax: VariableKindLet :: VariableKind
+ Hydra.Typescript.Syntax: VariableKindVar :: VariableKind
+ Hydra.Typescript.Syntax: WhileStatement :: Expression -> Statement -> WhileStatement
+ Hydra.Typescript.Syntax: [arrowFunctionExpressionAsync] :: ArrowFunctionExpression -> Bool
+ Hydra.Typescript.Syntax: [arrowFunctionExpressionBody] :: ArrowFunctionExpression -> ArrowFunctionBody
+ Hydra.Typescript.Syntax: [arrowFunctionExpressionParams] :: ArrowFunctionExpression -> [Pattern]
+ Hydra.Typescript.Syntax: [asExpressionExpression] :: AsExpression -> Expression
+ Hydra.Typescript.Syntax: [asExpressionType] :: AsExpression -> TypeExpression
+ Hydra.Typescript.Syntax: [assignmentExpressionLeft] :: AssignmentExpression -> Pattern
+ Hydra.Typescript.Syntax: [assignmentExpressionOperator] :: AssignmentExpression -> AssignmentOperator
+ Hydra.Typescript.Syntax: [assignmentExpressionRight] :: AssignmentExpression -> Expression
+ Hydra.Typescript.Syntax: [assignmentPatternLeft] :: AssignmentPattern -> Pattern
+ Hydra.Typescript.Syntax: [assignmentPatternRight] :: AssignmentPattern -> Expression
+ Hydra.Typescript.Syntax: [binaryExpressionLeft] :: BinaryExpression -> Expression
+ Hydra.Typescript.Syntax: [binaryExpressionOperator] :: BinaryExpression -> BinaryOperator
+ Hydra.Typescript.Syntax: [binaryExpressionRight] :: BinaryExpression -> Expression
+ Hydra.Typescript.Syntax: [callExpressionArguments] :: CallExpression -> [Expression]
+ Hydra.Typescript.Syntax: [callExpressionCallee] :: CallExpression -> Expression
+ Hydra.Typescript.Syntax: [callExpressionOptional] :: CallExpression -> Bool
+ Hydra.Typescript.Syntax: [catchClauseBody] :: CatchClause -> BlockStatement
+ Hydra.Typescript.Syntax: [catchClauseParam] :: CatchClause -> Maybe Pattern
+ Hydra.Typescript.Syntax: [classDeclarationBody] :: ClassDeclaration -> ClassBody
+ Hydra.Typescript.Syntax: [classDeclarationId] :: ClassDeclaration -> Identifier
+ Hydra.Typescript.Syntax: [classDeclarationSuperClass] :: ClassDeclaration -> Maybe Expression
+ Hydra.Typescript.Syntax: [classDeclarationWithCommentsBody] :: ClassDeclarationWithComments -> ClassDeclaration
+ Hydra.Typescript.Syntax: [classDeclarationWithCommentsComments] :: ClassDeclarationWithComments -> Maybe DocumentationComment
+ Hydra.Typescript.Syntax: [conditionalExpressionAlternate] :: ConditionalExpression -> Expression
+ Hydra.Typescript.Syntax: [conditionalExpressionConsequent] :: ConditionalExpression -> Expression
+ Hydra.Typescript.Syntax: [conditionalExpressionTest] :: ConditionalExpression -> Expression
+ Hydra.Typescript.Syntax: [doWhileStatementBody] :: DoWhileStatement -> Statement
+ Hydra.Typescript.Syntax: [doWhileStatementTest] :: DoWhileStatement -> Expression
+ Hydra.Typescript.Syntax: [documentationCommentDescription] :: DocumentationComment -> String
+ Hydra.Typescript.Syntax: [documentationCommentTags] :: DocumentationComment -> [DocumentationTag]
+ Hydra.Typescript.Syntax: [documentationTagDescription] :: DocumentationTag -> String
+ Hydra.Typescript.Syntax: [documentationTagName] :: DocumentationTag -> String
+ Hydra.Typescript.Syntax: [documentationTagParamName] :: DocumentationTag -> Maybe Identifier
+ Hydra.Typescript.Syntax: [documentationTagType] :: DocumentationTag -> Maybe TypeExpression
+ Hydra.Typescript.Syntax: [exportAllDeclarationExported] :: ExportAllDeclaration -> Maybe Identifier
+ Hydra.Typescript.Syntax: [exportAllDeclarationSource] :: ExportAllDeclaration -> StringLiteral
+ Hydra.Typescript.Syntax: [exportSpecifierExported] :: ExportSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [exportSpecifierLocal] :: ExportSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [forInStatementBody] :: ForInStatement -> Statement
+ Hydra.Typescript.Syntax: [forInStatementLeft] :: ForInStatement -> ForInLeft
+ Hydra.Typescript.Syntax: [forInStatementRight] :: ForInStatement -> Expression
+ Hydra.Typescript.Syntax: [forOfStatementAwait] :: ForOfStatement -> Bool
+ Hydra.Typescript.Syntax: [forOfStatementBody] :: ForOfStatement -> Statement
+ Hydra.Typescript.Syntax: [forOfStatementLeft] :: ForOfStatement -> ForInLeft
+ Hydra.Typescript.Syntax: [forOfStatementRight] :: ForOfStatement -> Expression
+ Hydra.Typescript.Syntax: [forStatementBody] :: ForStatement -> Statement
+ Hydra.Typescript.Syntax: [forStatementInit] :: ForStatement -> Maybe ForInit
+ Hydra.Typescript.Syntax: [forStatementTest] :: ForStatement -> Maybe Expression
+ Hydra.Typescript.Syntax: [forStatementUpdate] :: ForStatement -> Maybe Expression
+ Hydra.Typescript.Syntax: [functionDeclarationAsync] :: FunctionDeclaration -> Bool
+ Hydra.Typescript.Syntax: [functionDeclarationBody] :: FunctionDeclaration -> BlockStatement
+ Hydra.Typescript.Syntax: [functionDeclarationGenerator] :: FunctionDeclaration -> Bool
+ Hydra.Typescript.Syntax: [functionDeclarationId] :: FunctionDeclaration -> Identifier
+ Hydra.Typescript.Syntax: [functionDeclarationParams] :: FunctionDeclaration -> [Pattern]
+ Hydra.Typescript.Syntax: [functionDeclarationWithCommentsBody] :: FunctionDeclarationWithComments -> FunctionDeclaration
+ Hydra.Typescript.Syntax: [functionDeclarationWithCommentsComments] :: FunctionDeclarationWithComments -> Maybe DocumentationComment
+ Hydra.Typescript.Syntax: [functionExpressionAsync] :: FunctionExpression -> Bool
+ Hydra.Typescript.Syntax: [functionExpressionBody] :: FunctionExpression -> BlockStatement
+ Hydra.Typescript.Syntax: [functionExpressionGenerator] :: FunctionExpression -> Bool
+ Hydra.Typescript.Syntax: [functionExpressionId] :: FunctionExpression -> Maybe Identifier
+ Hydra.Typescript.Syntax: [functionExpressionParams] :: FunctionExpression -> [Pattern]
+ Hydra.Typescript.Syntax: [functionTypeExpressionParameters] :: FunctionTypeExpression -> [TypeExpression]
+ Hydra.Typescript.Syntax: [functionTypeExpressionReturnType] :: FunctionTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: [functionTypeExpressionTypeParameters] :: FunctionTypeExpression -> [TypeParameter]
+ Hydra.Typescript.Syntax: [ifStatementAlternate] :: IfStatement -> Maybe Statement
+ Hydra.Typescript.Syntax: [ifStatementConsequent] :: IfStatement -> Statement
+ Hydra.Typescript.Syntax: [ifStatementTest] :: IfStatement -> Expression
+ Hydra.Typescript.Syntax: [importDeclarationSource] :: ImportDeclaration -> StringLiteral
+ Hydra.Typescript.Syntax: [importDeclarationSpecifiers] :: ImportDeclaration -> [ImportClause]
+ Hydra.Typescript.Syntax: [importSpecifierImported] :: ImportSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [importSpecifierLocal] :: ImportSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [interfaceDeclarationExtends] :: InterfaceDeclaration -> [TypeExpression]
+ Hydra.Typescript.Syntax: [interfaceDeclarationMembers] :: InterfaceDeclaration -> [PropertySignature]
+ Hydra.Typescript.Syntax: [interfaceDeclarationName] :: InterfaceDeclaration -> Identifier
+ Hydra.Typescript.Syntax: [interfaceDeclarationTypeParameters] :: InterfaceDeclaration -> [TypeParameter]
+ Hydra.Typescript.Syntax: [labeledStatementBody] :: LabeledStatement -> Statement
+ Hydra.Typescript.Syntax: [labeledStatementLabel] :: LabeledStatement -> Identifier
+ Hydra.Typescript.Syntax: [memberExpressionComputed] :: MemberExpression -> Bool
+ Hydra.Typescript.Syntax: [memberExpressionObject] :: MemberExpression -> Expression
+ Hydra.Typescript.Syntax: [memberExpressionOptional] :: MemberExpression -> Bool
+ Hydra.Typescript.Syntax: [memberExpressionProperty] :: MemberExpression -> Expression
+ Hydra.Typescript.Syntax: [methodDefinitionComputed] :: MethodDefinition -> Bool
+ Hydra.Typescript.Syntax: [methodDefinitionKey] :: MethodDefinition -> Expression
+ Hydra.Typescript.Syntax: [methodDefinitionKind] :: MethodDefinition -> MethodKind
+ Hydra.Typescript.Syntax: [methodDefinitionStatic] :: MethodDefinition -> Bool
+ Hydra.Typescript.Syntax: [methodDefinitionValue] :: MethodDefinition -> FunctionExpression
+ Hydra.Typescript.Syntax: [moduleItemWithCommentsBody] :: ModuleItemWithComments -> ModuleItem
+ Hydra.Typescript.Syntax: [moduleItemWithCommentsComments] :: ModuleItemWithComments -> Maybe DocumentationComment
+ Hydra.Typescript.Syntax: [namedExportSource] :: NamedExport -> Maybe StringLiteral
+ Hydra.Typescript.Syntax: [namedExportSpecifiers] :: NamedExport -> [ExportSpecifier]
+ Hydra.Typescript.Syntax: [objectPatternProperties] :: ObjectPattern -> [ObjectPatternProperty]
+ Hydra.Typescript.Syntax: [parameterizedTypeExpressionArguments] :: ParameterizedTypeExpression -> [TypeExpression]
+ Hydra.Typescript.Syntax: [parameterizedTypeExpressionBase] :: ParameterizedTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: [programBody] :: Program -> [ModuleItem]
+ Hydra.Typescript.Syntax: [programSourceType] :: Program -> SourceType
+ Hydra.Typescript.Syntax: [propertyComputed] :: Property -> Bool
+ Hydra.Typescript.Syntax: [propertyKey] :: Property -> Expression
+ Hydra.Typescript.Syntax: [propertyKind] :: Property -> PropertyKind
+ Hydra.Typescript.Syntax: [propertyShorthand] :: Property -> Bool
+ Hydra.Typescript.Syntax: [propertySignatureComments] :: PropertySignature -> Maybe DocumentationComment
+ Hydra.Typescript.Syntax: [propertySignatureName] :: PropertySignature -> Identifier
+ Hydra.Typescript.Syntax: [propertySignatureOptional] :: PropertySignature -> Bool
+ Hydra.Typescript.Syntax: [propertySignatureReadonly] :: PropertySignature -> Bool
+ Hydra.Typescript.Syntax: [propertySignatureType] :: PropertySignature -> TypeExpression
+ Hydra.Typescript.Syntax: [propertyValue] :: Property -> Expression
+ Hydra.Typescript.Syntax: [statementWithCommentsBody] :: StatementWithComments -> Statement
+ Hydra.Typescript.Syntax: [statementWithCommentsComments] :: StatementWithComments -> Maybe DocumentationComment
+ Hydra.Typescript.Syntax: [stringLiteralSingleQuote] :: StringLiteral -> Bool
+ Hydra.Typescript.Syntax: [stringLiteralValue] :: StringLiteral -> String
+ Hydra.Typescript.Syntax: [switchCaseConsequent] :: SwitchCase -> [Statement]
+ Hydra.Typescript.Syntax: [switchCaseTest] :: SwitchCase -> Maybe Expression
+ Hydra.Typescript.Syntax: [switchStatementCases] :: SwitchStatement -> [SwitchCase]
+ Hydra.Typescript.Syntax: [switchStatementDiscriminant] :: SwitchStatement -> Expression
+ Hydra.Typescript.Syntax: [templateElementTail] :: TemplateElement -> Bool
+ Hydra.Typescript.Syntax: [templateElementValue] :: TemplateElement -> String
+ Hydra.Typescript.Syntax: [templateLiteralExpressions] :: TemplateLiteral -> [Expression]
+ Hydra.Typescript.Syntax: [templateLiteralQuasis] :: TemplateLiteral -> [TemplateElement]
+ Hydra.Typescript.Syntax: [tryStatementBlock] :: TryStatement -> BlockStatement
+ Hydra.Typescript.Syntax: [tryStatementFinalizer] :: TryStatement -> Maybe BlockStatement
+ Hydra.Typescript.Syntax: [tryStatementHandler] :: TryStatement -> Maybe CatchClause
+ Hydra.Typescript.Syntax: [typeAliasDeclarationName] :: TypeAliasDeclaration -> Identifier
+ Hydra.Typescript.Syntax: [typeAliasDeclarationTypeParameters] :: TypeAliasDeclaration -> [TypeParameter]
+ Hydra.Typescript.Syntax: [typeAliasDeclarationType] :: TypeAliasDeclaration -> TypeExpression
+ Hydra.Typescript.Syntax: [typeParameterConstraint] :: TypeParameter -> Maybe TypeExpression
+ Hydra.Typescript.Syntax: [typeParameterDefault] :: TypeParameter -> Maybe TypeExpression
+ Hydra.Typescript.Syntax: [typeParameterName] :: TypeParameter -> Identifier
+ Hydra.Typescript.Syntax: [typedPatternPattern] :: TypedPattern -> Pattern
+ Hydra.Typescript.Syntax: [typedPatternType] :: TypedPattern -> TypeExpression
+ Hydra.Typescript.Syntax: [unArrayTypeExpression] :: ArrayTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: [unIdentifier] :: Identifier -> String
+ Hydra.Typescript.Syntax: [unImportDefaultSpecifier] :: ImportDefaultSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [unImportNamespaceSpecifier] :: ImportNamespaceSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [unRestElement] :: RestElement -> Pattern
+ Hydra.Typescript.Syntax: [unSpreadElement] :: SpreadElement -> Expression
+ Hydra.Typescript.Syntax: [unThrowStatement] :: ThrowStatement -> Expression
+ Hydra.Typescript.Syntax: [unTypeAnnotation] :: TypeAnnotation -> TypeExpression
+ Hydra.Typescript.Syntax: [unaryExpressionArgument] :: UnaryExpression -> Expression
+ Hydra.Typescript.Syntax: [unaryExpressionOperator] :: UnaryExpression -> UnaryOperator
+ Hydra.Typescript.Syntax: [unaryExpressionPrefix] :: UnaryExpression -> Bool
+ Hydra.Typescript.Syntax: [variableDeclarationDeclarations] :: VariableDeclaration -> [VariableDeclarator]
+ Hydra.Typescript.Syntax: [variableDeclarationKind] :: VariableDeclaration -> VariableKind
+ Hydra.Typescript.Syntax: [variableDeclaratorId] :: VariableDeclarator -> Pattern
+ Hydra.Typescript.Syntax: [variableDeclaratorInit] :: VariableDeclarator -> Maybe Expression
+ Hydra.Typescript.Syntax: [whileStatementBody] :: WhileStatement -> Statement
+ Hydra.Typescript.Syntax: [whileStatementTest] :: WhileStatement -> Expression
+ Hydra.Typescript.Syntax: _ArrayElement :: Name
+ Hydra.Typescript.Syntax: _ArrayElement_expression :: Name
+ Hydra.Typescript.Syntax: _ArrayElement_hole :: Name
+ Hydra.Typescript.Syntax: _ArrayElement_spread :: Name
+ Hydra.Typescript.Syntax: _ArrayExpression :: Name
+ Hydra.Typescript.Syntax: _ArrayPattern :: Name
+ Hydra.Typescript.Syntax: _ArrayTypeExpression :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionBody :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionBody_block :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionBody_expression :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionExpression :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionExpression_async :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionExpression_body :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionExpression_params :: Name
+ Hydra.Typescript.Syntax: _AsExpression :: Name
+ Hydra.Typescript.Syntax: _AsExpression_expression :: Name
+ Hydra.Typescript.Syntax: _AsExpression_type :: Name
+ Hydra.Typescript.Syntax: _AssignmentExpression :: Name
+ Hydra.Typescript.Syntax: _AssignmentExpression_left :: Name
+ Hydra.Typescript.Syntax: _AssignmentExpression_operator :: Name
+ Hydra.Typescript.Syntax: _AssignmentExpression_right :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_addAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_andAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_assign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_bitwiseAndAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_bitwiseOrAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_bitwiseXorAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_divideAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_exponentiateAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_leftShiftAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_moduloAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_multiplyAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_nullishAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_orAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_rightShiftAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_subtractAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_unsignedRightShiftAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentPattern :: Name
+ Hydra.Typescript.Syntax: _AssignmentPattern_left :: Name
+ Hydra.Typescript.Syntax: _AssignmentPattern_right :: Name
+ Hydra.Typescript.Syntax: _BinaryExpression :: Name
+ Hydra.Typescript.Syntax: _BinaryExpression_left :: Name
+ Hydra.Typescript.Syntax: _BinaryExpression_operator :: Name
+ Hydra.Typescript.Syntax: _BinaryExpression_right :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_add :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_and :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_bitwiseAnd :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_bitwiseOr :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_bitwiseXor :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_divide :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_equal :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_exponentiate :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_greaterThan :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_greaterThanOrEqual :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_in :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_instanceof :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_leftShift :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_lessThan :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_lessThanOrEqual :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_modulo :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_multiply :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_notEqual :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_nullishCoalescing :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_or :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_rightShift :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_strictEqual :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_strictNotEqual :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_subtract :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_unsignedRightShift :: Name
+ Hydra.Typescript.Syntax: _BlockStatement :: Name
+ Hydra.Typescript.Syntax: _BreakStatement :: Name
+ Hydra.Typescript.Syntax: _CallExpression :: Name
+ Hydra.Typescript.Syntax: _CallExpression_arguments :: Name
+ Hydra.Typescript.Syntax: _CallExpression_callee :: Name
+ Hydra.Typescript.Syntax: _CallExpression_optional :: Name
+ Hydra.Typescript.Syntax: _CatchClause :: Name
+ Hydra.Typescript.Syntax: _CatchClause_body :: Name
+ Hydra.Typescript.Syntax: _CatchClause_param :: Name
+ Hydra.Typescript.Syntax: _ClassBody :: Name
+ Hydra.Typescript.Syntax: _ClassDeclaration :: Name
+ Hydra.Typescript.Syntax: _ClassDeclarationWithComments :: Name
+ Hydra.Typescript.Syntax: _ClassDeclarationWithComments_body :: Name
+ Hydra.Typescript.Syntax: _ClassDeclarationWithComments_comments :: Name
+ Hydra.Typescript.Syntax: _ClassDeclaration_body :: Name
+ Hydra.Typescript.Syntax: _ClassDeclaration_id :: Name
+ Hydra.Typescript.Syntax: _ClassDeclaration_superClass :: Name
+ Hydra.Typescript.Syntax: _Comment :: Name
+ Hydra.Typescript.Syntax: _Comment_block :: Name
+ Hydra.Typescript.Syntax: _Comment_documentation :: Name
+ Hydra.Typescript.Syntax: _Comment_line :: Name
+ Hydra.Typescript.Syntax: _ConditionalExpression :: Name
+ Hydra.Typescript.Syntax: _ConditionalExpression_alternate :: Name
+ Hydra.Typescript.Syntax: _ConditionalExpression_consequent :: Name
+ Hydra.Typescript.Syntax: _ConditionalExpression_test :: Name
+ Hydra.Typescript.Syntax: _ContinueStatement :: Name
+ Hydra.Typescript.Syntax: _DoWhileStatement :: Name
+ Hydra.Typescript.Syntax: _DoWhileStatement_body :: Name
+ Hydra.Typescript.Syntax: _DoWhileStatement_test :: Name
+ Hydra.Typescript.Syntax: _DocumentationComment :: Name
+ Hydra.Typescript.Syntax: _DocumentationComment_description :: Name
+ Hydra.Typescript.Syntax: _DocumentationComment_tags :: Name
+ Hydra.Typescript.Syntax: _DocumentationTag :: Name
+ Hydra.Typescript.Syntax: _DocumentationTag_description :: Name
+ Hydra.Typescript.Syntax: _DocumentationTag_name :: Name
+ Hydra.Typescript.Syntax: _DocumentationTag_paramName :: Name
+ Hydra.Typescript.Syntax: _DocumentationTag_type :: Name
+ Hydra.Typescript.Syntax: _ExportAllDeclaration :: Name
+ Hydra.Typescript.Syntax: _ExportAllDeclaration_exported :: Name
+ Hydra.Typescript.Syntax: _ExportAllDeclaration_source :: Name
+ Hydra.Typescript.Syntax: _ExportDeclaration :: Name
+ Hydra.Typescript.Syntax: _ExportDeclaration_all :: Name
+ Hydra.Typescript.Syntax: _ExportDeclaration_declaration :: Name
+ Hydra.Typescript.Syntax: _ExportDeclaration_default :: Name
+ Hydra.Typescript.Syntax: _ExportDeclaration_named :: Name
+ Hydra.Typescript.Syntax: _ExportSpecifier :: Name
+ Hydra.Typescript.Syntax: _ExportSpecifier_exported :: Name
+ Hydra.Typescript.Syntax: _ExportSpecifier_local :: Name
+ Hydra.Typescript.Syntax: _Expression :: Name
+ Hydra.Typescript.Syntax: _Expression_array :: Name
+ Hydra.Typescript.Syntax: _Expression_arrow :: Name
+ Hydra.Typescript.Syntax: _Expression_asExpression :: Name
+ Hydra.Typescript.Syntax: _Expression_assignment :: Name
+ Hydra.Typescript.Syntax: _Expression_await :: Name
+ Hydra.Typescript.Syntax: _Expression_binary :: Name
+ Hydra.Typescript.Syntax: _Expression_call :: Name
+ Hydra.Typescript.Syntax: _Expression_conditional :: Name
+ Hydra.Typescript.Syntax: _Expression_function :: Name
+ Hydra.Typescript.Syntax: _Expression_identifier :: Name
+ Hydra.Typescript.Syntax: _Expression_literal :: Name
+ Hydra.Typescript.Syntax: _Expression_member :: Name
+ Hydra.Typescript.Syntax: _Expression_new :: Name
+ Hydra.Typescript.Syntax: _Expression_object :: Name
+ Hydra.Typescript.Syntax: _Expression_parenthesized :: Name
+ Hydra.Typescript.Syntax: _Expression_sequence :: Name
+ Hydra.Typescript.Syntax: _Expression_spread :: Name
+ Hydra.Typescript.Syntax: _Expression_this :: Name
+ Hydra.Typescript.Syntax: _Expression_unary :: Name
+ Hydra.Typescript.Syntax: _Expression_yield :: Name
+ Hydra.Typescript.Syntax: _ForInLeft :: Name
+ Hydra.Typescript.Syntax: _ForInLeft_pattern :: Name
+ Hydra.Typescript.Syntax: _ForInLeft_variable :: Name
+ Hydra.Typescript.Syntax: _ForInStatement :: Name
+ Hydra.Typescript.Syntax: _ForInStatement_body :: Name
+ Hydra.Typescript.Syntax: _ForInStatement_left :: Name
+ Hydra.Typescript.Syntax: _ForInStatement_right :: Name
+ Hydra.Typescript.Syntax: _ForInit :: Name
+ Hydra.Typescript.Syntax: _ForInit_expression :: Name
+ Hydra.Typescript.Syntax: _ForInit_variable :: Name
+ Hydra.Typescript.Syntax: _ForOfStatement :: Name
+ Hydra.Typescript.Syntax: _ForOfStatement_await :: Name
+ Hydra.Typescript.Syntax: _ForOfStatement_body :: Name
+ Hydra.Typescript.Syntax: _ForOfStatement_left :: Name
+ Hydra.Typescript.Syntax: _ForOfStatement_right :: Name
+ Hydra.Typescript.Syntax: _ForStatement :: Name
+ Hydra.Typescript.Syntax: _ForStatement_body :: Name
+ Hydra.Typescript.Syntax: _ForStatement_init :: Name
+ Hydra.Typescript.Syntax: _ForStatement_test :: Name
+ Hydra.Typescript.Syntax: _ForStatement_update :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclarationWithComments :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclarationWithComments_body :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclarationWithComments_comments :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration_async :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration_body :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration_generator :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration_id :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration_params :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression_async :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression_body :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression_generator :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression_id :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression_params :: Name
+ Hydra.Typescript.Syntax: _FunctionTypeExpression :: Name
+ Hydra.Typescript.Syntax: _FunctionTypeExpression_parameters :: Name
+ Hydra.Typescript.Syntax: _FunctionTypeExpression_returnType :: Name
+ Hydra.Typescript.Syntax: _FunctionTypeExpression_typeParameters :: Name
+ Hydra.Typescript.Syntax: _Identifier :: Name
+ Hydra.Typescript.Syntax: _IfStatement :: Name
+ Hydra.Typescript.Syntax: _IfStatement_alternate :: Name
+ Hydra.Typescript.Syntax: _IfStatement_consequent :: Name
+ Hydra.Typescript.Syntax: _IfStatement_test :: Name
+ Hydra.Typescript.Syntax: _ImportClause :: Name
+ Hydra.Typescript.Syntax: _ImportClause_default :: Name
+ Hydra.Typescript.Syntax: _ImportClause_named :: Name
+ Hydra.Typescript.Syntax: _ImportClause_namespace :: Name
+ Hydra.Typescript.Syntax: _ImportDeclaration :: Name
+ Hydra.Typescript.Syntax: _ImportDeclaration_source :: Name
+ Hydra.Typescript.Syntax: _ImportDeclaration_specifiers :: Name
+ Hydra.Typescript.Syntax: _ImportDefaultSpecifier :: Name
+ Hydra.Typescript.Syntax: _ImportNamespaceSpecifier :: Name
+ Hydra.Typescript.Syntax: _ImportSpecifier :: Name
+ Hydra.Typescript.Syntax: _ImportSpecifier_imported :: Name
+ Hydra.Typescript.Syntax: _ImportSpecifier_local :: Name
+ Hydra.Typescript.Syntax: _InterfaceDeclaration :: Name
+ Hydra.Typescript.Syntax: _InterfaceDeclaration_extends :: Name
+ Hydra.Typescript.Syntax: _InterfaceDeclaration_members :: Name
+ Hydra.Typescript.Syntax: _InterfaceDeclaration_name :: Name
+ Hydra.Typescript.Syntax: _InterfaceDeclaration_typeParameters :: Name
+ Hydra.Typescript.Syntax: _IntersectionTypeExpression :: Name
+ Hydra.Typescript.Syntax: _LabeledStatement :: Name
+ Hydra.Typescript.Syntax: _LabeledStatement_body :: Name
+ Hydra.Typescript.Syntax: _LabeledStatement_label :: Name
+ Hydra.Typescript.Syntax: _Literal :: Name
+ Hydra.Typescript.Syntax: _Literal_bigInt :: Name
+ Hydra.Typescript.Syntax: _Literal_boolean :: Name
+ Hydra.Typescript.Syntax: _Literal_null :: Name
+ Hydra.Typescript.Syntax: _Literal_number :: Name
+ Hydra.Typescript.Syntax: _Literal_string :: Name
+ Hydra.Typescript.Syntax: _Literal_template :: Name
+ Hydra.Typescript.Syntax: _Literal_undefined :: Name
+ Hydra.Typescript.Syntax: _MemberExpression :: Name
+ Hydra.Typescript.Syntax: _MemberExpression_computed :: Name
+ Hydra.Typescript.Syntax: _MemberExpression_object :: Name
+ Hydra.Typescript.Syntax: _MemberExpression_optional :: Name
+ Hydra.Typescript.Syntax: _MemberExpression_property :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition_computed :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition_key :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition_kind :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition_static :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition_value :: Name
+ Hydra.Typescript.Syntax: _MethodKind :: Name
+ Hydra.Typescript.Syntax: _MethodKind_constructor :: Name
+ Hydra.Typescript.Syntax: _MethodKind_get :: Name
+ Hydra.Typescript.Syntax: _MethodKind_method :: Name
+ Hydra.Typescript.Syntax: _MethodKind_set :: Name
+ Hydra.Typescript.Syntax: _ModuleItem :: Name
+ Hydra.Typescript.Syntax: _ModuleItemWithComments :: Name
+ Hydra.Typescript.Syntax: _ModuleItemWithComments_body :: Name
+ Hydra.Typescript.Syntax: _ModuleItemWithComments_comments :: Name
+ Hydra.Typescript.Syntax: _ModuleItem_export :: Name
+ Hydra.Typescript.Syntax: _ModuleItem_import :: Name
+ Hydra.Typescript.Syntax: _ModuleItem_interface :: Name
+ Hydra.Typescript.Syntax: _ModuleItem_statement :: Name
+ Hydra.Typescript.Syntax: _ModuleItem_typeAlias :: Name
+ Hydra.Typescript.Syntax: _NamedExport :: Name
+ Hydra.Typescript.Syntax: _NamedExport_source :: Name
+ Hydra.Typescript.Syntax: _NamedExport_specifiers :: Name
+ Hydra.Typescript.Syntax: _NumericLiteral :: Name
+ Hydra.Typescript.Syntax: _NumericLiteral_float :: Name
+ Hydra.Typescript.Syntax: _NumericLiteral_integer :: Name
+ Hydra.Typescript.Syntax: _ObjectExpression :: Name
+ Hydra.Typescript.Syntax: _ObjectPattern :: Name
+ Hydra.Typescript.Syntax: _ObjectPatternProperty :: Name
+ Hydra.Typescript.Syntax: _ObjectPatternProperty_property :: Name
+ Hydra.Typescript.Syntax: _ObjectPatternProperty_rest :: Name
+ Hydra.Typescript.Syntax: _ObjectPattern_properties :: Name
+ Hydra.Typescript.Syntax: _ObjectTypeExpression :: Name
+ Hydra.Typescript.Syntax: _ParameterizedTypeExpression :: Name
+ Hydra.Typescript.Syntax: _ParameterizedTypeExpression_arguments :: Name
+ Hydra.Typescript.Syntax: _ParameterizedTypeExpression_base :: Name
+ Hydra.Typescript.Syntax: _Pattern :: Name
+ Hydra.Typescript.Syntax: _Pattern_array :: Name
+ Hydra.Typescript.Syntax: _Pattern_assignment :: Name
+ Hydra.Typescript.Syntax: _Pattern_identifier :: Name
+ Hydra.Typescript.Syntax: _Pattern_object :: Name
+ Hydra.Typescript.Syntax: _Pattern_rest :: Name
+ Hydra.Typescript.Syntax: _Pattern_typed :: Name
+ Hydra.Typescript.Syntax: _Program :: Name
+ Hydra.Typescript.Syntax: _Program_body :: Name
+ Hydra.Typescript.Syntax: _Program_sourceType :: Name
+ Hydra.Typescript.Syntax: _Property :: Name
+ Hydra.Typescript.Syntax: _PropertyKind :: Name
+ Hydra.Typescript.Syntax: _PropertyKind_get :: Name
+ Hydra.Typescript.Syntax: _PropertyKind_init :: Name
+ Hydra.Typescript.Syntax: _PropertyKind_set :: Name
+ Hydra.Typescript.Syntax: _PropertySignature :: Name
+ Hydra.Typescript.Syntax: _PropertySignature_comments :: Name
+ Hydra.Typescript.Syntax: _PropertySignature_name :: Name
+ Hydra.Typescript.Syntax: _PropertySignature_optional :: Name
+ Hydra.Typescript.Syntax: _PropertySignature_readonly :: Name
+ Hydra.Typescript.Syntax: _PropertySignature_type :: Name
+ Hydra.Typescript.Syntax: _Property_computed :: Name
+ Hydra.Typescript.Syntax: _Property_key :: Name
+ Hydra.Typescript.Syntax: _Property_kind :: Name
+ Hydra.Typescript.Syntax: _Property_shorthand :: Name
+ Hydra.Typescript.Syntax: _Property_value :: Name
+ Hydra.Typescript.Syntax: _QualifiedName :: Name
+ Hydra.Typescript.Syntax: _RestElement :: Name
+ Hydra.Typescript.Syntax: _ReturnStatement :: Name
+ Hydra.Typescript.Syntax: _SourceType :: Name
+ Hydra.Typescript.Syntax: _SourceType_module :: Name
+ Hydra.Typescript.Syntax: _SourceType_script :: Name
+ Hydra.Typescript.Syntax: _SpreadElement :: Name
+ Hydra.Typescript.Syntax: _Statement :: Name
+ Hydra.Typescript.Syntax: _StatementWithComments :: Name
+ Hydra.Typescript.Syntax: _StatementWithComments_body :: Name
+ Hydra.Typescript.Syntax: _StatementWithComments_comments :: Name
+ Hydra.Typescript.Syntax: _Statement_block :: Name
+ Hydra.Typescript.Syntax: _Statement_break :: Name
+ Hydra.Typescript.Syntax: _Statement_classDeclaration :: Name
+ Hydra.Typescript.Syntax: _Statement_continue :: Name
+ Hydra.Typescript.Syntax: _Statement_debugger :: Name
+ Hydra.Typescript.Syntax: _Statement_doWhile :: Name
+ Hydra.Typescript.Syntax: _Statement_empty :: Name
+ Hydra.Typescript.Syntax: _Statement_expression :: Name
+ Hydra.Typescript.Syntax: _Statement_for :: Name
+ Hydra.Typescript.Syntax: _Statement_forIn :: Name
+ Hydra.Typescript.Syntax: _Statement_forOf :: Name
+ Hydra.Typescript.Syntax: _Statement_functionDeclaration :: Name
+ Hydra.Typescript.Syntax: _Statement_if :: Name
+ Hydra.Typescript.Syntax: _Statement_labeled :: Name
+ Hydra.Typescript.Syntax: _Statement_return :: Name
+ Hydra.Typescript.Syntax: _Statement_switch :: Name
+ Hydra.Typescript.Syntax: _Statement_throw :: Name
+ Hydra.Typescript.Syntax: _Statement_try :: Name
+ Hydra.Typescript.Syntax: _Statement_variableDeclaration :: Name
+ Hydra.Typescript.Syntax: _Statement_while :: Name
+ Hydra.Typescript.Syntax: _StringLiteral :: Name
+ Hydra.Typescript.Syntax: _StringLiteral_singleQuote :: Name
+ Hydra.Typescript.Syntax: _StringLiteral_value :: Name
+ Hydra.Typescript.Syntax: _SwitchCase :: Name
+ Hydra.Typescript.Syntax: _SwitchCase_consequent :: Name
+ Hydra.Typescript.Syntax: _SwitchCase_test :: Name
+ Hydra.Typescript.Syntax: _SwitchStatement :: Name
+ Hydra.Typescript.Syntax: _SwitchStatement_cases :: Name
+ Hydra.Typescript.Syntax: _SwitchStatement_discriminant :: Name
+ Hydra.Typescript.Syntax: _TemplateElement :: Name
+ Hydra.Typescript.Syntax: _TemplateElement_tail :: Name
+ Hydra.Typescript.Syntax: _TemplateElement_value :: Name
+ Hydra.Typescript.Syntax: _TemplateLiteral :: Name
+ Hydra.Typescript.Syntax: _TemplateLiteral_expressions :: Name
+ Hydra.Typescript.Syntax: _TemplateLiteral_quasis :: Name
+ Hydra.Typescript.Syntax: _ThrowStatement :: Name
+ Hydra.Typescript.Syntax: _TryStatement :: Name
+ Hydra.Typescript.Syntax: _TryStatement_block :: Name
+ Hydra.Typescript.Syntax: _TryStatement_finalizer :: Name
+ Hydra.Typescript.Syntax: _TryStatement_handler :: Name
+ Hydra.Typescript.Syntax: _TupleTypeExpression :: Name
+ Hydra.Typescript.Syntax: _TypeAliasDeclaration :: Name
+ Hydra.Typescript.Syntax: _TypeAliasDeclaration_name :: Name
+ Hydra.Typescript.Syntax: _TypeAliasDeclaration_type :: Name
+ Hydra.Typescript.Syntax: _TypeAliasDeclaration_typeParameters :: Name
+ Hydra.Typescript.Syntax: _TypeAnnotation :: Name
+ Hydra.Typescript.Syntax: _TypeExpression :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_any :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_array :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_function :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_identifier :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_intersection :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_literal :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_never :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_object :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_optional :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_parameterized :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_readonly :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_tuple :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_union :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_unknown :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_void :: Name
+ Hydra.Typescript.Syntax: _TypeParameter :: Name
+ Hydra.Typescript.Syntax: _TypeParameter_constraint :: Name
+ Hydra.Typescript.Syntax: _TypeParameter_default :: Name
+ Hydra.Typescript.Syntax: _TypeParameter_name :: Name
+ Hydra.Typescript.Syntax: _TypedPattern :: Name
+ Hydra.Typescript.Syntax: _TypedPattern_pattern :: Name
+ Hydra.Typescript.Syntax: _TypedPattern_type :: Name
+ Hydra.Typescript.Syntax: _UnaryExpression :: Name
+ Hydra.Typescript.Syntax: _UnaryExpression_argument :: Name
+ Hydra.Typescript.Syntax: _UnaryExpression_operator :: Name
+ Hydra.Typescript.Syntax: _UnaryExpression_prefix :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_bitwiseNot :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_decrement :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_delete :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_increment :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_negate :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_not :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_plus :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_typeof :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_void :: Name
+ Hydra.Typescript.Syntax: _UnionTypeExpression :: Name
+ Hydra.Typescript.Syntax: _VariableDeclaration :: Name
+ Hydra.Typescript.Syntax: _VariableDeclaration_declarations :: Name
+ Hydra.Typescript.Syntax: _VariableDeclaration_kind :: Name
+ Hydra.Typescript.Syntax: _VariableDeclarator :: Name
+ Hydra.Typescript.Syntax: _VariableDeclarator_id :: Name
+ Hydra.Typescript.Syntax: _VariableDeclarator_init :: Name
+ Hydra.Typescript.Syntax: _VariableKind :: Name
+ Hydra.Typescript.Syntax: _VariableKind_const :: Name
+ Hydra.Typescript.Syntax: _VariableKind_let :: Name
+ Hydra.Typescript.Syntax: _VariableKind_var :: Name
+ Hydra.Typescript.Syntax: _WhileStatement :: Name
+ Hydra.Typescript.Syntax: _WhileStatement_body :: Name
+ Hydra.Typescript.Syntax: _WhileStatement_test :: Name
+ Hydra.Typescript.Syntax: data ArrayElement
+ Hydra.Typescript.Syntax: data ArrowFunctionBody
+ Hydra.Typescript.Syntax: data ArrowFunctionExpression
+ Hydra.Typescript.Syntax: data AsExpression
+ Hydra.Typescript.Syntax: data AssignmentExpression
+ Hydra.Typescript.Syntax: data AssignmentOperator
+ Hydra.Typescript.Syntax: data AssignmentPattern
+ Hydra.Typescript.Syntax: data BinaryExpression
+ Hydra.Typescript.Syntax: data BinaryOperator
+ Hydra.Typescript.Syntax: data CallExpression
+ Hydra.Typescript.Syntax: data CatchClause
+ Hydra.Typescript.Syntax: data ClassDeclaration
+ Hydra.Typescript.Syntax: data ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: data Comment
+ Hydra.Typescript.Syntax: data ConditionalExpression
+ Hydra.Typescript.Syntax: data DoWhileStatement
+ Hydra.Typescript.Syntax: data DocumentationComment
+ Hydra.Typescript.Syntax: data DocumentationTag
+ Hydra.Typescript.Syntax: data ExportAllDeclaration
+ Hydra.Typescript.Syntax: data ExportDeclaration
+ Hydra.Typescript.Syntax: data ExportSpecifier
+ Hydra.Typescript.Syntax: data Expression
+ Hydra.Typescript.Syntax: data ForInLeft
+ Hydra.Typescript.Syntax: data ForInStatement
+ Hydra.Typescript.Syntax: data ForInit
+ Hydra.Typescript.Syntax: data ForOfStatement
+ Hydra.Typescript.Syntax: data ForStatement
+ Hydra.Typescript.Syntax: data FunctionDeclaration
+ Hydra.Typescript.Syntax: data FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: data FunctionExpression
+ Hydra.Typescript.Syntax: data FunctionTypeExpression
+ Hydra.Typescript.Syntax: data IfStatement
+ Hydra.Typescript.Syntax: data ImportClause
+ Hydra.Typescript.Syntax: data ImportDeclaration
+ Hydra.Typescript.Syntax: data ImportSpecifier
+ Hydra.Typescript.Syntax: data InterfaceDeclaration
+ Hydra.Typescript.Syntax: data LabeledStatement
+ Hydra.Typescript.Syntax: data Literal
+ Hydra.Typescript.Syntax: data MemberExpression
+ Hydra.Typescript.Syntax: data MethodDefinition
+ Hydra.Typescript.Syntax: data MethodKind
+ Hydra.Typescript.Syntax: data ModuleItem
+ Hydra.Typescript.Syntax: data ModuleItemWithComments
+ Hydra.Typescript.Syntax: data NamedExport
+ Hydra.Typescript.Syntax: data NumericLiteral
+ Hydra.Typescript.Syntax: data ObjectPattern
+ Hydra.Typescript.Syntax: data ObjectPatternProperty
+ Hydra.Typescript.Syntax: data ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: data Pattern
+ Hydra.Typescript.Syntax: data Program
+ Hydra.Typescript.Syntax: data Property
+ Hydra.Typescript.Syntax: data PropertyKind
+ Hydra.Typescript.Syntax: data PropertySignature
+ Hydra.Typescript.Syntax: data SourceType
+ Hydra.Typescript.Syntax: data Statement
+ Hydra.Typescript.Syntax: data StatementWithComments
+ Hydra.Typescript.Syntax: data StringLiteral
+ Hydra.Typescript.Syntax: data SwitchCase
+ Hydra.Typescript.Syntax: data SwitchStatement
+ Hydra.Typescript.Syntax: data TemplateElement
+ Hydra.Typescript.Syntax: data TemplateLiteral
+ Hydra.Typescript.Syntax: data TryStatement
+ Hydra.Typescript.Syntax: data TypeAliasDeclaration
+ Hydra.Typescript.Syntax: data TypeExpression
+ Hydra.Typescript.Syntax: data TypeParameter
+ Hydra.Typescript.Syntax: data TypedPattern
+ Hydra.Typescript.Syntax: data UnaryExpression
+ Hydra.Typescript.Syntax: data UnaryOperator
+ Hydra.Typescript.Syntax: data VariableDeclaration
+ Hydra.Typescript.Syntax: data VariableDeclarator
+ Hydra.Typescript.Syntax: data VariableKind
+ Hydra.Typescript.Syntax: data WhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ArrayElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ArrayTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ArrowFunctionBody
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ArrowFunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.AsExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.AssignmentExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.AssignmentOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.AssignmentPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.BinaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.BinaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.CallExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.CatchClause
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ClassDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Comment
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ConditionalExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.DoWhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.DocumentationComment
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.DocumentationTag
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ExportAllDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ExportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ExportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Expression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ForInLeft
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ForInStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ForInit
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ForOfStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ForStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.FunctionDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.FunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.FunctionTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Identifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.IfStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ImportClause
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ImportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ImportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.InterfaceDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.LabeledStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Literal
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.MemberExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.MethodDefinition
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.MethodKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ModuleItem
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ModuleItemWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.NamedExport
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.NumericLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ObjectPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ObjectPatternProperty
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Pattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Program
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Property
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.PropertyKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.PropertySignature
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.RestElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.SourceType
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.SpreadElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Statement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.StatementWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.StringLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.SwitchCase
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.SwitchStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TemplateElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TemplateLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ThrowStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TryStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TypeAliasDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TypeAnnotation
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TypeParameter
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TypedPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.UnaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.UnaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.VariableDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.VariableDeclarator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.VariableKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.WhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ArrayElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ArrayTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ArrowFunctionBody
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ArrowFunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.AsExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.AssignmentExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.AssignmentOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.AssignmentPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.BinaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.BinaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.CallExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.CatchClause
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ClassDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Comment
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ConditionalExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.DoWhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.DocumentationComment
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.DocumentationTag
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ExportAllDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ExportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ExportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Expression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ForInLeft
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ForInStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ForInit
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ForOfStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ForStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.FunctionDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.FunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.FunctionTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Identifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.IfStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ImportClause
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ImportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ImportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.InterfaceDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.LabeledStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Literal
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.MemberExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.MethodDefinition
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.MethodKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ModuleItem
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ModuleItemWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.NamedExport
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.NumericLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ObjectPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ObjectPatternProperty
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Pattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Program
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Property
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.PropertyKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.PropertySignature
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.RestElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.SourceType
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.SpreadElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Statement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.StatementWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.StringLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.SwitchCase
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.SwitchStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TemplateElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TemplateLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ThrowStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TryStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TypeAliasDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TypeAnnotation
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TypeParameter
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TypedPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.UnaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.UnaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.VariableDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.VariableDeclarator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.VariableKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.WhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ArrayElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ArrayTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ArrowFunctionBody
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ArrowFunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.AsExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.AssignmentExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.AssignmentOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.AssignmentPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.BinaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.BinaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.CallExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.CatchClause
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ClassDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Comment
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ConditionalExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.DoWhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.DocumentationComment
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.DocumentationTag
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ExportAllDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ExportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ExportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Expression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ForInLeft
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ForInStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ForInit
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ForOfStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ForStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.FunctionDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.FunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.FunctionTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Identifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.IfStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ImportClause
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ImportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ImportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.InterfaceDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.LabeledStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Literal
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.MemberExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.MethodDefinition
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.MethodKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ModuleItem
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ModuleItemWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.NamedExport
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.NumericLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ObjectPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ObjectPatternProperty
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Pattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Program
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Property
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.PropertyKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.PropertySignature
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.RestElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.SourceType
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.SpreadElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Statement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.StatementWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.StringLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.SwitchCase
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.SwitchStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TemplateElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TemplateLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ThrowStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TryStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TypeAliasDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TypeAnnotation
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TypeParameter
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TypedPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.UnaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.UnaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.VariableDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.VariableDeclarator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.VariableKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.WhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ArrayElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ArrayTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ArrowFunctionBody
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ArrowFunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.AsExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.AssignmentExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.AssignmentOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.AssignmentPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.BinaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.BinaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.CallExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.CatchClause
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ClassDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Comment
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ConditionalExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.DoWhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.DocumentationComment
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.DocumentationTag
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ExportAllDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ExportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ExportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Expression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ForInLeft
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ForInStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ForInit
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ForOfStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ForStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.FunctionDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.FunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.FunctionTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Identifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.IfStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ImportClause
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ImportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ImportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.InterfaceDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.LabeledStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Literal
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.MemberExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.MethodDefinition
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.MethodKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ModuleItem
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ModuleItemWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.NamedExport
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.NumericLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ObjectPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ObjectPatternProperty
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Pattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Program
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Property
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.PropertyKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.PropertySignature
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.RestElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.SourceType
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.SpreadElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Statement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.StatementWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.StringLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.SwitchCase
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.SwitchStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TemplateElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TemplateLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ThrowStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TryStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TypeAliasDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TypeAnnotation
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TypeParameter
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TypedPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.UnaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.UnaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.VariableDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.VariableDeclarator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.VariableKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.WhileStatement
+ Hydra.Typescript.Syntax: newtype ArrayTypeExpression
+ Hydra.Typescript.Syntax: newtype Identifier
+ Hydra.Typescript.Syntax: newtype ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: newtype ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: newtype RestElement
+ Hydra.Typescript.Syntax: newtype SpreadElement
+ Hydra.Typescript.Syntax: newtype ThrowStatement
+ Hydra.Typescript.Syntax: newtype TypeAnnotation
+ Hydra.Typescript.Syntax: type ArrayExpression = [ArrayElement]
+ Hydra.Typescript.Syntax: type ArrayPattern = [Maybe Pattern]
+ Hydra.Typescript.Syntax: type BlockStatement = [Statement]
+ Hydra.Typescript.Syntax: type BreakStatement = Maybe Identifier
+ Hydra.Typescript.Syntax: type ClassBody = [MethodDefinition]
+ Hydra.Typescript.Syntax: type ContinueStatement = Maybe Identifier
+ Hydra.Typescript.Syntax: type IntersectionTypeExpression = [TypeExpression]
+ Hydra.Typescript.Syntax: type ObjectExpression = [Property]
+ Hydra.Typescript.Syntax: type ObjectTypeExpression = [PropertySignature]
+ Hydra.Typescript.Syntax: type QualifiedName = [Identifier]
+ Hydra.Typescript.Syntax: type ReturnStatement = Maybe Expression
+ Hydra.Typescript.Syntax: type TupleTypeExpression = [TypeExpression]
+ Hydra.Typescript.Syntax: type UnionTypeExpression = [TypeExpression]

Files

CHANGELOG.md view
@@ -15,6 +15,86 @@  --- +## [0.18.0] - 2026-09-29++Module-naming systematization release: every kernel and package module moves onto a uniform+`hydra.core.*` / `hydra.<pkg>.*` grammar, completing the package ⊃ module ⊃ definition containment+tower. The rename touches every module, definition, and cross-host reference in the codebase; this+release exists primarily to ship it as its own coordinated batch. Also lands the translingual regex+primitive pipeline and several silent-correctness fixes in the coder layer.++### Highlights++- **Module-name grammar systematization** ([#729](https://github.com/CategoricalData/hydra/issues/729)):+  every `hydra.*` module renamed onto a uniform package-derived prefix — kernel modules move to+  `hydra.core.*`, package modules to `hydra.<pkg>.*` — closing the long-standing inconsistency where+  a package name had no structural relationship to the module names it contained. The rename spans+  every host (Haskell, Java, Python, Scala, TypeScript, all four Lisp dialects) and required fixing+  stale namespace references, overlay-directory paths, and `hostOverrides` shims across every driver+  and bootstrap script that had hardcoded the old grammar. Further consolidation (a structurally+  enforced package↔prefix law) is tracked for 0.18.1. The kernel package itself is still published as+  `hydra-kernel` (its modules are under `hydra.core.*`); the `hydra-core` package rename #729 called for+  is under review because that name is taken on PyPI and npm+  ([#770](https://github.com/CategoricalData/hydra/issues/770)).+- **Translingual regex primitives** ([#603](https://github.com/CategoricalData/hydra/issues/603)):+  `hydra.lib.regex` primitives (`find`, `findAll`, `matches`, `replace`, `replaceAll`, `split`) now run+  every pattern through the shared `hydra.regex` parse/print pipeline instead of handing raw pattern+  strings to each host's native engine, so a pattern means the same thing on every host. Includes a+  host-independent conformance suite and a leftmost-longest alternation fix in the PCRE/POSIX printers.+- **Silent-corruption fixes across the coder layer**+  ([#744](https://github.com/CategoricalData/hydra/issues/744),+  [#765](https://github.com/CategoricalData/hydra/issues/765),+  [#649](https://github.com/CategoricalData/hydra/issues/649)): fixed data-corrupting bugs in the+  JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders (extended integer widths, map-key handling), the+  kernel's encode/decode generators (reversed type-parameter order on 2+-param polymorphic types), and+  the Python coder (silently dropping a module's types when types and terms share a file path).+- **Self-hosted specification docs** ([#723](https://github.com/CategoricalData/hydra/issues/723)):+  the module-reference pages under `docs/specification/` are now generated directly from the kernel+  (`bin/regenerate-spec.sh`) via a new metadata-only doc coder, rather than hand-maintained.++### New features++- **[#603](https://github.com/CategoricalData/hydra/issues/603)** host-independent regex conformance+  suite covering the minimal-core grammar (literals, classes, quantifiers, alternation, anchors,+  grouping) across all 9 hosts.+- **[#723](https://github.com/CategoricalData/hydra/issues/723)** `hydra.markdown` type module and+  `generateModuleDoc`, the metadata-only doc coder backing the self-generated spec pages.+- **[#382](https://github.com/CategoricalData/hydra/issues/382)** the Rust coder is split out of+  `hydra-ext` into its own first-class `hydra-rust` package.++### Bug fixes++- **[#744](https://github.com/CategoricalData/hydra/issues/744)** silent data corruption in+  JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders for extended integer widths and map-key handling.+- **[#765](https://github.com/CategoricalData/hydra/issues/765)** kernel encode/decode generators+  emitted reversed type-parameter order for 2+-param polymorphic types.+- **[#649](https://github.com/CategoricalData/hydra/issues/649)** Python coder silently dropped a+  module's types when types and terms targeted the same output file path.+- **[#572](https://github.com/CategoricalData/hydra/issues/572)** TypeScript kernel-JSON test+  bridge's compact-form decode heuristic mishandled nullary union arms.+- **[#761](https://github.com/CategoricalData/hydra/issues/761)** cold-seed generation ignored+  `hostOverrides.java=local`, silently pulling the published Java host jar instead.+- **[#736](https://github.com/CategoricalData/hydra/issues/736)** Java build now pins JDK 11 via a+  Gradle toolchain block, instead of depending on ambient `JAVA_HOME`.++### Improvements++- **[#327](https://github.com/CategoricalData/hydra/issues/327)** new `hydra.diff` schema-diff type+  module; `Term.Inject` comparison is now by variant name.+- **[#573](https://github.com/CategoricalData/hydra/issues/573)** per-registry publish sets (Hackage,+  Maven, PyPI, npm) are now derived from the package registry itself instead of 13 hand-maintained+  lists — closes a recurring class of silent release-time drift.+- **[#735](https://github.com/CategoricalData/hydra/issues/735)** cross-host decimal-scale test+  filtering now driven by a translingual `scaleDistinct` capability tag instead of hand-copied+  per-host skip lists.++### Documentation++- **[#655](https://github.com/CategoricalData/hydra/issues/655)** documented the overlay-emission+  "implementation wins" decision for bare primitive references (`docs/overlays.md`).++---+ ## [0.17.7] - 2026-09-14  Correctness-hardening point release on the 0.17.x line, consolidating the 0.17.6 breaking batch. It
hydra-typescript.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           hydra-typescript-version:        0.17.7+version:        0.18.0 synopsis:       Hydra's TypeScript coder: emit TypeScript source from Hydra modules description:    Hydra is an implementation of the LambdaGraph data model, which takes advantage of an isomorphism between labeled hypergraphs and typed lambda calculus: in Hydra, "graphs are programs, and programs are graphs". TypeScript support for Hydra category:       Data@@ -27,13 +27,13 @@  library   exposed-modules:-      Hydra.Dsl.TypeScript.Syntax-      Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers-      Hydra.TypeScript.Coder-      Hydra.TypeScript.Language-      Hydra.TypeScript.Operators-      Hydra.TypeScript.Serde-      Hydra.TypeScript.Syntax+      Hydra.Typescript.Coder+      Hydra.Typescript.Dsl.Syntax+      Hydra.Typescript.Language+      Hydra.Typescript.Operators+      Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers+      Hydra.Typescript.Serde+      Hydra.Typescript.Syntax   other-modules:       Paths_hydra_typescript   hs-source-dirs:@@ -41,6 +41,6 @@   build-depends:       base >=4.19.0 && <4.22     , containers >=0.6.7 && <0.8-    , hydra-kernel ==0.17.7+    , hydra-kernel ==0.18.0     , scientific >=0.3.7 && <0.4   default-language: Haskell2010
− src/main/haskell/Hydra/Dsl/TypeScript/Syntax.hs
@@ -1,7269 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | DSL functions for hydra.typeScript.syntax--module Hydra.Dsl.TypeScript.Syntax where--import qualified Hydra.Core as Core-import qualified Hydra.TypeScript.Syntax as Syntax-import qualified Hydra.Typed as Typed-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void-import qualified Data.Int as I---- | DSL name token for hydra.typeScript.syntax.ArrayElement-arrayElementArrayElement :: Typed.TypedName Syntax.ArrayElement-arrayElementArrayElement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ArrayElement")---- | DSL injection for the expression variant of hydra.typeScript.syntax.ArrayElement-arrayElementExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ArrayElement-arrayElementExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrayElement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the hole variant of hydra.typeScript.syntax.ArrayElement-arrayElementHole :: Typed.TypedTerm Syntax.ArrayElement-arrayElementHole =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrayElement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "hole"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the spread variant of hydra.typeScript.syntax.ArrayElement-arrayElementSpread :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.ArrayElement-arrayElementSpread x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrayElement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "spread"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.typeScript.syntax.ArrayTypeExpression wrapper-arrayTypeExpression :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.ArrayTypeExpression-arrayTypeExpression x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.ArrayTypeExpression"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ArrayTypeExpression-arrayTypeExpressionArrayTypeExpression :: Typed.TypedName Syntax.ArrayTypeExpression-arrayTypeExpressionArrayTypeExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ArrayTypeExpression")---- | DSL name token for hydra.typeScript.syntax.ArrowFunctionBody-arrowFunctionBodyArrowFunctionBody :: Typed.TypedName Syntax.ArrowFunctionBody-arrowFunctionBodyArrowFunctionBody = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ArrowFunctionBody")---- | DSL injection for the block variant of hydra.typeScript.syntax.ArrowFunctionBody-arrowFunctionBodyBlock :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.ArrowFunctionBody-arrowFunctionBodyBlock x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionBody"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "block"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the expression variant of hydra.typeScript.syntax.ArrowFunctionBody-arrowFunctionBodyExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ArrowFunctionBody-arrowFunctionBodyExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionBody"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpression :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ArrowFunctionBody -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ArrowFunctionExpression-arrowFunctionExpression params body async =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Typed.unTypedTerm params)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Typed.unTypedTerm async)}]}))---- | DSL name token for hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionArrowFunctionExpression :: Typed.TypedName Syntax.ArrowFunctionExpression-arrowFunctionExpressionArrowFunctionExpression =-    Typed.TypedName (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression")---- | DSL accessor for the async field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionAsync :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Bool-arrowFunctionExpressionAsync x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-        Core.projectionFieldName = (Core.Name "async")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionBody :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.ArrowFunctionBody-arrowFunctionExpressionBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the params field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionParams :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm [Syntax.Pattern]-arrowFunctionExpressionParams x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-        Core.projectionFieldName = (Core.Name "params")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the async field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionWithAsync :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ArrowFunctionExpression-arrowFunctionExpressionWithAsync original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-              Core.projectionFieldName = (Core.Name "params")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the body field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionWithBody :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.ArrowFunctionBody -> Typed.TypedTerm Syntax.ArrowFunctionExpression-arrowFunctionExpressionWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-              Core.projectionFieldName = (Core.Name "params")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-              Core.projectionFieldName = (Core.Name "async")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the params field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionWithParams :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ArrowFunctionExpression-arrowFunctionExpressionWithParams original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),-              Core.projectionFieldName = (Core.Name "async")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.AsExpression-asExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.AsExpression-asExpression expression type_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)}]}))---- | DSL name token for hydra.typeScript.syntax.AsExpression-asExpressionAsExpression :: Typed.TypedName Syntax.AsExpression-asExpressionAsExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.AsExpression")---- | DSL accessor for the expression field of hydra.typeScript.syntax.AsExpression-asExpressionExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression-asExpressionExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.typeScript.syntax.AsExpression-asExpressionType :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.TypeExpression-asExpressionType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the expression field of hydra.typeScript.syntax.AsExpression-asExpressionWithExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AsExpression-asExpressionWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.typeScript.syntax.AsExpression-asExpressionWithType :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.AsExpression-asExpressionWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.AssignmentExpression-assignmentExpression :: Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression-assignmentExpression operator left right =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm operator)},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Typed.unTypedTerm left)},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Typed.unTypedTerm right)}]}))---- | DSL name token for hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionAssignmentExpression :: Typed.TypedName Syntax.AssignmentExpression-assignmentExpressionAssignmentExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.AssignmentExpression")---- | DSL accessor for the left field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionLeft :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Pattern-assignmentExpressionLeft x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-        Core.projectionFieldName = (Core.Name "left")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the operator field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionOperator :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.AssignmentOperator-assignmentExpressionOperator x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-        Core.projectionFieldName = (Core.Name "operator")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the right field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionRight :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression-assignmentExpressionRight x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-        Core.projectionFieldName = (Core.Name "right")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the left field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionWithLeft :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AssignmentExpression-assignmentExpressionWithLeft original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-              Core.projectionFieldName = (Core.Name "operator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-              Core.projectionFieldName = (Core.Name "right")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the operator field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionWithOperator :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.AssignmentExpression-assignmentExpressionWithOperator original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-              Core.projectionFieldName = (Core.Name "left")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-              Core.projectionFieldName = (Core.Name "right")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the right field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionWithRight :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression-assignmentExpressionWithRight original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-              Core.projectionFieldName = (Core.Name "operator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),-              Core.projectionFieldName = (Core.Name "left")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the addAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorAddAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorAddAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "addAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the andAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorAndAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorAndAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "andAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the assign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "assign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorAssignmentOperator :: Typed.TypedName Syntax.AssignmentOperator-assignmentOperatorAssignmentOperator = Typed.TypedName (Core.Name "hydra.typeScript.syntax.AssignmentOperator")---- | DSL injection for the bitwiseAndAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorBitwiseAndAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorBitwiseAndAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "bitwiseAndAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the bitwiseOrAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorBitwiseOrAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorBitwiseOrAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "bitwiseOrAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the bitwiseXorAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorBitwiseXorAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorBitwiseXorAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "bitwiseXorAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the divideAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorDivideAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorDivideAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "divideAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the exponentiateAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorExponentiateAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorExponentiateAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "exponentiateAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the leftShiftAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorLeftShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorLeftShiftAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "leftShiftAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the moduloAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorModuloAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorModuloAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "moduloAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the multiplyAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorMultiplyAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorMultiplyAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "multiplyAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the nullishAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorNullishAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorNullishAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "nullishAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the orAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorOrAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorOrAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "orAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the rightShiftAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorRightShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorRightShiftAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "rightShiftAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the subtractAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorSubtractAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorSubtractAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "subtractAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the unsignedRightShiftAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorUnsignedRightShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorUnsignedRightShiftAssign =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "unsignedRightShiftAssign"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.typeScript.syntax.AssignmentPattern-assignmentPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentPattern-assignmentPattern left right =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Typed.unTypedTerm left)},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Typed.unTypedTerm right)}]}))---- | DSL name token for hydra.typeScript.syntax.AssignmentPattern-assignmentPatternAssignmentPattern :: Typed.TypedName Syntax.AssignmentPattern-assignmentPatternAssignmentPattern = Typed.TypedName (Core.Name "hydra.typeScript.syntax.AssignmentPattern")---- | DSL accessor for the left field of hydra.typeScript.syntax.AssignmentPattern-assignmentPatternLeft :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern-assignmentPatternLeft x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),-        Core.projectionFieldName = (Core.Name "left")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the right field of hydra.typeScript.syntax.AssignmentPattern-assignmentPatternRight :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Expression-assignmentPatternRight x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),-        Core.projectionFieldName = (Core.Name "right")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the left field of hydra.typeScript.syntax.AssignmentPattern-assignmentPatternWithLeft :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AssignmentPattern-assignmentPatternWithLeft original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),-              Core.projectionFieldName = (Core.Name "right")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the right field of hydra.typeScript.syntax.AssignmentPattern-assignmentPatternWithRight :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentPattern-assignmentPatternWithRight original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),-      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 "hydra.typeScript.syntax.AssignmentPattern"),-              Core.projectionFieldName = (Core.Name "left")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.BinaryExpression-binaryExpression :: Typed.TypedTerm Syntax.BinaryOperator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression-binaryExpression operator left right =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm operator)},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Typed.unTypedTerm left)},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Typed.unTypedTerm right)}]}))---- | DSL name token for hydra.typeScript.syntax.BinaryExpression-binaryExpressionBinaryExpression :: Typed.TypedName Syntax.BinaryExpression-binaryExpressionBinaryExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.BinaryExpression")---- | DSL accessor for the left field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionLeft :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression-binaryExpressionLeft x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-        Core.projectionFieldName = (Core.Name "left")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the operator field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionOperator :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.BinaryOperator-binaryExpressionOperator x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-        Core.projectionFieldName = (Core.Name "operator")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the right field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionRight :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression-binaryExpressionRight x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-        Core.projectionFieldName = (Core.Name "right")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the left field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionWithLeft :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression-binaryExpressionWithLeft original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-              Core.projectionFieldName = (Core.Name "operator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-              Core.projectionFieldName = (Core.Name "right")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the operator field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionWithOperator :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.BinaryOperator -> Typed.TypedTerm Syntax.BinaryExpression-binaryExpressionWithOperator original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-              Core.projectionFieldName = (Core.Name "left")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-              Core.projectionFieldName = (Core.Name "right")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the right field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionWithRight :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression-binaryExpressionWithRight original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-              Core.projectionFieldName = (Core.Name "operator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),-              Core.projectionFieldName = (Core.Name "left")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the add variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorAdd :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorAdd =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "add"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the and variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorAnd :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorAnd =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "and"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.BinaryOperator-binaryOperatorBinaryOperator :: Typed.TypedName Syntax.BinaryOperator-binaryOperatorBinaryOperator = Typed.TypedName (Core.Name "hydra.typeScript.syntax.BinaryOperator")---- | DSL injection for the bitwiseAnd variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorBitwiseAnd :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorBitwiseAnd =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "bitwiseAnd"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the bitwiseOr variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorBitwiseOr :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorBitwiseOr =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "bitwiseOr"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the bitwiseXor variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorBitwiseXor :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorBitwiseXor =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "bitwiseXor"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the divide variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorDivide :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorDivide =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "divide"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the equal variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorEqual =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "equal"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the exponentiate variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorExponentiate :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorExponentiate =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "exponentiate"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the greaterThan variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorGreaterThan :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorGreaterThan =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "greaterThan"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the greaterThanOrEqual variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorGreaterThanOrEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorGreaterThanOrEqual =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "greaterThanOrEqual"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the in variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorIn :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorIn =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "in"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the instanceof variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorInstanceof :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorInstanceof =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "instanceof"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the leftShift variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorLeftShift :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorLeftShift =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "leftShift"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the lessThan variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorLessThan :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorLessThan =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "lessThan"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the lessThanOrEqual variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorLessThanOrEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorLessThanOrEqual =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "lessThanOrEqual"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the modulo variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorModulo :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorModulo =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "modulo"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the multiply variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorMultiply :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorMultiply =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "multiply"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the notEqual variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorNotEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorNotEqual =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "notEqual"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the nullishCoalescing variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorNullishCoalescing :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorNullishCoalescing =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "nullishCoalescing"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the or variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorOr :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorOr =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "or"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the rightShift variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorRightShift :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorRightShift =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "rightShift"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the strictEqual variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorStrictEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorStrictEqual =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "strictEqual"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the strictNotEqual variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorStrictNotEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorStrictNotEqual =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "strictNotEqual"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the subtract variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorSubtract :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorSubtract =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "subtract"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the unsignedRightShift variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorUnsignedRightShift :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorUnsignedRightShift =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "unsignedRightShift"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.typeScript.syntax.CallExpression-callExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.CallExpression-callExpression callee arguments optional =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "callee"),-          Core.fieldTerm = (Typed.unTypedTerm callee)},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm arguments)},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Typed.unTypedTerm optional)}]}))---- | DSL accessor for the arguments field of hydra.typeScript.syntax.CallExpression-callExpressionArguments :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm [Syntax.Expression]-callExpressionArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-        Core.projectionFieldName = (Core.Name "arguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.CallExpression-callExpressionCallExpression :: Typed.TypedName Syntax.CallExpression-callExpressionCallExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.CallExpression")---- | DSL accessor for the callee field of hydra.typeScript.syntax.CallExpression-callExpressionCallee :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression-callExpressionCallee x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-        Core.projectionFieldName = (Core.Name "callee")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the optional field of hydra.typeScript.syntax.CallExpression-callExpressionOptional :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Bool-callExpressionOptional x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-        Core.projectionFieldName = (Core.Name "optional")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the arguments field of hydra.typeScript.syntax.CallExpression-callExpressionWithArguments :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.CallExpression-callExpressionWithArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "callee"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-              Core.projectionFieldName = (Core.Name "callee")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-              Core.projectionFieldName = (Core.Name "optional")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the callee field of hydra.typeScript.syntax.CallExpression-callExpressionWithCallee :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.CallExpression-callExpressionWithCallee original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "callee"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-              Core.projectionFieldName = (Core.Name "optional")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the optional field of hydra.typeScript.syntax.CallExpression-callExpressionWithOptional :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.CallExpression-callExpressionWithOptional original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "callee"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-              Core.projectionFieldName = (Core.Name "callee")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.CatchClause-catchClause :: Typed.TypedTerm (Maybe Syntax.Pattern) -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.CatchClause-catchClause param body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "param"),-          Core.fieldTerm = (Typed.unTypedTerm param)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.CatchClause-catchClauseBody :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.BlockStatement-catchClauseBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.CatchClause-catchClauseCatchClause :: Typed.TypedName Syntax.CatchClause-catchClauseCatchClause = Typed.TypedName (Core.Name "hydra.typeScript.syntax.CatchClause")---- | DSL accessor for the param field of hydra.typeScript.syntax.CatchClause-catchClauseParam :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.Pattern)-catchClauseParam x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),-        Core.projectionFieldName = (Core.Name "param")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.CatchClause-catchClauseWithBody :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.CatchClause-catchClauseWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "param"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),-              Core.projectionFieldName = (Core.Name "param")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the param field of hydra.typeScript.syntax.CatchClause-catchClauseWithParam :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.Pattern) -> Typed.TypedTerm Syntax.CatchClause-catchClauseWithParam original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "param"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.ClassDeclaration-classDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclaration id superClass body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm id)},-        Core.Field {-          Core.fieldName = (Core.Name "superClass"),-          Core.fieldTerm = (Typed.unTypedTerm superClass)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationBody :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassBody-classDeclarationBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ClassDeclaration-classDeclarationClassDeclaration :: Typed.TypedName Syntax.ClassDeclaration-classDeclarationClassDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ClassDeclaration")---- | DSL accessor for the id field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationId :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Identifier-classDeclarationId x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-        Core.projectionFieldName = (Core.Name "id")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the superClass field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationSuperClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.Expression)-classDeclarationSuperClass x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-        Core.projectionFieldName = (Core.Name "superClass")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationWithBody :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclarationWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "superClass"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-              Core.projectionFieldName = (Core.Name "superClass")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithComments :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ClassDeclarationWithComments-classDeclarationWithComments body comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithCommentsBody :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclarationWithCommentsBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithCommentsClassDeclarationWithComments :: Typed.TypedName Syntax.ClassDeclarationWithComments-classDeclarationWithCommentsClassDeclarationWithComments =-    Typed.TypedName (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments")---- | DSL accessor for the comments field of hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)-classDeclarationWithCommentsComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithCommentsWithBody :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassDeclarationWithComments-classDeclarationWithCommentsWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the comments field of hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ClassDeclarationWithComments-classDeclarationWithCommentsWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the id field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationWithId :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclarationWithId original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "superClass"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-              Core.projectionFieldName = (Core.Name "superClass")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the superClass field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationWithSuperClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclarationWithSuperClass original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "superClass"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the block variant of hydra.typeScript.syntax.Comment-commentBlock :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Comment-commentBlock x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Comment"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "block"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.Comment-commentComment :: Typed.TypedName Syntax.Comment-commentComment = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Comment")---- | DSL injection for the documentation variant of hydra.typeScript.syntax.Comment-commentDocumentation :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm Syntax.Comment-commentDocumentation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Comment"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "documentation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the line variant of hydra.typeScript.syntax.Comment-commentLine :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Comment-commentLine x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Comment"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "line"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ConditionalExpression-conditionalExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpression test consequent alternate =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm test)},-        Core.Field {-          Core.fieldName = (Core.Name "consequent"),-          Core.fieldTerm = (Typed.unTypedTerm consequent)},-        Core.Field {-          Core.fieldName = (Core.Name "alternate"),-          Core.fieldTerm = (Typed.unTypedTerm alternate)}]}))---- | DSL accessor for the alternate field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionAlternate :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression-conditionalExpressionAlternate x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-        Core.projectionFieldName = (Core.Name "alternate")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionConditionalExpression :: Typed.TypedName Syntax.ConditionalExpression-conditionalExpressionConditionalExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ConditionalExpression")---- | DSL accessor for the consequent field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionConsequent :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression-conditionalExpressionConsequent x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-        Core.projectionFieldName = (Core.Name "consequent")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the test field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionTest :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression-conditionalExpressionTest x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-        Core.projectionFieldName = (Core.Name "test")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the alternate field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionWithAlternate :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpressionWithAlternate original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-              Core.projectionFieldName = (Core.Name "test")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "consequent"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-              Core.projectionFieldName = (Core.Name "consequent")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "alternate"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the consequent field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionWithConsequent :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpressionWithConsequent original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-              Core.projectionFieldName = (Core.Name "test")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "consequent"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "alternate"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-              Core.projectionFieldName = (Core.Name "alternate")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionWithTest :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpressionWithTest original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "consequent"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-              Core.projectionFieldName = (Core.Name "consequent")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "alternate"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),-              Core.projectionFieldName = (Core.Name "alternate")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.DoWhileStatement-doWhileStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoWhileStatement-doWhileStatement body test =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)},-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm test)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.DoWhileStatement-doWhileStatementBody :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement-doWhileStatementBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.DoWhileStatement-doWhileStatementDoWhileStatement :: Typed.TypedName Syntax.DoWhileStatement-doWhileStatementDoWhileStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.DoWhileStatement")---- | DSL accessor for the test field of hydra.typeScript.syntax.DoWhileStatement-doWhileStatementTest :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Expression-doWhileStatementTest x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),-        Core.projectionFieldName = (Core.Name "test")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.DoWhileStatement-doWhileStatementWithBody :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.DoWhileStatement-doWhileStatementWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),-              Core.projectionFieldName = (Core.Name "test")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.DoWhileStatement-doWhileStatementWithTest :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoWhileStatement-doWhileStatementWithTest original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.DocumentationComment-documentationComment :: Typed.TypedTerm String -> Typed.TypedTerm [Syntax.DocumentationTag] -> Typed.TypedTerm Syntax.DocumentationComment-documentationComment description tags =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "description"),-          Core.fieldTerm = (Typed.unTypedTerm description)},-        Core.Field {-          Core.fieldName = (Core.Name "tags"),-          Core.fieldTerm = (Typed.unTypedTerm tags)}]}))---- | DSL accessor for the description field of hydra.typeScript.syntax.DocumentationComment-documentationCommentDescription :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm String-documentationCommentDescription x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),-        Core.projectionFieldName = (Core.Name "description")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.DocumentationComment-documentationCommentDocumentationComment :: Typed.TypedName Syntax.DocumentationComment-documentationCommentDocumentationComment = Typed.TypedName (Core.Name "hydra.typeScript.syntax.DocumentationComment")---- | DSL accessor for the tags field of hydra.typeScript.syntax.DocumentationComment-documentationCommentTags :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm [Syntax.DocumentationTag]-documentationCommentTags x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),-        Core.projectionFieldName = (Core.Name "tags")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the description field of hydra.typeScript.syntax.DocumentationComment-documentationCommentWithDescription :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationComment-documentationCommentWithDescription original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "description"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "tags"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),-              Core.projectionFieldName = (Core.Name "tags")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the tags field of hydra.typeScript.syntax.DocumentationComment-documentationCommentWithTags :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm [Syntax.DocumentationTag] -> Typed.TypedTerm Syntax.DocumentationComment-documentationCommentWithTags original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "description"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),-              Core.projectionFieldName = (Core.Name "description")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "tags"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.DocumentationTag-documentationTag :: Typed.TypedTerm String -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag-documentationTag name type_ paramName description =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "paramName"),-          Core.fieldTerm = (Typed.unTypedTerm paramName)},-        Core.Field {-          Core.fieldName = (Core.Name "description"),-          Core.fieldTerm = (Typed.unTypedTerm description)}]}))---- | DSL accessor for the description field of hydra.typeScript.syntax.DocumentationTag-documentationTagDescription :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String-documentationTagDescription x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-        Core.projectionFieldName = (Core.Name "description")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.DocumentationTag-documentationTagDocumentationTag :: Typed.TypedName Syntax.DocumentationTag-documentationTagDocumentationTag = Typed.TypedName (Core.Name "hydra.typeScript.syntax.DocumentationTag")---- | DSL accessor for the name field of hydra.typeScript.syntax.DocumentationTag-documentationTagName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String-documentationTagName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the paramName field of hydra.typeScript.syntax.DocumentationTag-documentationTagParamName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.Identifier)-documentationTagParamName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-        Core.projectionFieldName = (Core.Name "paramName")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.typeScript.syntax.DocumentationTag-documentationTagType :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.TypeExpression)-documentationTagType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the description field of hydra.typeScript.syntax.DocumentationTag-documentationTagWithDescription :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag-documentationTagWithDescription original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "paramName"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "paramName")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "description"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.typeScript.syntax.DocumentationTag-documentationTagWithName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag-documentationTagWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "paramName"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "paramName")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "description"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "description")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the paramName field of hydra.typeScript.syntax.DocumentationTag-documentationTagWithParamName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.DocumentationTag-documentationTagWithParamName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "paramName"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "description"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "description")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.typeScript.syntax.DocumentationTag-documentationTagWithType :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.DocumentationTag-documentationTagWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "paramName"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "paramName")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "description"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),-              Core.projectionFieldName = (Core.Name "description")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclaration :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ExportAllDeclaration-exportAllDeclaration exported source =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "exported"),-          Core.fieldTerm = (Typed.unTypedTerm exported)},-        Core.Field {-          Core.fieldName = (Core.Name "source"),-          Core.fieldTerm = (Typed.unTypedTerm source)}]}))---- | DSL name token for hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclarationExportAllDeclaration :: Typed.TypedName Syntax.ExportAllDeclaration-exportAllDeclarationExportAllDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration")---- | DSL accessor for the exported field of hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclarationExported :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm (Maybe Syntax.Identifier)-exportAllDeclarationExported x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),-        Core.projectionFieldName = (Core.Name "exported")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the source field of hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclarationSource :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.StringLiteral-exportAllDeclarationSource x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),-        Core.projectionFieldName = (Core.Name "source")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the exported field of hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclarationWithExported :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.ExportAllDeclaration-exportAllDeclarationWithExported original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "exported"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "source"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),-              Core.projectionFieldName = (Core.Name "source")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the source field of hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclarationWithSource :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ExportAllDeclaration-exportAllDeclarationWithSource original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "exported"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),-              Core.projectionFieldName = (Core.Name "exported")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "source"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the all variant of hydra.typeScript.syntax.ExportDeclaration-exportDeclarationAll :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.ExportDeclaration-exportDeclarationAll x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "all"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the declaration variant of hydra.typeScript.syntax.ExportDeclaration-exportDeclarationDeclaration :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ExportDeclaration-exportDeclarationDeclaration x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "declaration"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the default variant of hydra.typeScript.syntax.ExportDeclaration-exportDeclarationDefault :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ExportDeclaration-exportDeclarationDefault x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "default"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.ExportDeclaration-exportDeclarationExportDeclaration :: Typed.TypedName Syntax.ExportDeclaration-exportDeclarationExportDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ExportDeclaration")---- | DSL injection for the named variant of hydra.typeScript.syntax.ExportDeclaration-exportDeclarationNamed :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm Syntax.ExportDeclaration-exportDeclarationNamed x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "named"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ExportSpecifier-exportSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier-exportSpecifier local exported =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "local"),-          Core.fieldTerm = (Typed.unTypedTerm local)},-        Core.Field {-          Core.fieldName = (Core.Name "exported"),-          Core.fieldTerm = (Typed.unTypedTerm exported)}]}))---- | DSL name token for hydra.typeScript.syntax.ExportSpecifier-exportSpecifierExportSpecifier :: Typed.TypedName Syntax.ExportSpecifier-exportSpecifierExportSpecifier = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ExportSpecifier")---- | DSL accessor for the exported field of hydra.typeScript.syntax.ExportSpecifier-exportSpecifierExported :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier-exportSpecifierExported x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),-        Core.projectionFieldName = (Core.Name "exported")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the local field of hydra.typeScript.syntax.ExportSpecifier-exportSpecifierLocal :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier-exportSpecifierLocal x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),-        Core.projectionFieldName = (Core.Name "local")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the exported field of hydra.typeScript.syntax.ExportSpecifier-exportSpecifierWithExported :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier-exportSpecifierWithExported original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "local"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),-              Core.projectionFieldName = (Core.Name "local")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "exported"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the local field of hydra.typeScript.syntax.ExportSpecifier-exportSpecifierWithLocal :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier-exportSpecifierWithLocal original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "local"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "exported"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),-              Core.projectionFieldName = (Core.Name "exported")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the array variant of hydra.typeScript.syntax.Expression-expressionArray :: Typed.TypedTerm Syntax.ArrayExpression -> Typed.TypedTerm Syntax.Expression-expressionArray x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "array"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the arrow variant of hydra.typeScript.syntax.Expression-expressionArrow :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.Expression-expressionArrow x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "arrow"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the asExpression variant of hydra.typeScript.syntax.Expression-expressionAsExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression-expressionAsExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "asExpression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the assignment variant of hydra.typeScript.syntax.Expression-expressionAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression-expressionAssignment x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "assignment"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the await variant of hydra.typeScript.syntax.Expression-expressionAwait :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression-expressionAwait x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "await"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the binary variant of hydra.typeScript.syntax.Expression-expressionBinary :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression-expressionBinary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "binary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the call variant of hydra.typeScript.syntax.Expression-expressionCall :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression-expressionCall x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "call"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the conditional variant of hydra.typeScript.syntax.Expression-expressionConditional :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression-expressionConditional x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "conditional"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.Expression-expressionExpression :: Typed.TypedName Syntax.Expression-expressionExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Expression")---- | DSL injection for the function variant of hydra.typeScript.syntax.Expression-expressionFunction :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.Expression-expressionFunction x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "function"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the identifier variant of hydra.typeScript.syntax.Expression-expressionIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Expression-expressionIdentifier x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "identifier"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the literal variant of hydra.typeScript.syntax.Expression-expressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Expression-expressionLiteral x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "literal"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the member variant of hydra.typeScript.syntax.Expression-expressionMember :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression-expressionMember x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "member"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the new variant of hydra.typeScript.syntax.Expression-expressionNew :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression-expressionNew x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "new"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the object variant of hydra.typeScript.syntax.Expression-expressionObject :: Typed.TypedTerm Syntax.ObjectExpression -> Typed.TypedTerm Syntax.Expression-expressionObject x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "object"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the parenthesized variant of hydra.typeScript.syntax.Expression-expressionParenthesized :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression-expressionParenthesized x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "parenthesized"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the sequence variant of hydra.typeScript.syntax.Expression-expressionSequence :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression-expressionSequence x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "sequence"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the spread variant of hydra.typeScript.syntax.Expression-expressionSpread :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.Expression-expressionSpread x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "spread"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the this variant of hydra.typeScript.syntax.Expression-expressionThis :: Typed.TypedTerm Syntax.Expression-expressionThis =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "this"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the unary variant of hydra.typeScript.syntax.Expression-expressionUnary :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression-expressionUnary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "unary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the yield variant of hydra.typeScript.syntax.Expression-expressionYield :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.Expression-expressionYield x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "yield"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.ForInLeft-forInLeftForInLeft :: Typed.TypedName Syntax.ForInLeft-forInLeftForInLeft = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ForInLeft")---- | DSL injection for the pattern variant of hydra.typeScript.syntax.ForInLeft-forInLeftPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.ForInLeft-forInLeftPattern x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInLeft"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "pattern"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the variable variant of hydra.typeScript.syntax.ForInLeft-forInLeftVariable :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.ForInLeft-forInLeftVariable x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInLeft"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variable"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ForInStatement-forInStatement :: Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForInStatement-forInStatement left right body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Typed.unTypedTerm left)},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Typed.unTypedTerm right)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ForInStatement-forInStatementBody :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement-forInStatementBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ForInStatement-forInStatementForInStatement :: Typed.TypedName Syntax.ForInStatement-forInStatementForInStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ForInStatement")---- | DSL accessor for the left field of hydra.typeScript.syntax.ForInStatement-forInStatementLeft :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.ForInLeft-forInStatementLeft x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),-        Core.projectionFieldName = (Core.Name "left")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the right field of hydra.typeScript.syntax.ForInStatement-forInStatementRight :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Expression-forInStatementRight x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),-        Core.projectionFieldName = (Core.Name "right")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.ForInStatement-forInStatementWithBody :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForInStatement-forInStatementWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),-      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 "hydra.typeScript.syntax.ForInStatement"),-              Core.projectionFieldName = (Core.Name "left")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),-              Core.projectionFieldName = (Core.Name "right")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the left field of hydra.typeScript.syntax.ForInStatement-forInStatementWithLeft :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.ForInStatement-forInStatementWithLeft original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),-              Core.projectionFieldName = (Core.Name "right")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the right field of hydra.typeScript.syntax.ForInStatement-forInStatementWithRight :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForInStatement-forInStatementWithRight original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),-      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 "hydra.typeScript.syntax.ForInStatement"),-              Core.projectionFieldName = (Core.Name "left")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the expression variant of hydra.typeScript.syntax.ForInit-forInitExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForInit-forInitExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInit"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.ForInit-forInitForInit :: Typed.TypedName Syntax.ForInit-forInitForInit = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ForInit")---- | DSL injection for the variable variant of hydra.typeScript.syntax.ForInit-forInitVariable :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.ForInit-forInitVariable x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInit"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variable"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ForOfStatement-forOfStatement :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForOfStatement-forOfStatement await left right body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "await"),-          Core.fieldTerm = (Typed.unTypedTerm await)},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Typed.unTypedTerm left)},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Typed.unTypedTerm right)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the await field of hydra.typeScript.syntax.ForOfStatement-forOfStatementAwait :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Bool-forOfStatementAwait x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-        Core.projectionFieldName = (Core.Name "await")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ForOfStatement-forOfStatementBody :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement-forOfStatementBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ForOfStatement-forOfStatementForOfStatement :: Typed.TypedName Syntax.ForOfStatement-forOfStatementForOfStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ForOfStatement")---- | DSL accessor for the left field of hydra.typeScript.syntax.ForOfStatement-forOfStatementLeft :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.ForInLeft-forOfStatementLeft x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-        Core.projectionFieldName = (Core.Name "left")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the right field of hydra.typeScript.syntax.ForOfStatement-forOfStatementRight :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Expression-forOfStatementRight x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-        Core.projectionFieldName = (Core.Name "right")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the await field of hydra.typeScript.syntax.ForOfStatement-forOfStatementWithAwait :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForOfStatement-forOfStatementWithAwait original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "await"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "left")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "right")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the body field of hydra.typeScript.syntax.ForOfStatement-forOfStatementWithBody :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForOfStatement-forOfStatementWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "await"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "await")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "left")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "right")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the left field of hydra.typeScript.syntax.ForOfStatement-forOfStatementWithLeft :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.ForOfStatement-forOfStatementWithLeft original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "await"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "await")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "right")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the right field of hydra.typeScript.syntax.ForOfStatement-forOfStatementWithRight :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForOfStatement-forOfStatementWithRight original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "await"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "await")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "left"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "left")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "right"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.ForStatement-forStatement :: Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForStatement-forStatement init test update body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "init"),-          Core.fieldTerm = (Typed.unTypedTerm init)},-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm test)},-        Core.Field {-          Core.fieldName = (Core.Name "update"),-          Core.fieldTerm = (Typed.unTypedTerm update)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ForStatement-forStatementBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement-forStatementBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ForStatement-forStatementForStatement :: Typed.TypedName Syntax.ForStatement-forStatementForStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ForStatement")---- | DSL accessor for the init field of hydra.typeScript.syntax.ForStatement-forStatementInit :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.ForInit)-forStatementInit x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-        Core.projectionFieldName = (Core.Name "init")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the test field of hydra.typeScript.syntax.ForStatement-forStatementTest :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression)-forStatementTest x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-        Core.projectionFieldName = (Core.Name "test")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the update field of hydra.typeScript.syntax.ForStatement-forStatementUpdate :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression)-forStatementUpdate x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-        Core.projectionFieldName = (Core.Name "update")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.ForStatement-forStatementWithBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForStatement-forStatementWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "init"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "init")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "test")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "update"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "update")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the init field of hydra.typeScript.syntax.ForStatement-forStatementWithInit :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm Syntax.ForStatement-forStatementWithInit original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "init"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "test")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "update"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "update")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.ForStatement-forStatementWithTest :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ForStatement-forStatementWithTest original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "init"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "init")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "update"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "update")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the update field of hydra.typeScript.syntax.ForStatement-forStatementWithUpdate :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ForStatement-forStatementWithUpdate original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "init"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "init")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "test")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "update"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.FunctionDeclaration-functionDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclaration id params body async generator =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm id)},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Typed.unTypedTerm params)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Typed.unTypedTerm async)},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Typed.unTypedTerm generator)}]}))---- | DSL accessor for the async field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationAsync :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool-functionDeclarationAsync x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-        Core.projectionFieldName = (Core.Name "async")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationBody :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.BlockStatement-functionDeclarationBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationFunctionDeclaration :: Typed.TypedName Syntax.FunctionDeclaration-functionDeclarationFunctionDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.FunctionDeclaration")---- | DSL accessor for the generator field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationGenerator :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool-functionDeclarationGenerator x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-        Core.projectionFieldName = (Core.Name "generator")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the id field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationId :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Identifier-functionDeclarationId x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-        Core.projectionFieldName = (Core.Name "id")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the params field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationParams :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm [Syntax.Pattern]-functionDeclarationParams x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-        Core.projectionFieldName = (Core.Name "params")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the async field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationWithAsync :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithAsync original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "params")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "generator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the body field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationWithBody :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "params")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "async")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "generator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithComments :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments-functionDeclarationWithComments body comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsBody :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithCommentsBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the comments field of hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)-functionDeclarationWithCommentsComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsFunctionDeclarationWithComments :: Typed.TypedName Syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsFunctionDeclarationWithComments =-    Typed.TypedName (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments")---- | DSL updater for the body field of hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsWithBody :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the comments field of hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the generator field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationWithGenerator :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithGenerator original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "params")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "async")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the id field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationWithId :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithId original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "params")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "async")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "generator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the params field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationWithParams :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithParams original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "async")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),-              Core.projectionFieldName = (Core.Name "generator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.FunctionExpression-functionExpression :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression-functionExpression id params body async generator =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm id)},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Typed.unTypedTerm params)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Typed.unTypedTerm async)},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Typed.unTypedTerm generator)}]}))---- | DSL accessor for the async field of hydra.typeScript.syntax.FunctionExpression-functionExpressionAsync :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool-functionExpressionAsync x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-        Core.projectionFieldName = (Core.Name "async")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body field of hydra.typeScript.syntax.FunctionExpression-functionExpressionBody :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.BlockStatement-functionExpressionBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.FunctionExpression-functionExpressionFunctionExpression :: Typed.TypedName Syntax.FunctionExpression-functionExpressionFunctionExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.FunctionExpression")---- | DSL accessor for the generator field of hydra.typeScript.syntax.FunctionExpression-functionExpressionGenerator :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool-functionExpressionGenerator x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-        Core.projectionFieldName = (Core.Name "generator")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the id field of hydra.typeScript.syntax.FunctionExpression-functionExpressionId :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm (Maybe Syntax.Identifier)-functionExpressionId x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-        Core.projectionFieldName = (Core.Name "id")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the params field of hydra.typeScript.syntax.FunctionExpression-functionExpressionParams :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm [Syntax.Pattern]-functionExpressionParams x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-        Core.projectionFieldName = (Core.Name "params")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the async field of hydra.typeScript.syntax.FunctionExpression-functionExpressionWithAsync :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression-functionExpressionWithAsync original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "params")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "generator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the body field of hydra.typeScript.syntax.FunctionExpression-functionExpressionWithBody :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.FunctionExpression-functionExpressionWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "params")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "async")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "generator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the generator field of hydra.typeScript.syntax.FunctionExpression-functionExpressionWithGenerator :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression-functionExpressionWithGenerator original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "params")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "async")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the id field of hydra.typeScript.syntax.FunctionExpression-functionExpressionWithId :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.FunctionExpression-functionExpressionWithId original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "params")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "async")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "generator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the params field of hydra.typeScript.syntax.FunctionExpression-functionExpressionWithParams :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.FunctionExpression-functionExpressionWithParams original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "params"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "async"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "async")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "generator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),-              Core.projectionFieldName = (Core.Name "generator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpression :: Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.FunctionTypeExpression-functionTypeExpression typeParameters parameters returnType =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Typed.unTypedTerm typeParameters)},-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Typed.unTypedTerm parameters)},-        Core.Field {-          Core.fieldName = (Core.Name "returnType"),-          Core.fieldTerm = (Typed.unTypedTerm returnType)}]}))---- | DSL name token for hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionFunctionTypeExpression :: Typed.TypedName Syntax.FunctionTypeExpression-functionTypeExpressionFunctionTypeExpression =-    Typed.TypedName (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression")---- | DSL accessor for the parameters field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression]-functionTypeExpressionParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-        Core.projectionFieldName = (Core.Name "parameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the returnType field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionReturnType :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-functionTypeExpressionReturnType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-        Core.projectionFieldName = (Core.Name "returnType")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeParameters field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionTypeParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeParameter]-functionTypeExpressionTypeParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-        Core.projectionFieldName = (Core.Name "typeParameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the parameters field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionWithParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.FunctionTypeExpression-functionTypeExpressionWithParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-              Core.projectionFieldName = (Core.Name "typeParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "returnType"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-              Core.projectionFieldName = (Core.Name "returnType")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the returnType field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionWithReturnType :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.FunctionTypeExpression-functionTypeExpressionWithReturnType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-              Core.projectionFieldName = (Core.Name "typeParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "returnType"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the typeParameters field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionWithTypeParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.FunctionTypeExpression-functionTypeExpressionWithTypeParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "returnType"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),-              Core.projectionFieldName = (Core.Name "returnType")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.typeScript.syntax.Identifier wrapper-identifier :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Identifier-identifier x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.Identifier"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.Identifier-identifierIdentifier :: Typed.TypedName Syntax.Identifier-identifierIdentifier = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Identifier")---- | DSL constructor for hydra.typeScript.syntax.IfStatement-ifStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm (Maybe Syntax.Statement) -> Typed.TypedTerm Syntax.IfStatement-ifStatement test consequent alternate =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm test)},-        Core.Field {-          Core.fieldName = (Core.Name "consequent"),-          Core.fieldTerm = (Typed.unTypedTerm consequent)},-        Core.Field {-          Core.fieldName = (Core.Name "alternate"),-          Core.fieldTerm = (Typed.unTypedTerm alternate)}]}))---- | DSL accessor for the alternate field of hydra.typeScript.syntax.IfStatement-ifStatementAlternate :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.Statement)-ifStatementAlternate x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-        Core.projectionFieldName = (Core.Name "alternate")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the consequent field of hydra.typeScript.syntax.IfStatement-ifStatementConsequent :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement-ifStatementConsequent x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-        Core.projectionFieldName = (Core.Name "consequent")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.IfStatement-ifStatementIfStatement :: Typed.TypedName Syntax.IfStatement-ifStatementIfStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.IfStatement")---- | DSL accessor for the test field of hydra.typeScript.syntax.IfStatement-ifStatementTest :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Expression-ifStatementTest x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-        Core.projectionFieldName = (Core.Name "test")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the alternate field of hydra.typeScript.syntax.IfStatement-ifStatementWithAlternate :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.Statement) -> Typed.TypedTerm Syntax.IfStatement-ifStatementWithAlternate original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-              Core.projectionFieldName = (Core.Name "test")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "consequent"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-              Core.projectionFieldName = (Core.Name "consequent")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "alternate"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the consequent field of hydra.typeScript.syntax.IfStatement-ifStatementWithConsequent :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfStatement-ifStatementWithConsequent original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-              Core.projectionFieldName = (Core.Name "test")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "consequent"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "alternate"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-              Core.projectionFieldName = (Core.Name "alternate")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.IfStatement-ifStatementWithTest :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfStatement-ifStatementWithTest original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "consequent"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-              Core.projectionFieldName = (Core.Name "consequent")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "alternate"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),-              Core.projectionFieldName = (Core.Name "alternate")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the default variant of hydra.typeScript.syntax.ImportClause-importClauseDefault :: Typed.TypedTerm Syntax.ImportDefaultSpecifier -> Typed.TypedTerm Syntax.ImportClause-importClauseDefault x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportClause"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "default"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.ImportClause-importClauseImportClause :: Typed.TypedName Syntax.ImportClause-importClauseImportClause = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ImportClause")---- | DSL injection for the named variant of hydra.typeScript.syntax.ImportClause-importClauseNamed :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.ImportClause-importClauseNamed x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportClause"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "named"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the namespace variant of hydra.typeScript.syntax.ImportClause-importClauseNamespace :: Typed.TypedTerm Syntax.ImportNamespaceSpecifier -> Typed.TypedTerm Syntax.ImportClause-importClauseNamespace x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportClause"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "namespace"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ImportDeclaration-importDeclaration :: Typed.TypedTerm [Syntax.ImportClause] -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ImportDeclaration-importDeclaration specifiers source =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "specifiers"),-          Core.fieldTerm = (Typed.unTypedTerm specifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "source"),-          Core.fieldTerm = (Typed.unTypedTerm source)}]}))---- | DSL name token for hydra.typeScript.syntax.ImportDeclaration-importDeclarationImportDeclaration :: Typed.TypedName Syntax.ImportDeclaration-importDeclarationImportDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ImportDeclaration")---- | DSL accessor for the source field of hydra.typeScript.syntax.ImportDeclaration-importDeclarationSource :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.StringLiteral-importDeclarationSource x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),-        Core.projectionFieldName = (Core.Name "source")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the specifiers field of hydra.typeScript.syntax.ImportDeclaration-importDeclarationSpecifiers :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm [Syntax.ImportClause]-importDeclarationSpecifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),-        Core.projectionFieldName = (Core.Name "specifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the source field of hydra.typeScript.syntax.ImportDeclaration-importDeclarationWithSource :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ImportDeclaration-importDeclarationWithSource original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "specifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),-              Core.projectionFieldName = (Core.Name "specifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "source"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the specifiers field of hydra.typeScript.syntax.ImportDeclaration-importDeclarationWithSpecifiers :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm [Syntax.ImportClause] -> Typed.TypedTerm Syntax.ImportDeclaration-importDeclarationWithSpecifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "specifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "source"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),-              Core.projectionFieldName = (Core.Name "source")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.typeScript.syntax.ImportDefaultSpecifier wrapper-importDefaultSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportDefaultSpecifier-importDefaultSpecifier x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.ImportDefaultSpecifier"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ImportDefaultSpecifier-importDefaultSpecifierImportDefaultSpecifier :: Typed.TypedName Syntax.ImportDefaultSpecifier-importDefaultSpecifierImportDefaultSpecifier =-    Typed.TypedName (Core.Name "hydra.typeScript.syntax.ImportDefaultSpecifier")---- | DSL constructor for the hydra.typeScript.syntax.ImportNamespaceSpecifier wrapper-importNamespaceSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportNamespaceSpecifier-importNamespaceSpecifier x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.ImportNamespaceSpecifier"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ImportNamespaceSpecifier-importNamespaceSpecifierImportNamespaceSpecifier :: Typed.TypedName Syntax.ImportNamespaceSpecifier-importNamespaceSpecifierImportNamespaceSpecifier =-    Typed.TypedName (Core.Name "hydra.typeScript.syntax.ImportNamespaceSpecifier")---- | DSL constructor for hydra.typeScript.syntax.ImportSpecifier-importSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier-importSpecifier imported local =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "imported"),-          Core.fieldTerm = (Typed.unTypedTerm imported)},-        Core.Field {-          Core.fieldName = (Core.Name "local"),-          Core.fieldTerm = (Typed.unTypedTerm local)}]}))---- | DSL name token for hydra.typeScript.syntax.ImportSpecifier-importSpecifierImportSpecifier :: Typed.TypedName Syntax.ImportSpecifier-importSpecifierImportSpecifier = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ImportSpecifier")---- | DSL accessor for the imported field of hydra.typeScript.syntax.ImportSpecifier-importSpecifierImported :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier-importSpecifierImported x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),-        Core.projectionFieldName = (Core.Name "imported")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the local field of hydra.typeScript.syntax.ImportSpecifier-importSpecifierLocal :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier-importSpecifierLocal x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),-        Core.projectionFieldName = (Core.Name "local")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the imported field of hydra.typeScript.syntax.ImportSpecifier-importSpecifierWithImported :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier-importSpecifierWithImported original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "imported"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "local"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),-              Core.projectionFieldName = (Core.Name "local")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the local field of hydra.typeScript.syntax.ImportSpecifier-importSpecifierWithLocal :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier-importSpecifierWithLocal original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "imported"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),-              Core.projectionFieldName = (Core.Name "imported")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "local"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm [Syntax.PropertySignature] -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclaration name typeParameters extends members =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Typed.unTypedTerm typeParameters)},-        Core.Field {-          Core.fieldName = (Core.Name "extends"),-          Core.fieldTerm = (Typed.unTypedTerm extends)},-        Core.Field {-          Core.fieldName = (Core.Name "members"),-          Core.fieldTerm = (Typed.unTypedTerm members)}]}))---- | DSL accessor for the extends field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationExtends :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeExpression]-interfaceDeclarationExtends x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "extends")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationInterfaceDeclaration :: Typed.TypedName Syntax.InterfaceDeclaration-interfaceDeclarationInterfaceDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration")---- | DSL accessor for the members field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationMembers :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.PropertySignature]-interfaceDeclarationMembers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "members")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationName :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.Identifier-interfaceDeclarationName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeParameters field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationTypeParameters :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]-interfaceDeclarationTypeParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "typeParameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the extends field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationWithExtends :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclarationWithExtends original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "typeParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "extends"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "members"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "members")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the members field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationWithMembers :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.PropertySignature] -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclarationWithMembers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "typeParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "extends"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "members"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationWithName :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclarationWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "typeParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "extends"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "members"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "members")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the typeParameters field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationWithTypeParameters :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclarationWithTypeParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "extends"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "members"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "members")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.LabeledStatement-labeledStatement :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement-labeledStatement label body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "label"),-          Core.fieldTerm = (Typed.unTypedTerm label)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.LabeledStatement-labeledStatementBody :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement-labeledStatementBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the label field of hydra.typeScript.syntax.LabeledStatement-labeledStatementLabel :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier-labeledStatementLabel x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),-        Core.projectionFieldName = (Core.Name "label")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.LabeledStatement-labeledStatementLabeledStatement :: Typed.TypedName Syntax.LabeledStatement-labeledStatementLabeledStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.LabeledStatement")---- | DSL updater for the body field of hydra.typeScript.syntax.LabeledStatement-labeledStatementWithBody :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement-labeledStatementWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "label"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),-              Core.projectionFieldName = (Core.Name "label")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the label field of hydra.typeScript.syntax.LabeledStatement-labeledStatementWithLabel :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.LabeledStatement-labeledStatementWithLabel original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "label"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the bigInt variant of hydra.typeScript.syntax.Literal-literalBigInt :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.Literal-literalBigInt x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "bigInt"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the boolean variant of hydra.typeScript.syntax.Literal-literalBoolean :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Literal-literalBoolean x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "boolean"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.Literal-literalLiteral :: Typed.TypedName Syntax.Literal-literalLiteral = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Literal")---- | DSL injection for the null variant of hydra.typeScript.syntax.Literal-literalNull :: Typed.TypedTerm Syntax.Literal-literalNull =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "null"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the number variant of hydra.typeScript.syntax.Literal-literalNumber :: Typed.TypedTerm Syntax.NumericLiteral -> Typed.TypedTerm Syntax.Literal-literalNumber x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "number"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the string variant of hydra.typeScript.syntax.Literal-literalString :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.Literal-literalString x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "string"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the template variant of hydra.typeScript.syntax.Literal-literalTemplate :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm Syntax.Literal-literalTemplate x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "template"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the undefined variant of hydra.typeScript.syntax.Literal-literalUndefined :: Typed.TypedTerm Syntax.Literal-literalUndefined =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "undefined"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.typeScript.syntax.MemberExpression-memberExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression-memberExpression object property computed optional =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "object"),-          Core.fieldTerm = (Typed.unTypedTerm object)},-        Core.Field {-          Core.fieldName = (Core.Name "property"),-          Core.fieldTerm = (Typed.unTypedTerm property)},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Typed.unTypedTerm computed)},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Typed.unTypedTerm optional)}]}))---- | DSL accessor for the computed field of hydra.typeScript.syntax.MemberExpression-memberExpressionComputed :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool-memberExpressionComputed x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-        Core.projectionFieldName = (Core.Name "computed")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.MemberExpression-memberExpressionMemberExpression :: Typed.TypedName Syntax.MemberExpression-memberExpressionMemberExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.MemberExpression")---- | DSL accessor for the object field of hydra.typeScript.syntax.MemberExpression-memberExpressionObject :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression-memberExpressionObject x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-        Core.projectionFieldName = (Core.Name "object")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the optional field of hydra.typeScript.syntax.MemberExpression-memberExpressionOptional :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool-memberExpressionOptional x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-        Core.projectionFieldName = (Core.Name "optional")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the property field of hydra.typeScript.syntax.MemberExpression-memberExpressionProperty :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression-memberExpressionProperty x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-        Core.projectionFieldName = (Core.Name "property")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the computed field of hydra.typeScript.syntax.MemberExpression-memberExpressionWithComputed :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression-memberExpressionWithComputed original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "object"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "object")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "property"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "property")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "optional")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the object field of hydra.typeScript.syntax.MemberExpression-memberExpressionWithObject :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MemberExpression-memberExpressionWithObject original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "object"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "property"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "property")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "computed")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "optional")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the optional field of hydra.typeScript.syntax.MemberExpression-memberExpressionWithOptional :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression-memberExpressionWithOptional original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "object"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "object")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "property"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "property")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "computed")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the property field of hydra.typeScript.syntax.MemberExpression-memberExpressionWithProperty :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MemberExpression-memberExpressionWithProperty original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "object"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "object")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "property"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "computed")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),-              Core.projectionFieldName = (Core.Name "optional")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.MethodDefinition-methodDefinition :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.MethodKind -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinition key value kind computed static =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Typed.unTypedTerm key)},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm value)},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Typed.unTypedTerm kind)},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Typed.unTypedTerm computed)},-        Core.Field {-          Core.fieldName = (Core.Name "static"),-          Core.fieldTerm = (Typed.unTypedTerm static)}]}))---- | DSL accessor for the computed field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionComputed :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool-methodDefinitionComputed x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-        Core.projectionFieldName = (Core.Name "computed")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the key field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionKey :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.Expression-methodDefinitionKey x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-        Core.projectionFieldName = (Core.Name "key")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the kind field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionKind :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.MethodKind-methodDefinitionKind x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-        Core.projectionFieldName = (Core.Name "kind")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.MethodDefinition-methodDefinitionMethodDefinition :: Typed.TypedName Syntax.MethodDefinition-methodDefinitionMethodDefinition = Typed.TypedName (Core.Name "hydra.typeScript.syntax.MethodDefinition")---- | DSL accessor for the static field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionStatic :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool-methodDefinitionStatic x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-        Core.projectionFieldName = (Core.Name "static")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the value field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionValue :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.FunctionExpression-methodDefinitionValue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-        Core.projectionFieldName = (Core.Name "value")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the computed field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionWithComputed :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinitionWithComputed original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "key")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "kind")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "static"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "static")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the key field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionWithKey :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinitionWithKey original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "kind")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "computed")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "static"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "static")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the kind field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionWithKind :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.MethodKind -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinitionWithKind original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "key")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "computed")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "static"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "static")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the static field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionWithStatic :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinitionWithStatic original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "key")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "kind")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "computed")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "static"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the value field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionWithValue :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinitionWithValue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "key")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "kind")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "computed")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "static"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),-              Core.projectionFieldName = (Core.Name "static")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the constructor variant of hydra.typeScript.syntax.MethodKind-methodKindConstructor :: Typed.TypedTerm Syntax.MethodKind-methodKindConstructor =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodKind"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "constructor"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the get variant of hydra.typeScript.syntax.MethodKind-methodKindGet :: Typed.TypedTerm Syntax.MethodKind-methodKindGet =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodKind"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "get"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the method variant of hydra.typeScript.syntax.MethodKind-methodKindMethod :: Typed.TypedTerm Syntax.MethodKind-methodKindMethod =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodKind"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "method"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.MethodKind-methodKindMethodKind :: Typed.TypedName Syntax.MethodKind-methodKindMethodKind = Typed.TypedName (Core.Name "hydra.typeScript.syntax.MethodKind")---- | DSL injection for the set variant of hydra.typeScript.syntax.MethodKind-methodKindSet :: Typed.TypedTerm Syntax.MethodKind-methodKindSet =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodKind"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "set"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the export variant of hydra.typeScript.syntax.ModuleItem-moduleItemExport :: Typed.TypedTerm Syntax.ExportDeclaration -> Typed.TypedTerm Syntax.ModuleItem-moduleItemExport x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItem"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "export"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the import variant of hydra.typeScript.syntax.ModuleItem-moduleItemImport :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.ModuleItem-moduleItemImport x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItem"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "import"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the interface variant of hydra.typeScript.syntax.ModuleItem-moduleItemInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.ModuleItem-moduleItemInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItem"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "interface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.ModuleItem-moduleItemModuleItem :: Typed.TypedName Syntax.ModuleItem-moduleItemModuleItem = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ModuleItem")---- | DSL injection for the statement variant of hydra.typeScript.syntax.ModuleItem-moduleItemStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ModuleItem-moduleItemStatement x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItem"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "statement"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the typeAlias variant of hydra.typeScript.syntax.ModuleItem-moduleItemTypeAlias :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.ModuleItem-moduleItemTypeAlias x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItem"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "typeAlias"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithComments :: Typed.TypedTerm Syntax.ModuleItem -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ModuleItemWithComments-moduleItemWithComments body comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithCommentsBody :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm Syntax.ModuleItem-moduleItemWithCommentsBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the comments field of hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithCommentsComments :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)-moduleItemWithCommentsComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithCommentsModuleItemWithComments :: Typed.TypedName Syntax.ModuleItemWithComments-moduleItemWithCommentsModuleItemWithComments =-    Typed.TypedName (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments")---- | DSL updater for the body field of hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithCommentsWithBody :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm Syntax.ModuleItem -> Typed.TypedTerm Syntax.ModuleItemWithComments-moduleItemWithCommentsWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the comments field of hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithCommentsWithComments :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ModuleItemWithComments-moduleItemWithCommentsWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.NamedExport-namedExport :: Typed.TypedTerm [Syntax.ExportSpecifier] -> Typed.TypedTerm (Maybe Syntax.StringLiteral) -> Typed.TypedTerm Syntax.NamedExport-namedExport specifiers source =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "specifiers"),-          Core.fieldTerm = (Typed.unTypedTerm specifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "source"),-          Core.fieldTerm = (Typed.unTypedTerm source)}]}))---- | DSL name token for hydra.typeScript.syntax.NamedExport-namedExportNamedExport :: Typed.TypedName Syntax.NamedExport-namedExportNamedExport = Typed.TypedName (Core.Name "hydra.typeScript.syntax.NamedExport")---- | DSL accessor for the source field of hydra.typeScript.syntax.NamedExport-namedExportSource :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm (Maybe Syntax.StringLiteral)-namedExportSource x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),-        Core.projectionFieldName = (Core.Name "source")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the specifiers field of hydra.typeScript.syntax.NamedExport-namedExportSpecifiers :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm [Syntax.ExportSpecifier]-namedExportSpecifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),-        Core.projectionFieldName = (Core.Name "specifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the source field of hydra.typeScript.syntax.NamedExport-namedExportWithSource :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm (Maybe Syntax.StringLiteral) -> Typed.TypedTerm Syntax.NamedExport-namedExportWithSource original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "specifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),-              Core.projectionFieldName = (Core.Name "specifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "source"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the specifiers field of hydra.typeScript.syntax.NamedExport-namedExportWithSpecifiers :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm [Syntax.ExportSpecifier] -> Typed.TypedTerm Syntax.NamedExport-namedExportWithSpecifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "specifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "source"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),-              Core.projectionFieldName = (Core.Name "source")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the float variant of hydra.typeScript.syntax.NumericLiteral-numericLiteralFloat :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.NumericLiteral-numericLiteralFloat x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.NumericLiteral"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "float"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the integer variant of hydra.typeScript.syntax.NumericLiteral-numericLiteralInteger :: Typed.TypedTerm I.Int64 -> Typed.TypedTerm Syntax.NumericLiteral-numericLiteralInteger x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.NumericLiteral"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "integer"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.NumericLiteral-numericLiteralNumericLiteral :: Typed.TypedName Syntax.NumericLiteral-numericLiteralNumericLiteral = Typed.TypedName (Core.Name "hydra.typeScript.syntax.NumericLiteral")---- | DSL constructor for hydra.typeScript.syntax.ObjectPattern-objectPattern :: Typed.TypedTerm [Syntax.ObjectPatternProperty] -> Typed.TypedTerm Syntax.ObjectPattern-objectPattern properties =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ObjectPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "properties"),-          Core.fieldTerm = (Typed.unTypedTerm properties)}]}))---- | DSL name token for hydra.typeScript.syntax.ObjectPattern-objectPatternObjectPattern :: Typed.TypedName Syntax.ObjectPattern-objectPatternObjectPattern = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ObjectPattern")---- | DSL accessor for the properties field of hydra.typeScript.syntax.ObjectPattern-objectPatternProperties :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm [Syntax.ObjectPatternProperty]-objectPatternProperties x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ObjectPattern"),-        Core.projectionFieldName = (Core.Name "properties")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ObjectPatternProperty-objectPatternPropertyObjectPatternProperty :: Typed.TypedName Syntax.ObjectPatternProperty-objectPatternPropertyObjectPatternProperty = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ObjectPatternProperty")---- | DSL injection for the property variant of hydra.typeScript.syntax.ObjectPatternProperty-objectPatternPropertyProperty :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.ObjectPatternProperty-objectPatternPropertyProperty x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ObjectPatternProperty"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "property"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the rest variant of hydra.typeScript.syntax.ObjectPatternProperty-objectPatternPropertyRest :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.ObjectPatternProperty-objectPatternPropertyRest x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ObjectPatternProperty"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "rest"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL updater for the properties field of hydra.typeScript.syntax.ObjectPattern-objectPatternWithProperties :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm [Syntax.ObjectPatternProperty] -> Typed.TypedTerm Syntax.ObjectPattern-objectPatternWithProperties original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ObjectPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "properties"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpression :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.ParameterizedTypeExpression-parameterizedTypeExpression base arguments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "base"),-          Core.fieldTerm = (Typed.unTypedTerm base)},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm arguments)}]}))---- | DSL accessor for the arguments field of hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpressionArguments :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression]-parameterizedTypeExpressionArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),-        Core.projectionFieldName = (Core.Name "arguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the base field of hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpressionBase :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-parameterizedTypeExpressionBase x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),-        Core.projectionFieldName = (Core.Name "base")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpressionParameterizedTypeExpression :: Typed.TypedName Syntax.ParameterizedTypeExpression-parameterizedTypeExpressionParameterizedTypeExpression =-    Typed.TypedName (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression")---- | DSL updater for the arguments field of hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpressionWithArguments :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.ParameterizedTypeExpression-parameterizedTypeExpressionWithArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),-      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 "hydra.typeScript.syntax.ParameterizedTypeExpression"),-              Core.projectionFieldName = (Core.Name "base")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the base field of hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpressionWithBase :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.ParameterizedTypeExpression-parameterizedTypeExpressionWithBase original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "base"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the array variant of hydra.typeScript.syntax.Pattern-patternArray :: Typed.TypedTerm Syntax.ArrayPattern -> Typed.TypedTerm Syntax.Pattern-patternArray x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "array"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the assignment variant of hydra.typeScript.syntax.Pattern-patternAssignment :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern-patternAssignment x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "assignment"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the identifier variant of hydra.typeScript.syntax.Pattern-patternIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Pattern-patternIdentifier x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "identifier"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the object variant of hydra.typeScript.syntax.Pattern-patternObject :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm Syntax.Pattern-patternObject x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "object"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.Pattern-patternPattern :: Typed.TypedName Syntax.Pattern-patternPattern = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Pattern")---- | DSL injection for the rest variant of hydra.typeScript.syntax.Pattern-patternRest :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.Pattern-patternRest x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "rest"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the typed variant of hydra.typeScript.syntax.Pattern-patternTyped :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern-patternTyped x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "typed"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.Program-program :: Typed.TypedTerm [Syntax.ModuleItem] -> Typed.TypedTerm Syntax.SourceType -> Typed.TypedTerm Syntax.Program-program body sourceType =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Program"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)},-        Core.Field {-          Core.fieldName = (Core.Name "sourceType"),-          Core.fieldTerm = (Typed.unTypedTerm sourceType)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.Program-programBody :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm [Syntax.ModuleItem]-programBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Program"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.Program-programProgram :: Typed.TypedName Syntax.Program-programProgram = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Program")---- | DSL accessor for the sourceType field of hydra.typeScript.syntax.Program-programSourceType :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm Syntax.SourceType-programSourceType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Program"),-        Core.projectionFieldName = (Core.Name "sourceType")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.Program-programWithBody :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm [Syntax.ModuleItem] -> Typed.TypedTerm Syntax.Program-programWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Program"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "sourceType"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Program"),-              Core.projectionFieldName = (Core.Name "sourceType")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the sourceType field of hydra.typeScript.syntax.Program-programWithSourceType :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm Syntax.SourceType -> Typed.TypedTerm Syntax.Program-programWithSourceType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Program"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Program"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "sourceType"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.Property-property :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.PropertyKind -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property-property key value kind computed shorthand =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Typed.unTypedTerm key)},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm value)},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Typed.unTypedTerm kind)},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Typed.unTypedTerm computed)},-        Core.Field {-          Core.fieldName = (Core.Name "shorthand"),-          Core.fieldTerm = (Typed.unTypedTerm shorthand)}]}))---- | DSL accessor for the computed field of hydra.typeScript.syntax.Property-propertyComputed :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool-propertyComputed x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-        Core.projectionFieldName = (Core.Name "computed")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the key field of hydra.typeScript.syntax.Property-propertyKey :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression-propertyKey x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-        Core.projectionFieldName = (Core.Name "key")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the kind field of hydra.typeScript.syntax.Property-propertyKind :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.PropertyKind-propertyKind x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-        Core.projectionFieldName = (Core.Name "kind")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL injection for the get variant of hydra.typeScript.syntax.PropertyKind-propertyKindGet :: Typed.TypedTerm Syntax.PropertyKind-propertyKindGet =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertyKind"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "get"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the init variant of hydra.typeScript.syntax.PropertyKind-propertyKindInit :: Typed.TypedTerm Syntax.PropertyKind-propertyKindInit =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertyKind"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "init"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.PropertyKind-propertyKindPropertyKind :: Typed.TypedName Syntax.PropertyKind-propertyKindPropertyKind = Typed.TypedName (Core.Name "hydra.typeScript.syntax.PropertyKind")---- | DSL injection for the set variant of hydra.typeScript.syntax.PropertyKind-propertyKindSet :: Typed.TypedTerm Syntax.PropertyKind-propertyKindSet =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertyKind"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "set"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.Property-propertyProperty :: Typed.TypedName Syntax.Property-propertyProperty = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Property")---- | DSL accessor for the shorthand field of hydra.typeScript.syntax.Property-propertyShorthand :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool-propertyShorthand x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-        Core.projectionFieldName = (Core.Name "shorthand")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for hydra.typeScript.syntax.PropertySignature-propertySignature :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.PropertySignature-propertySignature name type_ optional readonly comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Typed.unTypedTerm optional)},-        Core.Field {-          Core.fieldName = (Core.Name "readonly"),-          Core.fieldTerm = (Typed.unTypedTerm readonly)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the comments field of hydra.typeScript.syntax.PropertySignature-propertySignatureComments :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)-propertySignatureComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.typeScript.syntax.PropertySignature-propertySignatureName :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.Identifier-propertySignatureName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the optional field of hydra.typeScript.syntax.PropertySignature-propertySignatureOptional :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool-propertySignatureOptional x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-        Core.projectionFieldName = (Core.Name "optional")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.PropertySignature-propertySignaturePropertySignature :: Typed.TypedName Syntax.PropertySignature-propertySignaturePropertySignature = Typed.TypedName (Core.Name "hydra.typeScript.syntax.PropertySignature")---- | DSL accessor for the readonly field of hydra.typeScript.syntax.PropertySignature-propertySignatureReadonly :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool-propertySignatureReadonly x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-        Core.projectionFieldName = (Core.Name "readonly")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.typeScript.syntax.PropertySignature-propertySignatureType :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.TypeExpression-propertySignatureType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the comments field of hydra.typeScript.syntax.PropertySignature-propertySignatureWithComments :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.PropertySignature-propertySignatureWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "optional")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "readonly"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "readonly")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.typeScript.syntax.PropertySignature-propertySignatureWithName :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.PropertySignature-propertySignatureWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "optional")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "readonly"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "readonly")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the optional field of hydra.typeScript.syntax.PropertySignature-propertySignatureWithOptional :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.PropertySignature-propertySignatureWithOptional original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "readonly"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "readonly")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the readonly field of hydra.typeScript.syntax.PropertySignature-propertySignatureWithReadonly :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.PropertySignature-propertySignatureWithReadonly original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "optional")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "readonly"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.typeScript.syntax.PropertySignature-propertySignatureWithType :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.PropertySignature-propertySignatureWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "optional"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "optional")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "readonly"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "readonly")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL accessor for the value field of hydra.typeScript.syntax.Property-propertyValue :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression-propertyValue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-        Core.projectionFieldName = (Core.Name "value")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the computed field of hydra.typeScript.syntax.Property-propertyWithComputed :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property-propertyWithComputed original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "key")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "kind")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "shorthand"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "shorthand")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the key field of hydra.typeScript.syntax.Property-propertyWithKey :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Property-propertyWithKey original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "kind")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "computed")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "shorthand"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "shorthand")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the kind field of hydra.typeScript.syntax.Property-propertyWithKind :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.PropertyKind -> Typed.TypedTerm Syntax.Property-propertyWithKind original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "key")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "computed")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "shorthand"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "shorthand")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the shorthand field of hydra.typeScript.syntax.Property-propertyWithShorthand :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property-propertyWithShorthand original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "key")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "kind")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "computed")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "shorthand"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the value field of hydra.typeScript.syntax.Property-propertyWithValue :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Property-propertyWithValue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "key")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "kind")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "computed"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "computed")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "shorthand"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),-              Core.projectionFieldName = (Core.Name "shorthand")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.typeScript.syntax.RestElement wrapper-restElement :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.RestElement-restElement x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.RestElement"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.RestElement-restElementRestElement :: Typed.TypedName Syntax.RestElement-restElementRestElement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.RestElement")---- | DSL injection for the module variant of hydra.typeScript.syntax.SourceType-sourceTypeModule :: Typed.TypedTerm Syntax.SourceType-sourceTypeModule =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.SourceType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "module"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the script variant of hydra.typeScript.syntax.SourceType-sourceTypeScript :: Typed.TypedTerm Syntax.SourceType-sourceTypeScript =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.SourceType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "script"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.SourceType-sourceTypeSourceType :: Typed.TypedName Syntax.SourceType-sourceTypeSourceType = Typed.TypedName (Core.Name "hydra.typeScript.syntax.SourceType")---- | DSL constructor for the hydra.typeScript.syntax.SpreadElement wrapper-spreadElement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SpreadElement-spreadElement x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.SpreadElement"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.SpreadElement-spreadElementSpreadElement :: Typed.TypedName Syntax.SpreadElement-spreadElementSpreadElement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.SpreadElement")---- | DSL injection for the block variant of hydra.typeScript.syntax.Statement-statementBlock :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.Statement-statementBlock x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "block"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the break variant of hydra.typeScript.syntax.Statement-statementBreak :: Typed.TypedTerm Syntax.BreakStatement -> Typed.TypedTerm Syntax.Statement-statementBreak x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "break"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the classDeclaration variant of hydra.typeScript.syntax.Statement-statementClassDeclaration :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Statement-statementClassDeclaration x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "classDeclaration"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the continue variant of hydra.typeScript.syntax.Statement-statementContinue :: Typed.TypedTerm Syntax.ContinueStatement -> Typed.TypedTerm Syntax.Statement-statementContinue x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "continue"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the debugger variant of hydra.typeScript.syntax.Statement-statementDebugger :: Typed.TypedTerm Syntax.Statement-statementDebugger =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "debugger"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the doWhile variant of hydra.typeScript.syntax.Statement-statementDoWhile :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement-statementDoWhile x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "doWhile"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the empty variant of hydra.typeScript.syntax.Statement-statementEmpty :: Typed.TypedTerm Syntax.Statement-statementEmpty =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "empty"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the expression variant of hydra.typeScript.syntax.Statement-statementExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement-statementExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the for variant of hydra.typeScript.syntax.Statement-statementFor :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement-statementFor x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "for"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the forIn variant of hydra.typeScript.syntax.Statement-statementForIn :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement-statementForIn x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "forIn"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the forOf variant of hydra.typeScript.syntax.Statement-statementForOf :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement-statementForOf x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "forOf"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the functionDeclaration variant of hydra.typeScript.syntax.Statement-statementFunctionDeclaration :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Statement-statementFunctionDeclaration x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "functionDeclaration"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the if variant of hydra.typeScript.syntax.Statement-statementIf :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement-statementIf x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "if"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the labeled variant of hydra.typeScript.syntax.Statement-statementLabeled :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement-statementLabeled x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "labeled"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the return variant of hydra.typeScript.syntax.Statement-statementReturn :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm Syntax.Statement-statementReturn x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "return"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.Statement-statementStatement :: Typed.TypedName Syntax.Statement-statementStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Statement")---- | DSL injection for the switch variant of hydra.typeScript.syntax.Statement-statementSwitch :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Statement-statementSwitch x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "switch"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the throw variant of hydra.typeScript.syntax.Statement-statementThrow :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.Statement-statementThrow x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "throw"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the try variant of hydra.typeScript.syntax.Statement-statementTry :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.Statement-statementTry x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "try"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the variableDeclaration variant of hydra.typeScript.syntax.Statement-statementVariableDeclaration :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.Statement-statementVariableDeclaration x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variableDeclaration"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the while variant of hydra.typeScript.syntax.Statement-statementWhile :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement-statementWhile x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "while"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.StatementWithComments-statementWithComments :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.StatementWithComments-statementWithComments body comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.StatementWithComments-statementWithCommentsBody :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm Syntax.Statement-statementWithCommentsBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the comments field of hydra.typeScript.syntax.StatementWithComments-statementWithCommentsComments :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)-statementWithCommentsComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.StatementWithComments-statementWithCommentsStatementWithComments :: Typed.TypedName Syntax.StatementWithComments-statementWithCommentsStatementWithComments = Typed.TypedName (Core.Name "hydra.typeScript.syntax.StatementWithComments")---- | DSL updater for the body field of hydra.typeScript.syntax.StatementWithComments-statementWithCommentsWithBody :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.StatementWithComments-statementWithCommentsWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the comments field of hydra.typeScript.syntax.StatementWithComments-statementWithCommentsWithComments :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.StatementWithComments-statementWithCommentsWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.StringLiteral-stringLiteral :: Typed.TypedTerm String -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.StringLiteral-stringLiteral value singleQuote =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm value)},-        Core.Field {-          Core.fieldName = (Core.Name "singleQuote"),-          Core.fieldTerm = (Typed.unTypedTerm singleQuote)}]}))---- | DSL accessor for the singleQuote field of hydra.typeScript.syntax.StringLiteral-stringLiteralSingleQuote :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Bool-stringLiteralSingleQuote x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),-        Core.projectionFieldName = (Core.Name "singleQuote")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.StringLiteral-stringLiteralStringLiteral :: Typed.TypedName Syntax.StringLiteral-stringLiteralStringLiteral = Typed.TypedName (Core.Name "hydra.typeScript.syntax.StringLiteral")---- | DSL accessor for the value field of hydra.typeScript.syntax.StringLiteral-stringLiteralValue :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm String-stringLiteralValue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),-        Core.projectionFieldName = (Core.Name "value")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the singleQuote field of hydra.typeScript.syntax.StringLiteral-stringLiteralWithSingleQuote :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.StringLiteral-stringLiteralWithSingleQuote original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "singleQuote"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the value field of hydra.typeScript.syntax.StringLiteral-stringLiteralWithValue :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.StringLiteral-stringLiteralWithValue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "singleQuote"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),-              Core.projectionFieldName = (Core.Name "singleQuote")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.SwitchCase-switchCase :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.SwitchCase-switchCase test consequent =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm test)},-        Core.Field {-          Core.fieldName = (Core.Name "consequent"),-          Core.fieldTerm = (Typed.unTypedTerm consequent)}]}))---- | DSL accessor for the consequent field of hydra.typeScript.syntax.SwitchCase-switchCaseConsequent :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm [Syntax.Statement]-switchCaseConsequent x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),-        Core.projectionFieldName = (Core.Name "consequent")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.SwitchCase-switchCaseSwitchCase :: Typed.TypedName Syntax.SwitchCase-switchCaseSwitchCase = Typed.TypedName (Core.Name "hydra.typeScript.syntax.SwitchCase")---- | DSL accessor for the test field of hydra.typeScript.syntax.SwitchCase-switchCaseTest :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm (Maybe Syntax.Expression)-switchCaseTest x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),-        Core.projectionFieldName = (Core.Name "test")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the consequent field of hydra.typeScript.syntax.SwitchCase-switchCaseWithConsequent :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.SwitchCase-switchCaseWithConsequent original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),-              Core.projectionFieldName = (Core.Name "test")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "consequent"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.SwitchCase-switchCaseWithTest :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SwitchCase-switchCaseWithTest original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "consequent"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),-              Core.projectionFieldName = (Core.Name "consequent")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.SwitchStatement-switchStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.SwitchCase] -> Typed.TypedTerm Syntax.SwitchStatement-switchStatement discriminant cases =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "discriminant"),-          Core.fieldTerm = (Typed.unTypedTerm discriminant)},-        Core.Field {-          Core.fieldName = (Core.Name "cases"),-          Core.fieldTerm = (Typed.unTypedTerm cases)}]}))---- | DSL accessor for the cases field of hydra.typeScript.syntax.SwitchStatement-switchStatementCases :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm [Syntax.SwitchCase]-switchStatementCases x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),-        Core.projectionFieldName = (Core.Name "cases")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the discriminant field of hydra.typeScript.syntax.SwitchStatement-switchStatementDiscriminant :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression-switchStatementDiscriminant x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),-        Core.projectionFieldName = (Core.Name "discriminant")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.SwitchStatement-switchStatementSwitchStatement :: Typed.TypedName Syntax.SwitchStatement-switchStatementSwitchStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.SwitchStatement")---- | DSL updater for the cases field of hydra.typeScript.syntax.SwitchStatement-switchStatementWithCases :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm [Syntax.SwitchCase] -> Typed.TypedTerm Syntax.SwitchStatement-switchStatementWithCases original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "discriminant"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),-              Core.projectionFieldName = (Core.Name "discriminant")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "cases"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the discriminant field of hydra.typeScript.syntax.SwitchStatement-switchStatementWithDiscriminant :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchStatement-switchStatementWithDiscriminant original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "discriminant"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "cases"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),-              Core.projectionFieldName = (Core.Name "cases")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.TemplateElement-templateElement :: Typed.TypedTerm String -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.TemplateElement-templateElement value tail =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm value)},-        Core.Field {-          Core.fieldName = (Core.Name "tail"),-          Core.fieldTerm = (Typed.unTypedTerm tail)}]}))---- | DSL accessor for the tail field of hydra.typeScript.syntax.TemplateElement-templateElementTail :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm Bool-templateElementTail x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),-        Core.projectionFieldName = (Core.Name "tail")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TemplateElement-templateElementTemplateElement :: Typed.TypedName Syntax.TemplateElement-templateElementTemplateElement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TemplateElement")---- | DSL accessor for the value field of hydra.typeScript.syntax.TemplateElement-templateElementValue :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm String-templateElementValue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),-        Core.projectionFieldName = (Core.Name "value")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the tail field of hydra.typeScript.syntax.TemplateElement-templateElementWithTail :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.TemplateElement-templateElementWithTail original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "tail"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the value field of hydra.typeScript.syntax.TemplateElement-templateElementWithValue :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.TemplateElement-templateElementWithValue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "tail"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),-              Core.projectionFieldName = (Core.Name "tail")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.TemplateLiteral-templateLiteral :: Typed.TypedTerm [Syntax.TemplateElement] -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.TemplateLiteral-templateLiteral quasis expressions =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "quasis"),-          Core.fieldTerm = (Typed.unTypedTerm quasis)},-        Core.Field {-          Core.fieldName = (Core.Name "expressions"),-          Core.fieldTerm = (Typed.unTypedTerm expressions)}]}))---- | DSL accessor for the expressions field of hydra.typeScript.syntax.TemplateLiteral-templateLiteralExpressions :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.Expression]-templateLiteralExpressions x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),-        Core.projectionFieldName = (Core.Name "expressions")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the quasis field of hydra.typeScript.syntax.TemplateLiteral-templateLiteralQuasis :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.TemplateElement]-templateLiteralQuasis x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),-        Core.projectionFieldName = (Core.Name "quasis")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TemplateLiteral-templateLiteralTemplateLiteral :: Typed.TypedName Syntax.TemplateLiteral-templateLiteralTemplateLiteral = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TemplateLiteral")---- | DSL updater for the expressions field of hydra.typeScript.syntax.TemplateLiteral-templateLiteralWithExpressions :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.TemplateLiteral-templateLiteralWithExpressions original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "quasis"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),-              Core.projectionFieldName = (Core.Name "quasis")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expressions"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the quasis field of hydra.typeScript.syntax.TemplateLiteral-templateLiteralWithQuasis :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.TemplateElement] -> Typed.TypedTerm Syntax.TemplateLiteral-templateLiteralWithQuasis original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "quasis"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "expressions"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),-              Core.projectionFieldName = (Core.Name "expressions")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.typeScript.syntax.ThrowStatement wrapper-throwStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ThrowStatement-throwStatement x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.ThrowStatement"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ThrowStatement-throwStatementThrowStatement :: Typed.TypedName Syntax.ThrowStatement-throwStatementThrowStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ThrowStatement")---- | DSL constructor for hydra.typeScript.syntax.TryStatement-tryStatement :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause) -> Typed.TypedTerm (Maybe Syntax.BlockStatement) -> Typed.TypedTerm Syntax.TryStatement-tryStatement block handler finalizer =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm block)},-        Core.Field {-          Core.fieldName = (Core.Name "handler"),-          Core.fieldTerm = (Typed.unTypedTerm handler)},-        Core.Field {-          Core.fieldName = (Core.Name "finalizer"),-          Core.fieldTerm = (Typed.unTypedTerm finalizer)}]}))---- | DSL accessor for the block field of hydra.typeScript.syntax.TryStatement-tryStatementBlock :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.BlockStatement-tryStatementBlock x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-        Core.projectionFieldName = (Core.Name "block")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the finalizer field of hydra.typeScript.syntax.TryStatement-tryStatementFinalizer :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.BlockStatement)-tryStatementFinalizer x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-        Core.projectionFieldName = (Core.Name "finalizer")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the handler field of hydra.typeScript.syntax.TryStatement-tryStatementHandler :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause)-tryStatementHandler x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-        Core.projectionFieldName = (Core.Name "handler")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TryStatement-tryStatementTryStatement :: Typed.TypedName Syntax.TryStatement-tryStatementTryStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TryStatement")---- | DSL updater for the block field of hydra.typeScript.syntax.TryStatement-tryStatementWithBlock :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.TryStatement-tryStatementWithBlock original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "handler"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-              Core.projectionFieldName = (Core.Name "handler")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "finalizer"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-              Core.projectionFieldName = (Core.Name "finalizer")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the finalizer field of hydra.typeScript.syntax.TryStatement-tryStatementWithFinalizer :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.BlockStatement) -> Typed.TypedTerm Syntax.TryStatement-tryStatementWithFinalizer original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "handler"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-              Core.projectionFieldName = (Core.Name "handler")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "finalizer"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the handler field of hydra.typeScript.syntax.TryStatement-tryStatementWithHandler :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause) -> Typed.TypedTerm Syntax.TryStatement-tryStatementWithHandler original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "handler"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "finalizer"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),-              Core.projectionFieldName = (Core.Name "finalizer")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAliasDeclaration-typeAliasDeclaration name typeParameters type_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Typed.unTypedTerm typeParameters)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)}]}))---- | DSL accessor for the name field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationName :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.Identifier-typeAliasDeclarationName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationType :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.TypeExpression-typeAliasDeclarationType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationTypeAliasDeclaration :: Typed.TypedName Syntax.TypeAliasDeclaration-typeAliasDeclarationTypeAliasDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration")---- | DSL accessor for the typeParameters field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationTypeParameters :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]-typeAliasDeclarationTypeParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-        Core.projectionFieldName = (Core.Name "typeParameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the name field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationWithName :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeAliasDeclaration-typeAliasDeclarationWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-              Core.projectionFieldName = (Core.Name "typeParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationWithType :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAliasDeclaration-typeAliasDeclarationWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-              Core.projectionFieldName = (Core.Name "typeParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the typeParameters field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationWithTypeParameters :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.TypeAliasDeclaration-typeAliasDeclarationWithTypeParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeParameters"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.typeScript.syntax.TypeAnnotation wrapper-typeAnnotation :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAnnotation-typeAnnotation x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.TypeAnnotation"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TypeAnnotation-typeAnnotationTypeAnnotation :: Typed.TypedName Syntax.TypeAnnotation-typeAnnotationTypeAnnotation = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TypeAnnotation")---- | DSL injection for the any variant of hydra.typeScript.syntax.TypeExpression-typeExpressionAny :: Typed.TypedTerm Syntax.TypeExpression-typeExpressionAny =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "any"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the array variant of hydra.typeScript.syntax.TypeExpression-typeExpressionArray :: Typed.TypedTerm Syntax.ArrayTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionArray x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "array"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the function variant of hydra.typeScript.syntax.TypeExpression-typeExpressionFunction :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionFunction x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "function"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the identifier variant of hydra.typeScript.syntax.TypeExpression-typeExpressionIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionIdentifier x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "identifier"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the intersection variant of hydra.typeScript.syntax.TypeExpression-typeExpressionIntersection :: Typed.TypedTerm Syntax.IntersectionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionIntersection x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "intersection"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the literal variant of hydra.typeScript.syntax.TypeExpression-typeExpressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionLiteral x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "literal"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the never variant of hydra.typeScript.syntax.TypeExpression-typeExpressionNever :: Typed.TypedTerm Syntax.TypeExpression-typeExpressionNever =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "never"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the object variant of hydra.typeScript.syntax.TypeExpression-typeExpressionObject :: Typed.TypedTerm Syntax.ObjectTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionObject x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "object"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the optional variant of hydra.typeScript.syntax.TypeExpression-typeExpressionOptional :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionOptional x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "optional"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the parameterized variant of hydra.typeScript.syntax.TypeExpression-typeExpressionParameterized :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionParameterized x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "parameterized"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the readonly variant of hydra.typeScript.syntax.TypeExpression-typeExpressionReadonly :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionReadonly x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "readonly"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the tuple variant of hydra.typeScript.syntax.TypeExpression-typeExpressionTuple :: Typed.TypedTerm Syntax.TupleTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionTuple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "tuple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.TypeExpression-typeExpressionTypeExpression :: Typed.TypedName Syntax.TypeExpression-typeExpressionTypeExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TypeExpression")---- | DSL injection for the union variant of hydra.typeScript.syntax.TypeExpression-typeExpressionUnion :: Typed.TypedTerm Syntax.UnionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionUnion x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "union"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the unknown variant of hydra.typeScript.syntax.TypeExpression-typeExpressionUnknown :: Typed.TypedTerm Syntax.TypeExpression-typeExpressionUnknown =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "unknown"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the void variant of hydra.typeScript.syntax.TypeExpression-typeExpressionVoid :: Typed.TypedTerm Syntax.TypeExpression-typeExpressionVoid =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "void"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.typeScript.syntax.TypeParameter-typeParameter :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter-typeParameter name constraint default_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "constraint"),-          Core.fieldTerm = (Typed.unTypedTerm constraint)},-        Core.Field {-          Core.fieldName = (Core.Name "default"),-          Core.fieldTerm = (Typed.unTypedTerm default_)}]}))---- | DSL accessor for the constraint field of hydra.typeScript.syntax.TypeParameter-typeParameterConstraint :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression)-typeParameterConstraint x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-        Core.projectionFieldName = (Core.Name "constraint")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the default field of hydra.typeScript.syntax.TypeParameter-typeParameterDefault :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression)-typeParameterDefault x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-        Core.projectionFieldName = (Core.Name "default")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.typeScript.syntax.TypeParameter-typeParameterName :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.Identifier-typeParameterName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TypeParameter-typeParameterTypeParameter :: Typed.TypedName Syntax.TypeParameter-typeParameterTypeParameter = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TypeParameter")---- | DSL updater for the constraint field of hydra.typeScript.syntax.TypeParameter-typeParameterWithConstraint :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter-typeParameterWithConstraint original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "constraint"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "default"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "default")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the default field of hydra.typeScript.syntax.TypeParameter-typeParameterWithDefault :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter-typeParameterWithDefault original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "constraint"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "constraint")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "default"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.typeScript.syntax.TypeParameter-typeParameterWithName :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeParameter-typeParameterWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "constraint"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "constraint")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "default"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "default")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.TypedPattern-typedPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypedPattern-typedPattern pattern type_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Typed.unTypedTerm pattern)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)}]}))---- | DSL accessor for the pattern field of hydra.typeScript.syntax.TypedPattern-typedPatternPattern :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern-typedPatternPattern x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),-        Core.projectionFieldName = (Core.Name "pattern")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.typeScript.syntax.TypedPattern-typedPatternType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.TypeExpression-typedPatternType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TypedPattern-typedPatternTypedPattern :: Typed.TypedName Syntax.TypedPattern-typedPatternTypedPattern = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TypedPattern")---- | DSL updater for the pattern field of hydra.typeScript.syntax.TypedPattern-typedPatternWithPattern :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.TypedPattern-typedPatternWithPattern original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.typeScript.syntax.TypedPattern-typedPatternWithType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypedPattern-typedPatternWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),-              Core.projectionFieldName = (Core.Name "pattern")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL accessor for the body of hydra.typeScript.syntax.ArrayTypeExpression-unArrayTypeExpression :: Typed.TypedTerm Syntax.ArrayTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-unArrayTypeExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.ArrayTypeExpression")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.Identifier-unIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm String-unIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.Identifier")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.ImportDefaultSpecifier-unImportDefaultSpecifier :: Typed.TypedTerm Syntax.ImportDefaultSpecifier -> Typed.TypedTerm Syntax.Identifier-unImportDefaultSpecifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.ImportDefaultSpecifier")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.ImportNamespaceSpecifier-unImportNamespaceSpecifier :: Typed.TypedTerm Syntax.ImportNamespaceSpecifier -> Typed.TypedTerm Syntax.Identifier-unImportNamespaceSpecifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.ImportNamespaceSpecifier")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.RestElement-unRestElement :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.Pattern-unRestElement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.RestElement")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.SpreadElement-unSpreadElement :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.Expression-unSpreadElement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.SpreadElement")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.ThrowStatement-unThrowStatement :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.Expression-unThrowStatement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.ThrowStatement")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.TypeAnnotation-unTypeAnnotation :: Typed.TypedTerm Syntax.TypeAnnotation -> Typed.TypedTerm Syntax.TypeExpression-unTypeAnnotation x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.TypeAnnotation")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for hydra.typeScript.syntax.UnaryExpression-unaryExpression :: Typed.TypedTerm Syntax.UnaryOperator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpression operator argument prefix =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm operator)},-        Core.Field {-          Core.fieldName = (Core.Name "argument"),-          Core.fieldTerm = (Typed.unTypedTerm argument)},-        Core.Field {-          Core.fieldName = (Core.Name "prefix"),-          Core.fieldTerm = (Typed.unTypedTerm prefix)}]}))---- | DSL accessor for the argument field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionArgument :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression-unaryExpressionArgument x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-        Core.projectionFieldName = (Core.Name "argument")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the operator field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionOperator :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryOperator-unaryExpressionOperator x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-        Core.projectionFieldName = (Core.Name "operator")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the prefix field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionPrefix :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Bool-unaryExpressionPrefix x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-        Core.projectionFieldName = (Core.Name "prefix")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.UnaryExpression-unaryExpressionUnaryExpression :: Typed.TypedName Syntax.UnaryExpression-unaryExpressionUnaryExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.UnaryExpression")---- | DSL updater for the argument field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionWithArgument :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpressionWithArgument original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-              Core.projectionFieldName = (Core.Name "operator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "argument"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "prefix"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-              Core.projectionFieldName = (Core.Name "prefix")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the operator field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionWithOperator :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryOperator -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpressionWithOperator original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "argument"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-              Core.projectionFieldName = (Core.Name "argument")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "prefix"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-              Core.projectionFieldName = (Core.Name "prefix")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the prefix field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionWithPrefix :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpressionWithPrefix original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "operator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-              Core.projectionFieldName = (Core.Name "operator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "argument"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),-              Core.projectionFieldName = (Core.Name "argument")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "prefix"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the bitwiseNot variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorBitwiseNot :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorBitwiseNot =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "bitwiseNot"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the decrement variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorDecrement :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorDecrement =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "decrement"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the delete variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorDelete :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorDelete =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "delete"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the increment variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorIncrement :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorIncrement =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "increment"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the negate variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorNegate :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorNegate =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "negate"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the not variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorNot :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorNot =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "not"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the plus variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorPlus :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorPlus =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "plus"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the typeof variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorTypeof :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorTypeof =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "typeof"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.UnaryOperator-unaryOperatorUnaryOperator :: Typed.TypedName Syntax.UnaryOperator-unaryOperatorUnaryOperator = Typed.TypedName (Core.Name "hydra.typeScript.syntax.UnaryOperator")---- | DSL injection for the void variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorVoid :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorVoid =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "void"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.typeScript.syntax.VariableDeclaration-variableDeclaration :: Typed.TypedTerm Syntax.VariableKind -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.VariableDeclaration-variableDeclaration kind declarations =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Typed.unTypedTerm kind)},-        Core.Field {-          Core.fieldName = (Core.Name "declarations"),-          Core.fieldTerm = (Typed.unTypedTerm declarations)}]}))---- | DSL accessor for the declarations field of hydra.typeScript.syntax.VariableDeclaration-variableDeclarationDeclarations :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator]-variableDeclarationDeclarations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),-        Core.projectionFieldName = (Core.Name "declarations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the kind field of hydra.typeScript.syntax.VariableDeclaration-variableDeclarationKind :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.VariableKind-variableDeclarationKind x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),-        Core.projectionFieldName = (Core.Name "kind")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.VariableDeclaration-variableDeclarationVariableDeclaration :: Typed.TypedName Syntax.VariableDeclaration-variableDeclarationVariableDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.VariableDeclaration")---- | DSL updater for the declarations field of hydra.typeScript.syntax.VariableDeclaration-variableDeclarationWithDeclarations :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.VariableDeclaration-variableDeclarationWithDeclarations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),-      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 "hydra.typeScript.syntax.VariableDeclaration"),-              Core.projectionFieldName = (Core.Name "kind")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "declarations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the kind field of hydra.typeScript.syntax.VariableDeclaration-variableDeclarationWithKind :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.VariableKind -> Typed.TypedTerm Syntax.VariableDeclaration-variableDeclarationWithKind original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "kind"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "declarations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),-              Core.projectionFieldName = (Core.Name "declarations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.VariableDeclarator-variableDeclarator :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.VariableDeclarator-variableDeclarator id init =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm id)},-        Core.Field {-          Core.fieldName = (Core.Name "init"),-          Core.fieldTerm = (Typed.unTypedTerm init)}]}))---- | DSL accessor for the id field of hydra.typeScript.syntax.VariableDeclarator-variableDeclaratorId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.Pattern-variableDeclaratorId x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),-        Core.projectionFieldName = (Core.Name "id")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the init field of hydra.typeScript.syntax.VariableDeclarator-variableDeclaratorInit :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.Expression)-variableDeclaratorInit x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),-        Core.projectionFieldName = (Core.Name "init")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.VariableDeclarator-variableDeclaratorVariableDeclarator :: Typed.TypedName Syntax.VariableDeclarator-variableDeclaratorVariableDeclarator = Typed.TypedName (Core.Name "hydra.typeScript.syntax.VariableDeclarator")---- | DSL updater for the id field of hydra.typeScript.syntax.VariableDeclarator-variableDeclaratorWithId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.VariableDeclarator-variableDeclaratorWithId original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "init"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),-              Core.projectionFieldName = (Core.Name "init")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the init field of hydra.typeScript.syntax.VariableDeclarator-variableDeclaratorWithInit :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.VariableDeclarator-variableDeclaratorWithInit original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "init"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the const variant of hydra.typeScript.syntax.VariableKind-variableKindConst :: Typed.TypedTerm Syntax.VariableKind-variableKindConst =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableKind"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "const"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the let variant of hydra.typeScript.syntax.VariableKind-variableKindLet :: Typed.TypedTerm Syntax.VariableKind-variableKindLet =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableKind"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "let"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the var variant of hydra.typeScript.syntax.VariableKind-variableKindVar :: Typed.TypedTerm Syntax.VariableKind-variableKindVar =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableKind"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "var"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.VariableKind-variableKindVariableKind :: Typed.TypedName Syntax.VariableKind-variableKindVariableKind = Typed.TypedName (Core.Name "hydra.typeScript.syntax.VariableKind")---- | DSL constructor for hydra.typeScript.syntax.WhileStatement-whileStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.WhileStatement-whileStatement test body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm test)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.WhileStatement-whileStatementBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement-whileStatementBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the test field of hydra.typeScript.syntax.WhileStatement-whileStatementTest :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Expression-whileStatementTest x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),-        Core.projectionFieldName = (Core.Name "test")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.WhileStatement-whileStatementWhileStatement :: Typed.TypedName Syntax.WhileStatement-whileStatementWhileStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.WhileStatement")---- | DSL updater for the body field of hydra.typeScript.syntax.WhileStatement-whileStatementWithBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.WhileStatement-whileStatementWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),-              Core.projectionFieldName = (Core.Name "test")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.WhileStatement-whileStatementWithTest :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.WhileStatement-whileStatementWithTest original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "test"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
− src/main/haskell/Hydra/Overlay/Haskell/Dsl/TypeScript/Helpers.hs
@@ -1,623 +0,0 @@--- | A DSL for constructing TypeScript syntax trees in Haskell.-module Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers where--import Hydra.TypeScript.Syntax-import qualified Data.Int as I----- * Identifiers---- | Create an identifier--- Example: ident "foo"-ident :: String -> Identifier-ident = Identifier---- | Create a qualified name from a list of strings--- Example: qualifiedName ["module", "submodule", "name"]-qualifiedName :: [String] -> QualifiedName-qualifiedName = fmap Identifier----- * Literals---- | Create a string literal with double quotes--- Example: stringLit "hello"-stringLit :: String -> Literal-stringLit s = LiteralString $ StringLiteral s False---- | Create a string literal with single quotes--- Example: stringLitSingle "hello"-stringLitSingle :: String -> Literal-stringLitSingle s = LiteralString $ StringLiteral s True---- | Create an integer literal--- Example: intLit 42-intLit :: I.Int64 -> Literal-intLit = LiteralNumber . NumericLiteralInteger---- | Create a floating-point literal--- Example: floatLit 3.14-floatLit :: Double -> Literal-floatLit = LiteralNumber . NumericLiteralFloat---- | Create a boolean literal--- Example: boolLit True-boolLit :: Bool -> Literal-boolLit = LiteralBoolean---- | The null literal-nullLit :: Literal-nullLit = LiteralNull---- | The undefined literal-undefinedLit :: Literal-undefinedLit = LiteralUndefined---- | Create a BigInt literal--- Example: bigIntLit 123-bigIntLit :: Integer -> Literal-bigIntLit = LiteralBigInt----- * Expressions---- | Create an identifier expression--- Example: identExpr "foo"-identExpr :: String -> Expression-identExpr = ExpressionIdentifier . ident---- | Create a literal expression--- Example: litExpr (stringLit "hello")-litExpr :: Literal -> Expression-litExpr = ExpressionLiteral---- | Create a string expression--- Example: stringExpr "hello"-stringExpr :: String -> Expression-stringExpr = litExpr . stringLit---- | Create an integer expression--- Example: intExpr 42-intExpr :: I.Int64 -> Expression-intExpr = litExpr . intLit---- | Create a floating-point expression--- Example: floatExpr 3.14-floatExpr :: Double -> Expression-floatExpr = litExpr . floatLit---- | Create a boolean expression--- Example: boolExpr True-boolExpr :: Bool -> Expression-boolExpr = litExpr . boolLit---- | The null expression-nullExpr :: Expression-nullExpr = litExpr nullLit---- | The undefined expression-undefinedExpr :: Expression-undefinedExpr = litExpr undefinedLit---- | Create an array expression--- Example: arrayExpr [intExpr 1, intExpr 2, intExpr 3]-arrayExpr :: [Expression] -> Expression-arrayExpr = ExpressionArray . fmap ArrayElementExpression---- | Create an object expression from key-value pairs--- Example: objectExpr [("name", stringExpr "John"), ("age", intExpr 30)]-objectExpr :: [(String, Expression)] -> Expression-objectExpr pairs = ExpressionObject $ fmap toProperty pairs-  where-    toProperty (k, v) = Property (identExpr k) v PropertyKindInit False False---- | Create a function call expression--- Example: callExpr (identExpr "foo") [intExpr 1, intExpr 2]-callExpr :: Expression -> [Expression] -> Expression-callExpr callee args = ExpressionCall $ CallExpression callee args False---- | Create an optional chaining call expression--- Example: optionalCallExpr (identExpr "foo") [intExpr 1]-optionalCallExpr :: Expression -> [Expression] -> Expression-optionalCallExpr callee args = ExpressionCall $ CallExpression callee args True---- | Create a member access expression (obj.prop)--- Example: memberExpr (identExpr "obj") "prop"-memberExpr :: Expression -> String -> Expression-memberExpr obj prop = ExpressionMember $ MemberExpression obj (identExpr prop) False False---- | Create a computed member access expression (obj[expr])--- Example: computedMemberExpr (identExpr "arr") (intExpr 0)-computedMemberExpr :: Expression -> Expression -> Expression-computedMemberExpr obj prop = ExpressionMember $ MemberExpression obj prop True False---- | Create an optional chaining member expression (obj?.prop)--- Example: optionalMemberExpr (identExpr "obj") "prop"-optionalMemberExpr :: Expression -> String -> Expression-optionalMemberExpr obj prop = ExpressionMember $ MemberExpression obj (identExpr prop) False True---- | Create a conditional (ternary) expression--- Example: condExpr (identExpr "x") (intExpr 1) (intExpr 0)-condExpr :: Expression -> Expression -> Expression -> Expression-condExpr test consequent alternate = ExpressionConditional $-  ConditionalExpression test consequent alternate---- | Create a binary expression--- Example: binaryExpr BinaryOperatorAdd (intExpr 1) (intExpr 2)-binaryExpr :: BinaryOperator -> Expression -> Expression -> Expression-binaryExpr op left right = ExpressionBinary $ BinaryExpression op left right---- | Create an addition expression--- Example: addExpr (intExpr 1) (intExpr 2)-addExpr :: Expression -> Expression -> Expression-addExpr = binaryExpr BinaryOperatorAdd---- | Create a subtraction expression--- Example: subExpr (intExpr 5) (intExpr 3)-subExpr :: Expression -> Expression -> Expression-subExpr = binaryExpr BinaryOperatorSubtract---- | Create a multiplication expression--- Example: mulExpr (intExpr 3) (intExpr 4)-mulExpr :: Expression -> Expression -> Expression-mulExpr = binaryExpr BinaryOperatorMultiply---- | Create a division expression--- Example: divExpr (intExpr 10) (intExpr 2)-divExpr :: Expression -> Expression -> Expression-divExpr = binaryExpr BinaryOperatorDivide---- | Create a strict equality expression (===)--- Example: eqExpr (identExpr "x") (intExpr 1)-eqExpr :: Expression -> Expression -> Expression-eqExpr = binaryExpr BinaryOperatorStrictEqual---- | Create a strict inequality expression (!==)--- Example: neqExpr (identExpr "x") (intExpr 1)-neqExpr :: Expression -> Expression -> Expression-neqExpr = binaryExpr BinaryOperatorStrictNotEqual---- | Create a logical AND expression--- Example: andExpr (identExpr "a") (identExpr "b")-andExpr :: Expression -> Expression -> Expression-andExpr = binaryExpr BinaryOperatorAnd---- | Create a logical OR expression--- Example: orExpr (identExpr "a") (identExpr "b")-orExpr :: Expression -> Expression -> Expression-orExpr = binaryExpr BinaryOperatorOr---- | Create a unary expression--- Example: unaryExpr UnaryOperatorNot (identExpr "x")-unaryExpr :: UnaryOperator -> Expression -> Expression-unaryExpr op arg = ExpressionUnary $ UnaryExpression op arg True---- | Create a logical NOT expression--- Example: notExpr (identExpr "x")-notExpr :: Expression -> Expression-notExpr = unaryExpr UnaryOperatorNot---- | Create a negation expression--- Example: negateExpr (identExpr "x")-negateExpr :: Expression -> Expression-negateExpr = unaryExpr UnaryOperatorNegate---- | Create an assignment expression--- Example: assignExpr (identPattern "x") (intExpr 42)-assignExpr :: Pattern -> Expression -> Expression-assignExpr left right = ExpressionAssignment $-  AssignmentExpression AssignmentOperatorAssign left right---- | The 'this' expression-thisExpr :: Expression-thisExpr = ExpressionThis---- | Create a 'new' expression--- Example: newExpr (identExpr "Date") []-newExpr :: Expression -> [Expression] -> Expression-newExpr callee args = ExpressionNew $ CallExpression callee args False---- | Create an await expression--- Example: awaitExpr (callExpr (identExpr "fetch") [stringExpr "url"])-awaitExpr :: Expression -> Expression-awaitExpr = ExpressionAwait---- | Create a yield expression--- Example: yieldExpr (Just (intExpr 1))-yieldExpr :: Maybe Expression -> Expression-yieldExpr = ExpressionYield---- | Create a spread expression--- Example: spreadExpr (identExpr "arr")-spreadExpr :: Expression -> Expression-spreadExpr = ExpressionSpread . SpreadElement---- | Create a parenthesized expression--- Example: parenExpr (addExpr (intExpr 1) (intExpr 2))-parenExpr :: Expression -> Expression-parenExpr = ExpressionParenthesized----- * Arrow Functions---- | Create an arrow function with an expression body--- Example: arrowExpr ["x", "y"] (addExpr (identExpr "x") (identExpr "y"))-arrowExpr :: [String] -> Expression -> Expression-arrowExpr params body = ExpressionArrow $ ArrowFunctionExpression-  (fmap identPattern params)-  (ArrowFunctionBodyExpression body)-  False---- | Create an async arrow function with an expression body--- Example: asyncArrowExpr ["x"] (awaitExpr (callExpr (identExpr "fetch") [identExpr "x"]))-asyncArrowExpr :: [String] -> Expression -> Expression-asyncArrowExpr params body = ExpressionArrow $ ArrowFunctionExpression-  (fmap identPattern params)-  (ArrowFunctionBodyExpression body)-  True---- | Create an arrow function with a block body--- Example: arrowBlockExpr ["x"] [returnStmt (Just (identExpr "x"))]-arrowBlockExpr :: [String] -> [Statement] -> Expression-arrowBlockExpr params body = ExpressionArrow $ ArrowFunctionExpression-  (fmap identPattern params)-  (ArrowFunctionBodyBlock body)-  False----- * Patterns---- | Create an identifier pattern--- Example: identPattern "x"-identPattern :: String -> Pattern-identPattern = PatternIdentifier . ident---- | Create an object destructuring pattern--- Example: objectPattern [identPattern "a", identPattern "b"]-objectPattern :: [Pattern] -> Pattern-objectPattern ps = PatternObject $ ObjectPattern $ fmap toProperty ps-  where-    toProperty p = case p of-      PatternIdentifier i -> ObjectPatternPropertyProperty $-        Property (ExpressionIdentifier i) (ExpressionIdentifier i) PropertyKindInit False True-      _ -> ObjectPatternPropertyProperty $-        Property nullExpr (patternToExpr p) PropertyKindInit False False-    patternToExpr (PatternIdentifier i) = ExpressionIdentifier i-    patternToExpr _ = nullExpr---- | Create an array destructuring pattern--- Example: arrayPattern [Just (identPattern "a"), Nothing, Just (identPattern "b")]-arrayPattern :: [Maybe Pattern] -> Pattern-arrayPattern = PatternArray---- | Create a rest pattern--- Example: restPattern "args"-restPattern :: String -> Pattern-restPattern = PatternRest . RestElement . identPattern---- | Create a pattern with a default value--- Example: defaultPattern "x" (intExpr 0)-defaultPattern :: String -> Expression -> Pattern-defaultPattern name def = PatternAssignment $-  AssignmentPattern (identPattern name) def----- * Statements---- | Create an expression statement--- Example: exprStmt (callExpr (identExpr "console.log") [stringExpr "hello"])-exprStmt :: Expression -> Statement-exprStmt = StatementExpression---- | Create a block statement--- Example: blockStmt [exprStmt (intExpr 1), exprStmt (intExpr 2)]-blockStmt :: [Statement] -> Statement-blockStmt = StatementBlock---- | Create a return statement--- Example: returnStmt (Just (intExpr 42))-returnStmt :: Maybe Expression -> Statement-returnStmt = StatementReturn---- | Create a throw statement--- Example: throwStmt (newExpr (identExpr "Error") [stringExpr "oops"])-throwStmt :: Expression -> Statement-throwStmt = StatementThrow . ThrowStatement---- | Create a break statement--- Example: breakStmt Nothing-breakStmt :: Maybe String -> Statement-breakStmt = StatementBreak . fmap ident---- | Create a continue statement--- Example: continueStmt Nothing-continueStmt :: Maybe String -> Statement-continueStmt = StatementContinue . fmap ident---- | Create an if statement--- Example: ifStmt (identExpr "x") (returnStmt (Just (intExpr 1))) Nothing-ifStmt :: Expression -> Statement -> Maybe Statement -> Statement-ifStmt test consequent alternate = StatementIf $ IfStatement test consequent alternate---- | Create a while statement--- Example: whileStmt (boolExpr True) (blockStmt [breakStmt Nothing])-whileStmt :: Expression -> Statement -> Statement-whileStmt test body = StatementWhile $ WhileStatement test body---- | Create a for statement--- Example: forStmt (Just (ForInitVariable (constDecl "i" (intExpr 0)))) (Just (binaryExpr BinaryOperatorLessThan (identExpr "i") (intExpr 10))) (Just (unaryExpr UnaryOperatorIncrement (identExpr "i"))) (blockStmt [])-forStmt :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> Statement-forStmt init test update body = StatementFor $ ForStatement init test update body---- | Create a for-of statement--- Example: forOfStmt False (ForInLeftVariable (constDecl "item" Nothing)) (identExpr "items") (blockStmt [])-forOfStmt :: Bool -> ForInLeft -> Expression -> Statement -> Statement-forOfStmt await left right body = StatementForOf $ ForOfStatement await left right body---- | Create a try statement--- Example: tryStmt [exprStmt (callExpr (identExpr "riskyOp") [])] (Just (catchClause (Just (identPattern "e")) [throwStmt (identExpr "e")])) Nothing-tryStmt :: [Statement] -> Maybe CatchClause -> Maybe [Statement] -> Statement-tryStmt block handler finalizer = StatementTry $ TryStatement block handler finalizer---- | Create a catch clause--- Example: catchClause (Just (identPattern "e")) [throwStmt (identExpr "e")]-catchClause :: Maybe Pattern -> [Statement] -> CatchClause-catchClause = CatchClause---- | Create a switch statement--- Example: switchStmt (identExpr "x") [switchCase (Just (intExpr 1)) [returnStmt (Just (stringExpr "one"))], switchCase Nothing [returnStmt (Just (stringExpr "default"))]]-switchStmt :: Expression -> [SwitchCase] -> Statement-switchStmt discriminant cases = StatementSwitch $ SwitchStatement discriminant cases---- | Create a switch case--- Example: switchCase (Just (intExpr 1)) [returnStmt (Just (stringExpr "one"))]-switchCase :: Maybe Expression -> [Statement] -> SwitchCase-switchCase = SwitchCase---- | An empty statement-emptyStmt :: Statement-emptyStmt = StatementEmpty---- | A debugger statement-debuggerStmt :: Statement-debuggerStmt = StatementDebugger----- * Variable Declarations---- | Create a const declaration--- Example: constDecl "x" (Just (intExpr 42))-constDecl :: String -> Maybe Expression -> VariableDeclaration-constDecl name init = VariableDeclaration VariableKindConst-  [VariableDeclarator (identPattern name) init]---- | Create a let declaration--- Example: letDecl "x" (Just (intExpr 42))-letDecl :: String -> Maybe Expression -> VariableDeclaration-letDecl name init = VariableDeclaration VariableKindLet-  [VariableDeclarator (identPattern name) init]---- | Create a var declaration--- Example: varDecl "x" (Just (intExpr 42))-varDecl :: String -> Maybe Expression -> VariableDeclaration-varDecl name init = VariableDeclaration VariableKindVar-  [VariableDeclarator (identPattern name) init]---- | Create a variable declaration statement--- Example: varDeclStmt (constDecl "x" (Just (intExpr 42)))-varDeclStmt :: VariableDeclaration -> Statement-varDeclStmt = StatementVariableDeclaration----- * Function Declarations---- | Create a function declaration--- Example: funcDecl "add" ["x", "y"] [returnStmt (Just (addExpr (identExpr "x") (identExpr "y")))]-funcDecl :: String -> [String] -> [Statement] -> FunctionDeclaration-funcDecl name params body = FunctionDeclaration-  (ident name)-  (fmap identPattern params)-  body-  False-  False---- | Create an async function declaration--- Example: asyncFuncDecl "fetchData" ["url"] [returnStmt (Just (awaitExpr (callExpr (identExpr "fetch") [identExpr "url"])))]-asyncFuncDecl :: String -> [String] -> [Statement] -> FunctionDeclaration-asyncFuncDecl name params body = FunctionDeclaration-  (ident name)-  (fmap identPattern params)-  body-  True-  False---- | Create a function declaration statement--- Example: funcDeclStmt (funcDecl "add" ["x", "y"] [returnStmt (Just (addExpr (identExpr "x") (identExpr "y")))])-funcDeclStmt :: FunctionDeclaration -> Statement-funcDeclStmt = StatementFunctionDeclaration----- * Class Declarations---- | Create a class declaration--- Example: classDecl "Person" Nothing [methodDef "greet" [] [returnStmt (Just (stringExpr "hello"))]]-classDecl :: String -> Maybe Expression -> [MethodDefinition] -> ClassDeclaration-classDecl name superClass body = ClassDeclaration (ident name) superClass body---- | Create a method definition--- Example: methodDef "greet" [] [returnStmt (Just (stringExpr "hello"))]-methodDef :: String -> [String] -> [Statement] -> MethodDefinition-methodDef name params body = MethodDefinition-  (identExpr name)-  (FunctionExpression Nothing (fmap identPattern params) body False False)-  MethodKindMethod-  False-  False---- | Create a constructor definition--- Example: constructorDef ["name"] [exprStmt (assignExpr (PatternIdentifier (ident "this.name")) (identExpr "name"))]-constructorDef :: [String] -> [Statement] -> MethodDefinition-constructorDef params body = MethodDefinition-  (identExpr "constructor")-  (FunctionExpression Nothing (fmap identPattern params) body False False)-  MethodKindConstructor-  False-  False---- | Create a static method definition--- Example: staticMethodDef "create" [] [returnStmt (Just (newExpr (identExpr "Person") []))]-staticMethodDef :: String -> [String] -> [Statement] -> MethodDefinition-staticMethodDef name params body = MethodDefinition-  (identExpr name)-  (FunctionExpression Nothing (fmap identPattern params) body False False)-  MethodKindMethod-  False-  True---- | Create a class declaration statement--- Example: classDeclStmt (classDecl "Person" Nothing [])-classDeclStmt :: ClassDeclaration -> Statement-classDeclStmt = StatementClassDeclaration----- * Module Items---- | Create a statement module item--- Example: stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))-stmtItem :: Statement -> ModuleItem-stmtItem = ModuleItemStatement---- | Create an import declaration--- Example: importDecl [importNamed "foo" "foo"] "./module.js"-importDecl :: [ImportClause] -> String -> ImportDeclaration-importDecl specifiers source = ImportDeclaration specifiers (StringLiteral source False)---- | Create a named import--- Example: importNamed "foo" "bar"  -- import { foo as bar }-importNamed :: String -> String -> ImportClause-importNamed imported local = ImportClauseNamed $-  ImportSpecifier (ident imported) (ident local)---- | Create a default import--- Example: importDefault "foo"  -- import foo from ...-importDefault :: String -> ImportClause-importDefault = ImportClauseDefault . ImportDefaultSpecifier . ident---- | Create a namespace import--- Example: importNamespace "foo"  -- import * as foo from ...-importNamespace :: String -> ImportClause-importNamespace = ImportClauseNamespace . ImportNamespaceSpecifier . ident---- | Create an import module item--- Example: importItem (importDecl [importDefault "React"] "react")-importItem :: ImportDeclaration -> ModuleItem-importItem = ModuleItemImport---- | Create a named export declaration--- Example: namedExportDecl [("foo", "foo")] Nothing-namedExportDecl :: [(String, String)] -> Maybe String -> ExportDeclaration-namedExportDecl specifiers source = ExportDeclarationNamed $ NamedExport-  (fmap (\(local, exported) -> ExportSpecifier (ident local) (ident exported)) specifiers)-  (fmap (\s -> StringLiteral s False) source)---- | Create a default export declaration--- Example: defaultExportDecl (identExpr "foo")-defaultExportDecl :: Expression -> ExportDeclaration-defaultExportDecl = ExportDeclarationDefault---- | Create an export declaration for a statement--- Example: exportDeclStmt (varDeclStmt (constDecl "x" (Just (intExpr 42))))-exportDeclStmt :: Statement -> ExportDeclaration-exportDeclStmt = ExportDeclarationDeclaration---- | Create an export module item--- Example: exportItem (defaultExportDecl (identExpr "foo"))-exportItem :: ExportDeclaration -> ModuleItem-exportItem = ModuleItemExport----- * Programs---- | Create a module program--- Example: moduleProgram [importItem (importDecl [importDefault "foo"] "./foo.js"), stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))]-moduleProgram :: [ModuleItem] -> Program-moduleProgram body = Program body SourceTypeModule---- | Create a script program--- Example: scriptProgram [stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))]-scriptProgram :: [ModuleItem] -> Program-scriptProgram body = Program body SourceTypeScript----- * Type Expressions---- | Create an identifier type expression--- Example: identType "string"-identType :: String -> TypeExpression-identType = TypeExpressionIdentifier . ident---- | Create an array type expression--- Example: arrayType (identType "number")-arrayType :: TypeExpression -> TypeExpression-arrayType = TypeExpressionArray . ArrayTypeExpression---- | Create a union type expression--- Example: unionType [identType "string", identType "number"]-unionType :: [TypeExpression] -> TypeExpression-unionType = TypeExpressionUnion---- | Create an optional type expression--- Example: optionalType (identType "string")-optionalType :: TypeExpression -> TypeExpression-optionalType = TypeExpressionOptional---- | Create a parameterized type expression--- Example: paramType (identType "Array") [identType "string"]-paramType :: TypeExpression -> [TypeExpression] -> TypeExpression-paramType base args = TypeExpressionParameterized $-  ParameterizedTypeExpression base args---- | The 'any' type-anyType :: TypeExpression-anyType = TypeExpressionAny---- | The 'void' type-voidType :: TypeExpression-voidType = TypeExpressionVoid---- | The 'never' type-neverType :: TypeExpression-neverType = TypeExpressionNever----- * Comments and Documentation---- | Create a line comment--- Example: lineComment "This is a comment"-lineComment :: String -> Comment-lineComment = CommentLine---- | Create a block comment--- Example: blockComment "This is a\nmultiline comment"-blockComment :: String -> Comment-blockComment = CommentBlock---- | Create a documentation comment--- Example: docComment "Description of the function" [paramTag "x" (Just (identType "number")) "The input value"]-docComment :: String -> [DocumentationTag] -> Comment-docComment desc tags = CommentDocumentation $ DocumentationComment desc tags---- | Create a @param documentation tag--- Example: paramTag "x" (Just (identType "number")) "The input value"-paramTag :: String -> Maybe TypeExpression -> String -> DocumentationTag-paramTag name typ desc = DocumentationTag "param" typ (Just $ ident name) desc---- | Create a @returns documentation tag--- Example: returnsTag (Just (identType "number")) "The result"-returnsTag :: Maybe TypeExpression -> String -> DocumentationTag-returnsTag typ desc = DocumentationTag "returns" typ Nothing desc---- | Create a @type documentation tag--- Example: typeTag (identType "number")-typeTag :: TypeExpression -> DocumentationTag-typeTag typ = DocumentationTag "type" (Just typ) Nothing ""
− src/main/haskell/Hydra/TypeScript/Coder.hs
@@ -1,1227 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | TypeScript code generator: emits TypeScript type declarations from Hydra modules--module Hydra.TypeScript.Coder where--import qualified Hydra.Analysis as Analysis-import qualified Hydra.Annotations as Annotations-import qualified Hydra.Arity as Arity-import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Environment as Environment-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Lexical as Lexical-import qualified Hydra.Overlay.Haskell.Lib.Eithers as Eithers-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Maps as Maps-import qualified Hydra.Overlay.Haskell.Lib.Math as Math-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering-import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Names as Names-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Print.Docs as PrintDocs-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.Rewriting as Rewriting-import qualified Hydra.Scoping as Scoping-import qualified Hydra.Serialization as Serialization-import qualified Hydra.Sorting as Sorting-import qualified Hydra.Strip as Strip-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.TypeScript.Language as Language-import qualified Hydra.TypeScript.Serde as Serde-import qualified Hydra.TypeScript.Syntax as Syntax-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variables as Variables-import qualified Hydra.Variants as Variants-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void-import qualified Data.Map as M-import qualified Data.Set as S---- | Analyze a term as a TypeScript function, using the Graph as the analysis environment-analyzeTypeScriptFunction :: Typing.InferenceContext -> Graph.Graph -> Core.Term -> Either t0 (Typing.FunctionStructure Graph.Graph)-analyzeTypeScriptFunction cx g term = Analysis.analyzeFunctionTerm cx tsEnvGetGraph tsEnvSetGraph g term---- | Collect the bound parameter names from a chain of nested foralls, in outer-to-inner order; stops at the first non-forall type-collectForallParams :: Core.Type -> [Core.Name]-collectForallParams t =--      let dt = Strip.deannotateType t-      in case dt of-        Core.TypeForall v0 -> Lists.cons (Core.forallTypeParameter v0) (collectForallParams (Core.forallTypeBody v0))-        _ -> []---- | Collect the names of every type referenced in a type tree that belongs to a different namespace than the current module, for computing the imports needed at the top of the emitted .ts file-collectImports :: Packaging.ModuleName -> Core.Type -> S.Set Core.Name-collectImports currentNs t =--      let vars = Variables.freeVariablesInType t-      in (filterNonLocalNames currentNs vars)---- | Collect type imports referenced inside a term tree (lambda bodies, type applications, let-binding schemes), supplementing the top-level typeScheme walk-collectInnerTypeImports :: Packaging.ModuleName -> Core.Term -> S.Set Core.Name-collectInnerTypeImports currentNs term =--      let subs = Rewriting.subterms term-          ownVars =-                  case (Strip.deannotateTerm term) of-                    Core.TermLambda v0 -> Optionals.match (Core.lambdaDomain v0) Sets.empty (\d -> Variables.freeVariablesInType d)-                    Core.TermTypeApplication v0 -> Variables.freeVariablesInType (Core.typeApplicationTermType v0)-                    Core.TermTypeLambda _ -> Sets.empty-                    Core.TermLet v0 -> Lists.foldl (\acc -> \b -> Optionals.match (Core.bindingTypeScheme b) acc (\ts -> Sets.union acc (Variables.freeVariablesInType (Core.typeSchemeBody ts)))) Sets.empty (Core.letBindings v0)-                    _ -> Sets.empty-          childVars = Lists.foldl (\acc -> \s -> Sets.union acc (collectInnerTypeImports currentNs s)) Sets.empty subs-      in (filterNonLocalNames currentNs (Sets.union ownVars childVars))---- | Like collectImports but walks a Term, gathering free term-level variables that resolve to a different module-collectTermImports :: Packaging.ModuleName -> Core.Term -> S.Set Core.Name-collectTermImports currentNs t =--      let vars = Variables.freeVariablesInTerm t-      in (filterNonLocalNames currentNs vars)---- | Decode a canonical decimal digit string into a ((sign, digits), scale) nested pair-decimalDigitsAndScale :: String -> ((String, String), Int)-decimalDigitsAndScale s =--      let eParts = Strings.splitOn "e" s-          mantissa = Optionals.withDefault "" (Lists.head eParts)-          expText = Optionals.withDefault "" (Lists.head (Lists.drop 1 eParts))-          expTextUnplussed =-                  Logic.ifElse (Equality.equal (Optionals.withDefault 0 (Strings.charAt 0 expText)) 43) (Strings.fromList (Lists.drop 1 (Strings.toList expText))) expText-          expPart = Optionals.withDefault 0 (Literals.parseInt32 expTextUnplussed)-          isNeg = Equality.equal (Optionals.withDefault 0 (Strings.charAt 0 mantissa)) 45-          unsigned = Logic.ifElse isNeg (Strings.fromList (Lists.drop 1 (Strings.toList mantissa))) mantissa-          dotParts = Strings.splitOn "." unsigned-          intPart = Optionals.withDefault "" (Lists.head dotParts)-          fracPart = Optionals.withDefault "" (Lists.head (Lists.drop 1 dotParts))-          rawDigits = Strings.concat2 intPart fracPart-          rawScale = Math.sub (Strings.length fracPart) expPart-          sign = Logic.ifElse isNeg "-" ""-      in (Logic.ifElse (Ordering.lt rawScale 0) ((sign, (Strings.concat2 rawDigits (Strings.fromList (Lists.replicate (Math.negate rawScale) 48)))), 0) ((sign, rawDigits), rawScale))---- | Find the free variables of a term that are referenced eagerly, i.e. outside of any nested lambda body; used to break false dependency cycles caused by DSL-level thunks such as hydra.parsers.lazy-eagerFreeVariablesInTerm :: Core.Term -> S.Set Core.Name-eagerFreeVariablesInTerm term =--      let dfltVars =-              \_ -> Lists.foldl (\s -> \t -> Sets.union s (eagerFreeVariablesInTerm t)) Sets.empty (Rewriting.subterms term)-      in case term of-        Core.TermLambda _ -> Sets.empty-        Core.TermLet v0 -> Sets.difference (dfltVars ()) (Sets.fromList (Lists.map (\b -> Core.bindingName b) (Core.letBindings v0)))-        Core.TermVariable v0 -> Sets.singleton v0-        _ -> dfltVars ()---- | Encode a let-binding as a TS statement inside an enclosing function body, hoisting lambda-valued bindings as nested function declarations-encodeBindingAsStatement :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Core.Binding -> Syntax.Statement-encodeBindingAsStatement cx g currentNs b =--      let bname = Core.bindingName b-          lname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf bname)-          bterm = Core.bindingTerm b-          dterm = Strip.deannotateTerm bterm-      in case dterm of-        Core.TermLambda _ ->-          let innerFunDecl =-                  functionDeclarationFromTerm cx g currentNs lname bterm (Optionals.bind (Core.bindingTypeScheme b) (\ts -> Just (Core.typeSchemeBody ts)))-          in (Syntax.StatementFunctionDeclaration innerFunDecl)-        _ ->-          let expr = encodeTerm cx g currentNs bterm-              declarator =-                      Syntax.VariableDeclarator {-                        Syntax.variableDeclaratorId = (Syntax.PatternIdentifier (tsIdent lname)),-                        Syntax.variableDeclaratorInit = (Just expr)}-              varDecl =-                      Syntax.VariableDeclaration {-                        Syntax.variableDeclarationKind = Syntax.VariableKindConst,-                        Syntax.variableDeclarationDeclarations = [-                          declarator]}-          in (Syntax.StatementVariableDeclaration varDecl)---- | Emit a fully-applied primitive call with selected arguments wrapped in thunks, per a parallel list of laziness flags-encodeLazyCall :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Core.Term -> [Core.Term] -> [Bool] -> Syntax.Expression-encodeLazyCall cx g currentNs headTerm args lazyFlags =--      let headExpr = encodeTerm cx g currentNs headTerm-          paired = Lists.zip args lazyFlags-          renderArg =-                  \p ->-                    let argTerm = Pairs.first p-                        isLazy = Pairs.second p-                        expr = encodeTerm cx g currentNs argTerm-                    in (Logic.ifElse isLazy (tsArrow [] expr) expr)-          argExprs = Lists.map renderArg paired-      in (tsCall headExpr argExprs)---- | Render a Hydra literal as a TypeScript expression-encodeLiteral :: Core.Literal -> Syntax.Expression-encodeLiteral lit =--      let litExpr = \lit -> Syntax.ExpressionLiteral lit-          numLit = \i -> litExpr (Syntax.LiteralNumber (Syntax.NumericLiteralInteger i))-          floatLit = \f -> litExpr (Syntax.LiteralNumber (Syntax.NumericLiteralFloat f))-          strLit =-                  \s -> litExpr (Syntax.LiteralString (Syntax.StringLiteral {-                    Syntax.stringLiteralValue = s,-                    Syntax.stringLiteralSingleQuote = False}))-          boolLit = \b -> litExpr (Syntax.LiteralBoolean b)-          bigIntCall = \txt -> tsCall (tsExprIdent "BigInt") [-                strLit txt]-      in case lit of-        Core.LiteralBinary v0 -> strLit (Literals.binaryToBase64 v0)-        Core.LiteralBoolean v0 -> boolLit v0-        Core.LiteralDecimal v0 ->-          let parts = decimalDigitsAndScale (Literals.printDecimal v0)-              signDigits = Pairs.first parts-              scale = Pairs.second parts-              coefficientText = Strings.concat2 (Pairs.first signDigits) (Pairs.second signDigits)-          in (tsObject [-            ("coefficient", (bigIntCall coefficientText)),-            ("scale", (numLit (Literals.bigintToInt64 (Literals.int32ToBigint scale))))])-        Core.LiteralString v0 -> strLit v0-        Core.LiteralInteger v0 -> case v0 of-          Core.IntegerValueBigint v1 -> bigIntCall (Literals.printBigint v1)-          Core.IntegerValueInt8 v1 -> numLit (Literals.bigintToInt64 (Literals.int8ToBigint v1))-          Core.IntegerValueInt16 v1 -> numLit (Literals.bigintToInt64 (Literals.int16ToBigint v1))-          Core.IntegerValueInt32 v1 -> numLit (Literals.bigintToInt64 (Literals.int32ToBigint v1))-          Core.IntegerValueInt64 v1 -> bigIntCall (Literals.printInt64 v1)-          Core.IntegerValueUint8 v1 -> numLit (Literals.bigintToInt64 (Literals.uint8ToBigint v1))-          Core.IntegerValueUint16 v1 -> numLit (Literals.bigintToInt64 (Literals.uint16ToBigint v1))-          Core.IntegerValueUint32 v1 -> numLit (Literals.bigintToInt64 (Literals.uint32ToBigint v1))-          Core.IntegerValueUint64 v1 -> bigIntCall (Literals.printUint64 v1)-          _ -> numLit (Literals.bigintToInt64 (Literals.int32ToBigint 0))-        Core.LiteralFloat v0 -> case v0 of-          Core.FloatValueFloat32 v1 -> floatLit (Literals.float32ToFloat64 v1)-          Core.FloatValueFloat64 v1 -> floatLit v1-          _ -> floatLit 0.0-        _ -> litExpr Syntax.LiteralNull---- | Map a Hydra literal type to a TypeScript type expression-encodeLiteralType :: Core.LiteralType -> Syntax.TypeExpression-encodeLiteralType lt =-    case lt of-      Core.LiteralTypeBinary -> tsParamApp1 "ReadonlyArray" (tsNamedType "number")-      Core.LiteralTypeBoolean -> tsNamedType "boolean"-      Core.LiteralTypeDecimal -> Syntax.TypeExpressionObject [-        tsPropSig "coefficient" False (tsNamedType "bigint"),-        (tsPropSig "scale" False (tsNamedType "number"))]-      Core.LiteralTypeFloat v0 -> case v0 of-        Core.FloatTypeFloat32 -> tsNamedType "number"-        Core.FloatTypeFloat64 -> tsNamedType "number"-      Core.LiteralTypeInteger v0 -> case v0 of-        Core.IntegerTypeBigint -> tsNamedType "bigint"-        Core.IntegerTypeInt8 -> tsNamedType "number"-        Core.IntegerTypeInt16 -> tsNamedType "number"-        Core.IntegerTypeInt32 -> tsNamedType "number"-        Core.IntegerTypeInt64 -> tsNamedType "bigint"-        Core.IntegerTypeUint8 -> tsNamedType "number"-        Core.IntegerTypeUint16 -> tsNamedType "number"-        Core.IntegerTypeUint32 -> tsNamedType "number"-        Core.IntegerTypeUint64 -> tsNamedType "bigint"-      Core.LiteralTypeString -> tsNamedType "string"---- | Build a TS function parameter as a pattern, typed unless the domain is the analyze pass's untyped-variable sentinel-encodeParam :: t0 -> t1 -> Packaging.ModuleName -> Core.Name -> Core.Type -> Syntax.Pattern-encodeParam cx g currentNs pname dom =--      let nstr = sanitizeParamName pname-      in case (Strip.deannotateType dom) of-        Core.TypeVariable _ -> tsTypedIdent nstr Syntax.TypeExpressionAny-        _ -> tsTypedIdent nstr (encodeTypeOrAny cx g currentNs dom)---- | Render a Hydra term as a TypeScript expression-encodeTerm :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Core.Term -> Syntax.Expression-encodeTerm cx g currentNs term =-    case term of-      Core.TermAnnotated v0 -> encodeTerm cx g currentNs (Core.annotatedTermBody v0)-      Core.TermLiteral v0 -> encodeLiteral v0-      Core.TermVariable v0 ->-        let local = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf v0)-            varExpr =-                    Optionals.match (Names.moduleNameOf v0) (tsExprIdent local) (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) (tsExprIdent local) (-                      let nsSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))-                          alias = Strings.concat2 "$mod_" (Strings.join "_" nsSegs)-                      in (tsMember (tsExprIdent alias) local)))-        in (Optionals.match (Lexical.lookupPrimitive g v0) varExpr (\prim ->-          let isZeroArityEffect =-                  Logic.and (Equality.equal (Arity.primitiveArity prim) 0) (Logic.not (Packaging.primitiveDefinitionIsPure (Graph.primitiveDefinition prim)))-          in (Logic.ifElse isZeroArityEffect (tsCall varExpr []) varExpr)))-      Core.TermLambda v0 ->-        let lamTerm = Core.TermLambda v0-            fsLE = analyzeTypeScriptFunction cx g lamTerm-            fsL =-                    Eithers.either (\_err -> Typing.FunctionStructure {-                      Typing.functionStructureTypeParams = [],-                      Typing.functionStructureParams = [],-                      Typing.functionStructureBindings = [],-                      Typing.functionStructureBody = lamTerm,-                      Typing.functionStructureDomains = [],-                      Typing.functionStructureCodomain = Nothing,-                      Typing.functionStructureEnvironment = g}) (\ok -> ok) fsLE-            fsLParams = Typing.functionStructureParams fsL-            fsLDoms = Typing.functionStructureDomains fsL-            fsLBindings = Typing.functionStructureBindings fsL-            fsLBody = Typing.functionStructureBody fsL-            fsLEnv = Typing.functionStructureEnvironment fsL-            innerBody =-                    Logic.ifElse (Lists.isEmpty fsLBindings) fsLBody (Core.TermLet (Core.Let {-                      Core.letBindings = fsLBindings,-                      Core.letBody = fsLBody}))-            paramAcc =-                    Lists.foldl (\acc -> \pn ->-                      let idx = Pairs.first acc-                          pats = Pairs.second acc-                          raw = Names.localNameOf pn-                          uniq = Logic.ifElse (Equality.equal raw "_") (Strings.concat2 "_" (Literals.printInt32 idx)) raw-                          pat = tsTypedIdent (Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords uniq) Syntax.TypeExpressionAny-                      in (Math.add idx 1, (Lists.concat2 pats [-                        pat]))) (0, []) fsLParams-            paramPatterns = Pairs.second paramAcc-            bExpr = encodeTerm cx fsLEnv currentNs innerBody-        in (tsArrowTyped paramPatterns bExpr)-      Core.TermApplication v0 ->-        let asTerm = Core.TermApplication v0-            flat = flattenApplication asTerm-            headTerm = Pairs.first flat-            args = Pairs.second flat-            mName = termHeadVariable headTerm-            argc = Lists.length args-            lazyMaybe =-                    Optionals.match mName Nothing (\n ->-                      let lazyFlags = lazyFlagsForPrimitive g n-                          anyLazy = Lists.foldl (\b -> \f -> Logic.or b f) False lazyFlags-                      in (Logic.ifElse (Logic.and anyLazy (Equality.equal argc (Lists.length lazyFlags))) (Just (encodeLazyCall cx g currentNs headTerm args lazyFlags)) Nothing))-        in (Optionals.match lazyMaybe (-          let dHead = Strip.deannotateAndDetypeTerm headTerm-              encArgs = Lists.map (encodeTerm cx g currentNs) args-          in case dHead of-            Core.TermProject v1 -> Logic.ifElse (Lists.isEmpty encArgs) (-              let headExpr = encodeTerm cx g currentNs headTerm-              in headExpr) (-              let fname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Core.unName (Core.projectionFieldName v1))-                  firstA = Optionals.withDefault (tsExprIdent "undefined") (Lists.head encArgs)-                  restA = Lists.drop 1 encArgs-                  fieldExpr = tsMember firstA fname-              in (Logic.ifElse (Lists.isEmpty restA) fieldExpr (tsCall fieldExpr restA)))-            Core.TermUnwrap _ -> Logic.ifElse (Lists.isEmpty encArgs) (-              let headExpr = encodeTerm cx g currentNs headTerm-              in headExpr) (-              let firstA = Optionals.withDefault (tsExprIdent "undefined") (Lists.head encArgs)-                  restA = Lists.drop 1 encArgs-                  valueExpr = tsMember firstA "value"-              in (Logic.ifElse (Lists.isEmpty restA) valueExpr (tsCall valueExpr restA)))-            _ ->-              let headExpr = encodeTerm cx g currentNs headTerm-              in (tsCall headExpr encArgs)) (\e -> e))-      Core.TermUnit -> tsUndefined-      Core.TermList v0 -> tsArray (Lists.map (encodeTerm cx g currentNs) v0)-      Core.TermSet v0 -> tsNew (tsExprIdent "Set") [-        tsArray (Lists.map (encodeTerm cx g currentNs) (Sets.toList v0))]-      Core.TermMap v0 -> tsNew (tsExprIdent "Map") [-        tsArray (Lists.map (\entry -> tsArray [-          encodeTerm cx g currentNs (Pairs.first entry),-          (encodeTerm cx g currentNs (Pairs.second entry))]) (Maps.toList v0))]-      Core.TermPair v0 -> tsAsAny (tsArray [-        encodeTerm cx g currentNs (Pairs.first v0),-        (encodeTerm cx g currentNs (Pairs.second v0))])-      Core.TermOptional v0 -> Optionals.match v0 (tsAsAny (tsObject [-        ("tag", (tsExprStr "none"))])) (\v -> tsAsAny (tsObject [-        ("tag", (tsExprStr "given")),-        ("value", (encodeTerm cx g currentNs v))]))-      Core.TermRecord v0 ->-        let fields = Core.recordFields v0-        in (tsObject (Lists.map (\f -> (-          Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Core.unName (Core.fieldName f)),-          (encodeTerm cx g currentNs (Core.fieldTerm f)))) fields))-      Core.TermInject v0 ->-        let fname = Core.unName (Core.fieldName (Core.injectionField v0))-            fterm = Core.fieldTerm (Core.injectionField v0)-            isUnit =-                    case (Strip.deannotateTerm fterm) of-                      Core.TermUnit -> True-                      _ -> False-        in (Logic.ifElse isUnit (tsAsAny (tsObject [-          ("tag", (tsExprStr fname))])) (tsAsAny (tsObject [-          ("tag", (tsExprStr fname)),-          ("value", (encodeTerm cx g currentNs fterm))])))-      Core.TermWrap v0 -> tsObject [-        ("value", (encodeTerm cx g currentNs (Core.wrappedTermBody v0)))]-      Core.TermLet v0 ->-        let lt2 = thunkLazyLet v0-            bindings = sortBindingsTopologically (Core.letBindings lt2)-            body = Core.letBody lt2-            encodedBody = encodeTerm cx g currentNs body-            bindingStmts = Lists.map (\b -> encodeBindingAsStatement cx g currentNs b) bindings-            returnStmt = Syntax.StatementReturn (Just encodedBody)-            stmts = Lists.concat2 bindingStmts [-                  returnStmt]-            iifeArrow =-                    Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {-                      Syntax.arrowFunctionExpressionParams = [],-                      Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyBlock stmts),-                      Syntax.arrowFunctionExpressionAsync = False})-        in (tsCall iifeArrow [])-      Core.TermTypeApplication v0 -> encodeTerm cx g currentNs (Core.typeApplicationTermBody v0)-      Core.TermTypeLambda v0 -> encodeTerm cx g currentNs (Core.typeLambdaBody v0)-      Core.TermProject v0 ->-        let fname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Core.unName (Core.projectionFieldName v0))-        in (tsArrowTyped [-          tsTypedIdent "x" Syntax.TypeExpressionAny] (tsMember (tsExprIdent "x") fname))-      Core.TermUnwrap _ -> tsArrowTyped [-        tsTypedIdent "x" Syntax.TypeExpressionAny] (tsMember (tsExprIdent "x") "value")-      Core.TermCases v0 ->-        let armFields = Core.caseStatementCases v0-            defaultMaybe = Core.caseStatementDefault v0-            uVar = "u"-            uExpr = tsAsAny (tsExprIdent uVar)-            uTag = tsMember uExpr "tag"-            uValue = tsMember uExpr "value"-            armCases =-                    Lists.map (\f ->-                      let fname = Core.unName (Core.caseAlternativeName f)-                          armExpr = encodeTerm cx g currentNs (Core.caseAlternativeHandler f)-                          callExpr = tsCall armExpr [-                                uValue]-                      in Syntax.SwitchCase {-                        Syntax.switchCaseTest = (Just (tsExprStr fname)),-                        Syntax.switchCaseConsequent = [-                          Syntax.StatementReturn (Just callExpr)]}) armFields-            defaultCase =-                    Optionals.match defaultMaybe (Syntax.SwitchCase {-                      Syntax.switchCaseTest = Nothing,-                      Syntax.switchCaseConsequent = [-                        Syntax.StatementReturn (Just (tsCall (tsExprIdent "(() => { throw new Error('unmatched case'); })") []))]}) (\dt ->-                      let dExpr = encodeTerm cx g currentNs dt-                      in Syntax.SwitchCase {-                        Syntax.switchCaseTest = Nothing,-                        Syntax.switchCaseConsequent = [-                          Syntax.StatementReturn (Just dExpr)]})-            allCases = Lists.concat2 armCases [-                  defaultCase]-            switchStmt =-                    Syntax.StatementSwitch (Syntax.SwitchStatement {-                      Syntax.switchStatementDiscriminant = uTag,-                      Syntax.switchStatementCases = allCases})-        in (Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {-          Syntax.arrowFunctionExpressionParams = [-            Syntax.PatternIdentifier (tsIdent uVar)],-          Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyBlock [-            switchStmt]),-          Syntax.arrowFunctionExpressionAsync = False}))-      Core.TermEither v0 -> Eithers.either (\l -> tsAsAny (tsObject [-        ("tag", (tsExprStr "left")),-        ("value", (encodeTerm cx g currentNs l))])) (\r -> tsAsAny (tsObject [-        ("tag", (tsExprStr "right")),-        ("value", (encodeTerm cx g currentNs r))])) v0-      _ -> tsExprIdent "null"---- | Render a Hydra term definition as a TypeScript module item-encodeTermDefinition :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Packaging.TermDefinition -> (Maybe String, Syntax.ModuleItem)-encodeTermDefinition cx g currentNs td =--      let name = Packaging.termDefinitionName td-          lname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf name)-          rawTerm = Packaging.termDefinitionBody td-          mdoc = Eithers.either (\_ -> Nothing) (\x_ -> x_) (Annotations.getTermDescription cx g rawTerm)-          asExport = \stmt -> Syntax.ModuleItemExport (Syntax.ExportDeclarationDeclaration stmt)-          mScheme =-                  Optionals.bind (Packaging.termDefinitionSignature td) (\sig -> Just (Core.typeSchemeBody (Scoping.termSignatureToTypeScheme sig)))-          dterm = Strip.deannotateTerm rawTerm-          funDecl = functionDeclarationFromTerm cx g currentNs lname rawTerm mScheme-          asFunDecl = asExport (Syntax.StatementFunctionDeclaration funDecl)-          item =-                  case dterm of-                    Core.TermLambda _ -> asFunDecl-                    Core.TermTypeLambda _ -> asFunDecl-                    _ ->-                      let expr = encodeTerm cx g currentNs rawTerm-                          declarator =-                                  Syntax.VariableDeclarator {-                                    Syntax.variableDeclaratorId = (Syntax.PatternIdentifier (tsIdent lname)),-                                    Syntax.variableDeclaratorInit = (Just expr)}-                          varDecl =-                                  Syntax.VariableDeclaration {-                                    Syntax.variableDeclarationKind = Syntax.VariableKindConst,-                                    Syntax.variableDeclarationDeclarations = [-                                      declarator]}-                      in (asExport (Syntax.StatementVariableDeclaration varDecl))-      in (mdoc, item)---- | Map a Hydra type to a TypeScript type expression-encodeType :: t0 -> t1 -> Packaging.ModuleName -> Core.Type -> Either t2 Syntax.TypeExpression-encodeType cx g currentNs t =--      let typ = Strip.deannotateType t-      in case typ of-        Core.TypeAnnotated v0 -> encodeType cx g currentNs (Core.annotatedTypeBody v0)-        Core.TypeApplication v0 ->-          let fnTyp = Core.applicationTypeFunction v0-              argTyp = Core.applicationTypeArgument v0-          in (Eithers.bind (encodeType cx g currentNs fnTyp) (\encFn -> Eithers.bind (encodeType cx g currentNs argTyp) (\encArg -> case encFn of-            Syntax.TypeExpressionIdentifier _ -> Right (Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {-              Syntax.parameterizedTypeExpressionBase = encFn,-              Syntax.parameterizedTypeExpressionArguments = [-                encArg]}))-            Syntax.TypeExpressionParameterized v1 -> Right (Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {-              Syntax.parameterizedTypeExpressionBase = (Syntax.parameterizedTypeExpressionBase v1),-              Syntax.parameterizedTypeExpressionArguments = (Lists.concat2 (Syntax.parameterizedTypeExpressionArguments v1) [-                encArg])}))-            _ -> Right encFn)))-        Core.TypeForall v0 -> encodeType cx g currentNs (Core.forallTypeBody v0)-        Core.TypeUnit -> Right Syntax.TypeExpressionVoid-        Core.TypeVoid -> Right Syntax.TypeExpressionNever-        Core.TypeLiteral v0 -> Right (encodeLiteralType v0)-        Core.TypeList v0 -> Eithers.map (\enc -> tsParamApp1 "ReadonlyArray" enc) (encodeType cx g currentNs v0)-        Core.TypeSet v0 -> Eithers.map tsReadonlySet (encodeType cx g currentNs v0)-        Core.TypeMap v0 -> Eithers.bind (encodeType cx g currentNs (Core.mapTypeKeys v0)) (\kt -> Eithers.bind (encodeType cx g currentNs (Core.mapTypeValues v0)) (\vt -> Right (tsReadonlyMap kt vt)))-        Core.TypeOptional v0 -> Eithers.map (\enc -> Syntax.TypeExpressionUnion [-          Syntax.TypeExpressionObject [-            tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {-              Syntax.stringLiteralValue = "given",-              Syntax.stringLiteralSingleQuote = False}))),-            (tsPropSig "value" False enc)],-          (Syntax.TypeExpressionObject [-            tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {-              Syntax.stringLiteralValue = "none",-              Syntax.stringLiteralSingleQuote = False})))])]) (encodeType cx g currentNs v0)-        Core.TypeEither v0 -> Eithers.bind (encodeType cx g currentNs (Core.eitherTypeLeft v0)) (\lt -> Eithers.bind (encodeType cx g currentNs (Core.eitherTypeRight v0)) (\rt ->-          let leftArm =-                  Syntax.TypeExpressionObject [-                    tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {-                      Syntax.stringLiteralValue = "left",-                      Syntax.stringLiteralSingleQuote = False}))),-                    (tsPropSig "value" False lt)]-              rightArm =-                      Syntax.TypeExpressionObject [-                        tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {-                          Syntax.stringLiteralValue = "right",-                          Syntax.stringLiteralSingleQuote = False}))),-                        (tsPropSig "value" False rt)]-          in (Right (Syntax.TypeExpressionUnion [-            leftArm,-            rightArm]))))-        Core.TypePair v0 -> Eithers.bind (encodeType cx g currentNs (Core.pairTypeFirst v0)) (\ft -> Eithers.bind (encodeType cx g currentNs (Core.pairTypeSecond v0)) (\st -> Right (tsTuple [-          ft,-          st])))-        Core.TypeFunction v0 -> Eithers.bind (encodeType cx g currentNs (Core.functionTypeDomain v0)) (\dom -> Eithers.bind (encodeType cx g currentNs (Core.functionTypeCodomain v0)) (\cod -> Right (Syntax.TypeExpressionFunction (Syntax.FunctionTypeExpression {-          Syntax.functionTypeExpressionTypeParameters = [],-          Syntax.functionTypeExpressionParameters = [-            dom],-          Syntax.functionTypeExpressionReturnType = cod}))))-        Core.TypeVariable v0 ->-          let lname = Formatting.capitalize (Names.localNameOf v0)-          in (Optionals.match (Names.moduleNameOf v0) (Right (tsNamedType lname)) (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) (Right (tsNamedType lname)) (-            let nsSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))-                typeAlias = Strings.concat2 "$type_" (Strings.join "_" nsSegs)-            in (Right (tsNamedType (Strings.concat [-              typeAlias,-              ".",-              lname]))))))-        Core.TypeWrap v0 -> encodeType cx g currentNs v0-        Core.TypeRecord v0 -> Eithers.bind (Eithers.mapList (\ft ->-          let fname = Core.unName (Core.fieldTypeName ft)-              ftyp = Core.fieldTypeType ft-          in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (tsPropSig fname False sftyp)))) v0) (\members -> Right (Syntax.TypeExpressionObject members))-        Core.TypeUnion v0 -> Eithers.bind (Eithers.mapList (\ft ->-          let fname = Core.unName (Core.fieldTypeName ft)-              ftyp = Core.fieldTypeType ft-          in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (Syntax.TypeExpressionObject [-            tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {-              Syntax.stringLiteralValue = fname,-              Syntax.stringLiteralSingleQuote = False}))),-            (tsPropSig "value" False sftyp)])))) v0) (\arms -> Right (Syntax.TypeExpressionUnion arms))---- | Encode a Hydra type definition as an interface declaration, a discriminated-union type alias, or a plain type alias-encodeTypeDefinition :: t0 -> Graph.Graph -> Packaging.ModuleName -> Packaging.TypeDefinition -> Either Errors.Error (Maybe String, Syntax.ModuleItem)-encodeTypeDefinition cx g currentNs tdef =--      let name = Packaging.typeDefinitionName tdef-          typScheme = Packaging.typeDefinitionBody tdef-          rawTyp = Core.typeSchemeBody typScheme-          lname = Formatting.capitalize (Names.localNameOf name)-      in (Eithers.bind (Annotations.getTypeDescription cx g rawTyp) (\mdoc ->-        let forallParams = collectForallParams rawTyp-            typ = stripForalls rawTyp-            typeParams = Lists.map (\v -> tsParam (Formatting.capitalize (Core.unName v))) forallParams-            dtyp = Strip.deannotateType typ-        in case dtyp of-          Core.TypeRecord v0 -> Eithers.bind (Eithers.mapList (\ft ->-            let fname = Core.unName (Core.fieldTypeName ft)-                ftyp = Core.fieldTypeType ft-            in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Eithers.bind (Annotations.commentsFromFieldType cx g ft) (\mfdoc -> Right (tsPropSigWithDoc fname False sftyp (mkDocComment mfdoc)))))) v0) (\members -> Right (-            mdoc,-            (Syntax.ModuleItemInterface (Syntax.InterfaceDeclaration {-              Syntax.interfaceDeclarationName = (tsIdent lname),-              Syntax.interfaceDeclarationTypeParameters = typeParams,-              Syntax.interfaceDeclarationExtends = [],-              Syntax.interfaceDeclarationMembers = members}))))-          Core.TypeUnion v0 -> Eithers.bind (Eithers.mapList (\ft ->-            let fname = Core.unName (Core.fieldTypeName ft)-                ftyp = Core.fieldTypeType ft-                dtyp2 = Strip.deannotateType ftyp-            in case dtyp2 of-              Core.TypeUnit -> Right (Syntax.TypeExpressionObject [-                tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {-                  Syntax.stringLiteralValue = fname,-                  Syntax.stringLiteralSingleQuote = False})))])-              _ -> Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (Syntax.TypeExpressionObject [-                tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {-                  Syntax.stringLiteralValue = fname,-                  Syntax.stringLiteralSingleQuote = False}))),-                (tsPropSig "value" False sftyp)]))) v0) (\arms -> Right (-            mdoc,-            (Syntax.ModuleItemTypeAlias (Syntax.TypeAliasDeclaration {-              Syntax.typeAliasDeclarationName = (tsIdent lname),-              Syntax.typeAliasDeclarationTypeParameters = typeParams,-              Syntax.typeAliasDeclarationType = (Syntax.TypeExpressionUnion arms)}))))-          Core.TypeWrap v0 -> Eithers.bind (encodeType cx g currentNs v0) (\sftyp -> Right (-            mdoc,-            (Syntax.ModuleItemInterface (Syntax.InterfaceDeclaration {-              Syntax.interfaceDeclarationName = (tsIdent lname),-              Syntax.interfaceDeclarationTypeParameters = typeParams,-              Syntax.interfaceDeclarationExtends = [],-              Syntax.interfaceDeclarationMembers = [-                tsPropSig "value" False sftyp]}))))-          _ -> Eithers.bind (encodeType cx g currentNs typ) (\styp -> Right (-            mdoc,-            (Syntax.ModuleItemTypeAlias (Syntax.TypeAliasDeclaration {-              Syntax.typeAliasDeclarationName = (tsIdent lname),-              Syntax.typeAliasDeclarationTypeParameters = typeParams,-              Syntax.typeAliasDeclarationType = styp}))))))---- | Try to encode a Hydra type as a TS type expression, falling back to any if encodeType fails-encodeTypeOrAny :: t0 -> t1 -> Packaging.ModuleName -> Core.Type -> Syntax.TypeExpression-encodeTypeOrAny cx g currentNs typ =-    Eithers.either (\_e -> Syntax.TypeExpressionAny) (\te -> te) (encodeType cx g currentNs typ)---- | Keep only names whose module differs from the current module's-filterNonLocalNames :: Packaging.ModuleName -> S.Set Core.Name -> S.Set Core.Name-filterNonLocalNames currentNs names =-    Sets.fromList (Optionals.givens (Lists.map (\n -> Optionals.match (Names.moduleNameOf n) Nothing (\nameNs -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName nameNs)) Nothing (Just n))) (Sets.toList names)))---- | Walk an application spine, returning the innermost head term and its arguments in application order-flattenApplication :: Core.Term -> (Core.Term, [Core.Term])-flattenApplication t =--      let dt = Strip.deannotateTerm t-      in case dt of-        Core.TermApplication v0 ->-          let inner = flattenApplication (Core.applicationFunction v0)-              head_ = Pairs.first inner-              prevArgs = Pairs.second inner-          in (head_, (Lists.concat2 prevArgs (Lists.singleton (Core.applicationArgument v0))))-        _ -> (t, [])---- | Rewrite free occurrences of the given target names from x to x(undefined), forcing a thunked binding created by thunkLazyLet-forceLazyRefs :: S.Set Core.Name -> Core.Term -> Core.Term-forceLazyRefs targets0 term0 =-    Rewriting.rewriteTermWithContext (\recurse0 -> \targets -> \term -> case term of-      Core.TermVariable v0 -> Logic.ifElse (Sets.member v0 targets) (Core.TermApplication (Core.Application {-        Core.applicationFunction = (Core.TermVariable v0),-        Core.applicationArgument = Core.TermUnit})) term-      Core.TermLambda v0 ->-        let innerTargets = Sets.delete (Core.lambdaParameter v0) targets-        in (recurse0 innerTargets term)-      Core.TermLet v0 ->-        let boundNames = Sets.fromList (Lists.map Core.bindingName (Core.letBindings v0))-            innerTargets = Sets.difference targets boundNames-        in (recurse0 innerTargets term)-      _ -> recurse0 targets term) targets0 term0---- | Build a TS function declaration from a Hydra term by peeling lambdas and let bindings into explicit parameters, statements, and a body-functionDeclarationFromTerm :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> String -> Core.Term -> Maybe Core.Type -> Syntax.FunctionDeclaration-functionDeclarationFromTerm cx g currentNs lname term _mScheme =--      let fsE = analyzeTypeScriptFunction cx g term-          fs =-                  Eithers.either (\_err -> Typing.FunctionStructure {-                    Typing.functionStructureTypeParams = [],-                    Typing.functionStructureParams = [],-                    Typing.functionStructureBindings = [],-                    Typing.functionStructureBody = term,-                    Typing.functionStructureDomains = [],-                    Typing.functionStructureCodomain = Nothing,-                    Typing.functionStructureEnvironment = g}) (\ok -> ok) fsE-          fsParams = Typing.functionStructureParams fs-          fsDoms = Typing.functionStructureDomains fs-          fsBindings0 = Typing.functionStructureBindings fs-          fsBody0 = Typing.functionStructureBody fs-          thunked = thunkLazyBindings fsBindings0 fsBody0-          fsBindings = Pairs.first thunked-          fsBody = Pairs.second thunked-          fsEnv = Typing.functionStructureEnvironment fs-          domPad = Core.TypeVariable (Core.Name "_")-          fsDomsPadded = Lists.concat2 fsDoms (Lists.replicate (Math.sub (Lists.length fsParams) (Lists.length fsDoms)) domPad)-          paramPatterns =-                  Lists.map (\pair -> encodeParam cx fsEnv currentNs (Pairs.first pair) (Pairs.second pair)) (Lists.zip fsParams fsDomsPadded)-          sortedBindings = sortBindingsTopologically fsBindings-          bindingStmts = Lists.map (\b -> encodeBindingAsStatement cx fsEnv currentNs b) sortedBindings-          bodyExpr = encodeTerm cx fsEnv currentNs fsBody-          returnStmt = Syntax.StatementReturn (Just bodyExpr)-          block = Lists.concat2 bindingStmts [-                returnStmt]-      in Syntax.FunctionDeclaration {-        Syntax.functionDeclarationId = (tsIdent lname),-        Syntax.functionDeclarationParams = paramPatterns,-        Syntax.functionDeclarationBody = block,-        Syntax.functionDeclarationAsync = False,-        Syntax.functionDeclarationGenerator = False}---- | Render a set of qualified names as TypeScript import statements grouped by source module-importsToText :: S.Set String -> String -> Packaging.ModuleName -> S.Set Core.Name -> String-importsToText overlaySubs kind currentNs names =--      let pairs =-              Optionals.givens (Lists.map (\n -> Optionals.match (Names.moduleNameOf n) Nothing (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) Nothing (Just (ns, n)))) (Sets.toList names))-          transformLocal =-                  \s -> Logic.ifElse (Equality.equal kind "type") (Formatting.capitalize s) (Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords s)-          importKeyword = Logic.ifElse (Equality.equal kind "type") "import type" "import"-          grouped =-                  Lists.foldl (\acc -> \p ->-                    let ns = Pairs.first p-                        n = Pairs.second p-                        local = transformLocal (Names.localNameOf n)-                        existing = Optionals.withDefault [] (Maps.lookup ns acc)-                    in (Maps.insert ns (Lists.cons local existing) acc)) Maps.empty pairs-          currentSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName currentNs))-          currentDepth = Lists.length currentSegs-          currentIsTest =-                  Logic.and (Logic.not (Lists.isEmpty currentSegs)) (Equality.equal (Optionals.withDefault "" (Lists.head currentSegs)) "test")-          baseUpPrefix =-                  Logic.ifElse (Equality.equal currentDepth 1) "./" (Strings.concat (Lists.replicate (Math.sub currentDepth 1) "../"))-          lines =-                  Lists.map (\entry ->-                    let ns = Pairs.first entry-                        locals = Pairs.second entry-                        targetSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))-                        targetIsTest =-                                Logic.and (Logic.not (Lists.isEmpty targetSegs)) (Equality.equal (Optionals.withDefault "" (Lists.head targetSegs)) "test")-                        targetSub = Optionals.withDefault "" (Lists.at 1 targetSegs)-                        targetPathSegs =-                                Logic.ifElse (Logic.and (Equality.equal (Optionals.withDefault "" (Lists.head targetSegs)) "lib") (Sets.member targetSub overlaySubs)) (Lists.concat2 [-                                  "overlay",-                                  "typescript"] targetSegs) targetSegs-                        targetPath = Strings.join "/" targetPathSegs-                        upPrefix =-                                Logic.ifElse (Logic.and currentIsTest (Logic.not targetIsTest)) (Strings.concat2 baseUpPrefix "../../../main/typescript/hydra/") baseUpPrefix-                        nsSlug = Strings.join "_" targetSegs-                        moduleAlias = Logic.ifElse (Equality.equal kind "type") (Strings.concat2 "$type_" nsSlug) (Strings.concat2 "$mod_" nsSlug)-                    in (Strings.concat [-                      importKeyword,-                      " * as ",-                      moduleAlias,-                      " from \"",-                      upPrefix,-                      targetPath,-                      ".js\";\n"])) (Maps.toList grouped)-      in (Strings.concat lines)---- | Look up a primitive by name and return its per-parameter laziness flags in parameter order-lazyFlagsForPrimitive :: Graph.Graph -> Core.Name -> [Bool]-lazyFlagsForPrimitive g name =-    Optionals.match (Maps.lookup name (Graph.graphPrimitives g)) [] (\prim -> Lists.map (\p -> Typing.parameterIsLazy p) (Typing.termSignatureParameters (Packaging.primitiveDefinitionSignature (Graph.primitiveDefinition prim))))---- | True when a let-binding's value should be thunked to preserve Haskell's lazy evaluation semantics-letBindingIsThunkCandidate :: Core.Binding -> Bool-letBindingIsThunkCandidate b =--      let dterm = Strip.deannotateAndDetypeTerm (Core.bindingTerm b)-          isLambda =-                  case dterm of-                    Core.TermLambda _ -> True-                    _ -> False-          freeVars = Variables.freeVariablesInTerm (Core.bindingTerm b)-          callsShow =-                  Lists.foldl (\acc -> \n -> Logic.or acc (Optionals.match (Names.moduleNameOf n) False (\mn -> Equality.equal (Lists.take 2 (Strings.splitOn "." (Packaging.unModuleName mn))) [-                    "hydra",-                    "show"]))) False (Sets.toList freeVars)-      in (Logic.and (Logic.not isLambda) callsShow)---- | Build a documentation comment from an optional description string, or nothing if the description is missing or empty-mkDocComment :: Maybe String -> Maybe Syntax.DocumentationComment-mkDocComment mdesc =-    Optionals.match mdesc Nothing (\d -> Logic.ifElse (Equality.equal d "") Nothing (Just (Syntax.DocumentationComment {-      Syntax.documentationCommentDescription = (PrintDocs.renderDocStringWith tsDocEntityRef d),-      Syntax.documentationCommentTags = []})))---- | Convert a Hydra module to a map from .ts file path to TypeScript source-moduleToTypeScript :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (M.Map String String)-moduleToTypeScript overlaySubs mod defs cx g =--      let currentNs = Packaging.moduleName mod-          partitioned = Environment.partitionDefinitions defs-          typeDefs = Pairs.first partitioned-          rawTermDefs = Pairs.second partitioned-          termDefs = sortTermDefsTopologically currentNs rawTermDefs-          typeImportsFromTypes =-                  Lists.foldl (\acc -> \td -> Sets.union acc (collectImports currentNs (Core.typeSchemeBody (Packaging.typeDefinitionBody td)))) Sets.empty typeDefs-          typeImportsFromTerms =-                  Lists.foldl (\acc -> \td -> Optionals.match (Packaging.termDefinitionSignature td) acc (\sig -> Sets.union acc (collectImports currentNs (Core.typeSchemeBody (Scoping.termSignatureToTypeScheme sig))))) Sets.empty termDefs-          typeImportsFromInner =-                  Lists.foldl (\acc -> \td -> Sets.union acc (collectInnerTypeImports currentNs (Packaging.termDefinitionBody td))) Sets.empty termDefs-          typeImports = Sets.union (Sets.union typeImportsFromTypes typeImportsFromTerms) typeImportsFromInner-          termImports =-                  Lists.foldl (\acc -> \td -> Sets.union acc (collectTermImports currentNs (Packaging.termDefinitionBody td))) Sets.empty termDefs-          typeImportsBlock = importsToText overlaySubs "type" currentNs typeImports-          termImportsBlock = importsToText overlaySubs "value" currentNs termImports-          importsBlock = Strings.concat2 typeImportsBlock termImportsBlock-      in (Eithers.bind (Eithers.mapList (encodeTypeDefinition cx g currentNs) typeDefs) (\typeItems ->-        let termItems = Lists.map (encodeTermDefinition cx g currentNs) termDefs-            allItems = Lists.concat2 typeItems termItems-            mModuleDoc = Optionals.bind (Packaging.moduleMetadata mod) (\em -> Packaging.entityMetadataDescription em)-            moduleDocText = Optionals.match mModuleDoc "" (\d -> Strings.concat2 (Serde.toTypeScriptComments d []) "\n\n")-            header = Strings.concat2 "// Note: this is an automatically generated file. Do not edit.\n\n" moduleDocText-            renderItem =-                    \docAndItem ->-                      let mdoc = Pairs.first docAndItem-                          item = Pairs.second docAndItem-                          itemText = printModuleItem item-                      in (Optionals.match mdoc itemText (\d -> Strings.concat [-                        Serde.toTypeScriptComments d [],-                        "\n",-                        itemText]))-            body = Strings.join "\n\n" (Lists.map renderItem allItems)-            filePath = Names.moduleNameToFilePath Util.CaseConventionCamel (File.FileExtension "ts") (Packaging.moduleName mod)-        in (Right (Maps.singleton filePath (Strings.concat [-          header,-          importsBlock,-          (Logic.ifElse (Equality.equal importsBlock "") "" "\n"),-          body,-          (Logic.ifElse (Equality.equal body "") "" "\n")])))))---- | Render an interface declaration-printInterfaceDeclaration :: Syntax.InterfaceDeclaration -> String-printInterfaceDeclaration decl =--      let name = Syntax.unIdentifier (Syntax.interfaceDeclarationName decl)-          params = printTypeParameterList (Syntax.interfaceDeclarationTypeParameters decl)-          exts = Syntax.interfaceDeclarationExtends decl-          extClause =-                  Logic.ifElse (Lists.isEmpty exts) "" (Strings.concat2 " extends " (Strings.join ", " (Lists.map printTypeExpression exts)))-          members = Syntax.interfaceDeclarationMembers decl-          renderMember = \ps -> Strings.join "\n  " (Formatting.lines (printPropertySignature ps))-          body =-                  Logic.ifElse (Lists.isEmpty members) "" (Strings.concat [-                    "\n  ",-                    (Strings.join ";\n  " (Lists.map renderMember members)),-                    ";\n"])-      in (Strings.concat [-        "export interface ",-        name,-        params,-        extClause,-        " {",-        body,-        "}\n"])---- | Render a TypeScript literal as source text-printLiteral :: Syntax.Literal -> String-printLiteral lit =-    case lit of-      Syntax.LiteralString v0 -> tsEscapeString (Syntax.stringLiteralValue v0)-      Syntax.LiteralBoolean v0 -> Logic.ifElse v0 "true" "false"-      Syntax.LiteralNull -> "null"-      Syntax.LiteralUndefined -> "undefined"-      _ -> "null"---- | Render a top-level module item-printModuleItem :: Syntax.ModuleItem -> String-printModuleItem mi =-    case mi of-      Syntax.ModuleItemInterface v0 -> printInterfaceDeclaration v0-      Syntax.ModuleItemTypeAlias v0 -> printTypeAliasDeclaration v0-      Syntax.ModuleItemStatement _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)-      Syntax.ModuleItemImport _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)-      Syntax.ModuleItemExport _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)-      _ -> ""---- | Render a property signature, with an optional JSDoc comment prepended-printPropertySignature :: Syntax.PropertySignature -> String-printPropertySignature ps =--      let mcomments = Syntax.propertySignatureComments ps-          line =-                  Strings.concat [-                    Logic.ifElse (Syntax.propertySignatureReadonly ps) "readonly " "",-                    (Syntax.unIdentifier (Syntax.propertySignatureName ps)),-                    (Logic.ifElse (Syntax.propertySignatureOptional ps) "?" ""),-                    ": ",-                    (printTypeExpression (Syntax.propertySignatureType ps))]-      in (Optionals.match mcomments line (\dc -> Strings.concat [-        Serde.toTypeScriptComments (Syntax.documentationCommentDescription dc) (Syntax.documentationCommentTags dc),-        "\n",-        line]))---- | Render a type alias declaration-printTypeAliasDeclaration :: Syntax.TypeAliasDeclaration -> String-printTypeAliasDeclaration decl =--      let name = Syntax.unIdentifier (Syntax.typeAliasDeclarationName decl)-          params = printTypeParameterList (Syntax.typeAliasDeclarationTypeParameters decl)-          rhs = printTypeExpression (Syntax.typeAliasDeclarationType decl)-      in (Strings.concat [-        "export type ",-        name,-        params,-        " = ",-        rhs,-        ";\n"])---- | Render a TypeScript type expression as source text-printTypeExpression :: Syntax.TypeExpression -> String-printTypeExpression t =-    case t of-      Syntax.TypeExpressionIdentifier v0 -> Syntax.unIdentifier v0-      Syntax.TypeExpressionLiteral v0 -> printLiteral v0-      Syntax.TypeExpressionArray v0 -> Strings.concat [-        "ReadonlyArray<",-        (printTypeExpression (Syntax.unArrayTypeExpression v0)),-        ">"]-      Syntax.TypeExpressionTuple v0 -> Strings.concat [-        "readonly [",-        (Strings.join ", " (Lists.map printTypeExpression v0)),-        "]"]-      Syntax.TypeExpressionUnion v0 -> Strings.join " | " (Lists.map printTypeExpression v0)-      Syntax.TypeExpressionIntersection v0 -> Strings.join " & " (Lists.map printTypeExpression v0)-      Syntax.TypeExpressionParameterized v0 -> Strings.concat [-        printTypeExpression (Syntax.parameterizedTypeExpressionBase v0),-        "<",-        (Strings.join ", " (Lists.map printTypeExpression (Syntax.parameterizedTypeExpressionArguments v0))),-        ">"]-      Syntax.TypeExpressionOptional v0 -> Strings.concat [-        printTypeExpression v0,-        " | undefined"]-      Syntax.TypeExpressionReadonly v0 -> Strings.concat2 "readonly " (printTypeExpression v0)-      Syntax.TypeExpressionObject v0 -> Strings.concat [-        "{ ",-        (Strings.join "; " (Lists.map printPropertySignature v0)),-        " }"]-      Syntax.TypeExpressionFunction _ -> "((...args: any[]) => any)"-      Syntax.TypeExpressionAny -> "any"-      Syntax.TypeExpressionUnknown -> "unknown"-      Syntax.TypeExpressionVoid -> "void"-      Syntax.TypeExpressionNever -> "never"-      _ -> "unknown"---- | Render one generic type parameter, with an optional extends constraint-printTypeParameter :: Syntax.TypeParameter -> String-printTypeParameter tp =--      let name = Syntax.unIdentifier (Syntax.typeParameterName tp)-          constraint = Syntax.typeParameterConstraint tp-      in (Optionals.match constraint name (\c -> Strings.concat [-        name,-        " extends ",-        (printTypeExpression c)]))---- | Render a generic parameter list, or the empty string when there are no parameters-printTypeParameterList :: [Syntax.TypeParameter] -> String-printTypeParameterList tps =-    Logic.ifElse (Lists.isEmpty tps) "" (Strings.concat [-      "<",-      (Strings.join ", " (Lists.map printTypeParameter tps)),-      ">"])---- | Sanitize a Hydra parameter name into a valid, non-reserved TS identifier-sanitizeParamName :: Core.Name -> String-sanitizeParamName n = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf n)---- | Reorder let-bindings so each appears after the sibling bindings it depends on, avoiding JS temporal-dead-zone errors-sortBindingsTopologically :: [Core.Binding] -> [Core.Binding]-sortBindingsTopologically bindings =--      let byName = Maps.fromList (Lists.map (\b -> (Core.bindingName b, b)) bindings)-          adjacency =-                  Lists.map (\b ->-                    let bname = Core.bindingName b-                        bterm = Core.bindingTerm b-                        freeVars = Variables.freeVariablesInTerm bterm-                        deps = Lists.filter (\n -> Maps.member n byName) (Sets.toList freeVars)-                    in (bname, deps)) bindings-          sccs = Sorting.topologicalSortComponents adjacency-      in (Optionals.givens (Lists.map (\n -> Maps.lookup n byName) (Lists.concat sccs)))---- | Reorder term definitions so each appears after the intra-module definitions it depends on-sortTermDefsTopologically :: t0 -> [Packaging.TermDefinition] -> [Packaging.TermDefinition]-sortTermDefsTopologically currentNs tdefs =--      let byName = Maps.fromList (Lists.map (\td -> (Packaging.termDefinitionName td, td)) tdefs)-          adjacency =-                  Lists.map (\td ->-                    let tname = Packaging.termDefinitionName td-                        tterm = Packaging.termDefinitionBody td-                        freeVars = eagerFreeVariablesInTerm tterm-                        deps = Lists.filter (\n -> Maps.member n byName) (Sets.toList freeVars)-                    in (tname, deps)) tdefs-          sccs = Sorting.topologicalSortComponents adjacency-      in (Optionals.givens (Lists.map (\n -> Maps.lookup n byName) (Lists.concat sccs)))---- | Strip leading forall quantifiers from a type, returning the innermost body-stripForalls :: Core.Type -> Core.Type-stripForalls t =--      let dt = Strip.deannotateType t-      in case dt of-        Core.TypeForall v0 -> stripForalls (Core.forallTypeBody v0)-        _ -> dt---- | If a term reduces, through annotations and type applications, to a variable reference, return its name-termHeadVariable :: Core.Term -> Maybe Core.Name-termHeadVariable t =--      let dt = Strip.deannotateTerm t-      in case dt of-        Core.TermVariable v0 -> Just v0-        Core.TermTypeApplication v0 -> termHeadVariable (Core.typeApplicationTermBody v0)-        _ -> Nothing---- | The bindings-and-body core of thunkLazyLet, shared by the Term_let encoder and the lifted-binding path in functionDeclarationFromTerm-thunkLazyBindings :: [Core.Binding] -> Core.Term -> ([Core.Binding], Core.Term)-thunkLazyBindings bindings body =--      let candidates = Lists.filter (\b -> letBindingIsThunkCandidate b) bindings-      in (Logic.ifElse (Lists.isEmpty candidates) (bindings, body) (-        let targets = Sets.fromList (Lists.map Core.bindingName candidates)-            wrapCandidate =-                    \b -> Logic.ifElse (letBindingIsThunkCandidate b) (Core.Binding {-                      Core.bindingName = (Core.bindingName b),-                      Core.bindingTerm = (Core.TermLambda (Core.Lambda {-                        Core.lambdaParameter = (Core.Name "_"),-                        Core.lambdaDomain = Nothing,-                        Core.lambdaBody = (forceLazyRefs targets (Core.bindingTerm b))})),-                      Core.bindingTypeScheme = (Core.bindingTypeScheme b)}) (Core.Binding {-                      Core.bindingName = (Core.bindingName b),-                      Core.bindingTerm = (forceLazyRefs targets (Core.bindingTerm b)),-                      Core.bindingTypeScheme = (Core.bindingTypeScheme b)})-        in (Lists.map wrapCandidate bindings, (forceLazyRefs targets body))))---- | Thunk every let-binding for which letBindingIsThunkCandidate holds, and rewrite forced references to it accordingly-thunkLazyLet :: Core.Let -> Core.Let-thunkLazyLet lt =--      let result = thunkLazyBindings (Core.letBindings lt) (Core.letBody lt)-      in Core.Let {-        Core.letBindings = (Pairs.first result),-        Core.letBody = (Pairs.second result)}---- | An array expression: [e1, e2, ...]-tsArray :: [Syntax.Expression] -> Syntax.Expression-tsArray elems = Syntax.ExpressionArray (Lists.map (\e -> Syntax.ArrayElementExpression e) elems)---- | An untyped arrow function with an expression body-tsArrow :: [String] -> Syntax.Expression -> Syntax.Expression-tsArrow params body =-    Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {-      Syntax.arrowFunctionExpressionParams = (Lists.map (\p -> Syntax.PatternIdentifier (tsIdent p)) params),-      Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyExpression body),-      Syntax.arrowFunctionExpressionAsync = False})---- | A typed arrow function with typed parameter patterns-tsArrowTyped :: [Syntax.Pattern] -> Syntax.Expression -> Syntax.Expression-tsArrowTyped patterns body =-    Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {-      Syntax.arrowFunctionExpressionParams = patterns,-      Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyExpression body),-      Syntax.arrowFunctionExpressionAsync = False})---- | Wrap an expression in a TypeScript 'as any' cast-tsAsAny :: Syntax.Expression -> Syntax.Expression-tsAsAny e =-    Syntax.ExpressionAsExpression (Syntax.AsExpression {-      Syntax.asExpressionExpression = e,-      Syntax.asExpressionType = Syntax.TypeExpressionAny})---- | A call expression, parenthesizing the callee when it's an arrow function or other ambiguous call target-tsCall :: Syntax.Expression -> [Syntax.Expression] -> Syntax.Expression-tsCall callee args =-    Syntax.ExpressionCall (Syntax.CallExpression {-      Syntax.callExpressionCallee = callee,-      Syntax.callExpressionArguments = args,-      Syntax.callExpressionOptional = False})---- | A conditional (ternary) expression-tsCond :: Syntax.Expression -> Syntax.Expression -> Syntax.Expression -> Syntax.Expression-tsCond test cons alt =-    Syntax.ExpressionConditional (Syntax.ConditionalExpression {-      Syntax.conditionalExpressionTest = test,-      Syntax.conditionalExpressionConsequent = cons,-      Syntax.conditionalExpressionAlternate = alt})---- | Render a 'EntityReference' as TSDoc link syntax-tsDocEntityRef :: Packaging.EntityReference -> String-tsDocEntityRef x =-    case x of-      Packaging.EntityReferenceDefinition v0 -> Strings.concat2 "{@link " (Strings.concat2 (case v0 of-        Packaging.DefinitionReferencePrimitive v1 -> Names.localNameOf v1-        Packaging.DefinitionReferenceTerm v1 -> Names.localNameOf v1-        Packaging.DefinitionReferenceType v1 -> Names.localNameOf v1) "}")-      Packaging.EntityReferenceModule v0 -> Packaging.unModuleName v0-      Packaging.EntityReferencePackage v0 -> Packaging.unPackageName v0-      Packaging.EntityReferenceTermExpr v0 -> Strings.concat2 "`" (Strings.concat2 v0 "`")-      Packaging.EntityReferenceTypeExpr v0 -> Strings.concat2 "`" (Strings.concat2 v0 "`")---- | Identity getter for analyzeFunctionTerm when the environment is a Graph-tsEnvGetGraph :: t0 -> t0-tsEnvGetGraph g = g---- | Setter for analyzeFunctionTerm when the environment is a Graph-tsEnvSetGraph :: t0 -> t1 -> t0-tsEnvSetGraph newG _old = newG---- | Escape a Hydra string for embedding as a double-quoted TypeScript string literal-tsEscapeString :: String -> String-tsEscapeString s =--      let escapeChar =-              \c -> Logic.ifElse (Equality.equal c 34) "\\\"" (Logic.ifElse (Equality.equal c 92) "\\\\" (Logic.ifElse (Equality.equal c 10) "\\n" (Logic.ifElse (Equality.equal c 13) "\\r" (Logic.ifElse (Equality.equal c 9) "\\t" (Logic.ifElse (Equality.equal c 8) "\\b" (Logic.ifElse (Equality.equal c 12) "\\f" (Strings.fromList (Lists.singleton c))))))))-      in (Strings.concat [-        "\"",-        (Strings.concat (Lists.map escapeChar (Strings.toList s))),-        "\""])---- | A bare identifier expression-tsExprIdent :: String -> Syntax.Expression-tsExprIdent s = Syntax.ExpressionIdentifier (tsIdent s)---- | A string-literal expression-tsExprStr :: String -> Syntax.Expression-tsExprStr s =-    Syntax.ExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {-      Syntax.stringLiteralValue = s,-      Syntax.stringLiteralSingleQuote = False}))---- | Wrap a string into a TypeScript identifier-tsIdent :: String -> Syntax.Identifier-tsIdent s = Syntax.Identifier s---- | A member-access expression: obj.prop-tsMember :: Syntax.Expression -> String -> Syntax.Expression-tsMember obj prop =-    Syntax.ExpressionMember (Syntax.MemberExpression {-      Syntax.memberExpressionObject = obj,-      Syntax.memberExpressionProperty = (tsExprIdent prop),-      Syntax.memberExpressionComputed = False,-      Syntax.memberExpressionOptional = False})---- | A bare named type reference-tsNamedType :: String -> Syntax.TypeExpression-tsNamedType n = Syntax.TypeExpressionIdentifier (tsIdent n)---- | A new-expression: new C(args)-tsNew :: Syntax.Expression -> [Syntax.Expression] -> Syntax.Expression-tsNew callee args =-    Syntax.ExpressionNew (Syntax.CallExpression {-      Syntax.callExpressionCallee = callee,-      Syntax.callExpressionArguments = args,-      Syntax.callExpressionOptional = False})---- | An object literal with identifier-style keys-tsObject :: [(String, Syntax.Expression)] -> Syntax.Expression-tsObject props =-    Syntax.ExpressionObject (Lists.map (\kv ->-      let k = Pairs.first kv-          v = Pairs.second kv-      in Syntax.Property {-        Syntax.propertyKey = (tsExprIdent k),-        Syntax.propertyValue = v,-        Syntax.propertyKind = Syntax.PropertyKindInit,-        Syntax.propertyComputed = False,-        Syntax.propertyShorthand = False}) props)---- | A generic type parameter with no constraint-tsParam :: String -> Syntax.TypeParameter-tsParam n =-    Syntax.TypeParameter {-      Syntax.typeParameterName = (tsIdent n),-      Syntax.typeParameterConstraint = Nothing,-      Syntax.typeParameterDefault = Nothing}---- | A parameterized type with one type argument-tsParamApp1 :: String -> Syntax.TypeExpression -> Syntax.TypeExpression-tsParamApp1 n arg =-    Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {-      Syntax.parameterizedTypeExpressionBase = (tsNamedType n),-      Syntax.parameterizedTypeExpressionArguments = [-        arg]})---- | A parameterized type with two type arguments-tsParamApp2 :: String -> Syntax.TypeExpression -> Syntax.TypeExpression -> Syntax.TypeExpression-tsParamApp2 n a b =-    Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {-      Syntax.parameterizedTypeExpressionBase = (tsNamedType n),-      Syntax.parameterizedTypeExpressionArguments = [-        a,-        b]})---- | Wrap an expression in parentheses when its serialized form needs grouping-tsParen :: Syntax.Expression -> Syntax.Expression-tsParen e = Syntax.ExpressionParenthesized e---- | A readonly property signature, with the name sanitized for TS reserved words-tsPropSig :: String -> Bool -> Syntax.TypeExpression -> Syntax.PropertySignature-tsPropSig name optional typ = tsPropSigWithDoc name optional typ Nothing---- | A readonly property signature with an optional JSDoc comment above the property line-tsPropSigWithDoc :: String -> Bool -> Syntax.TypeExpression -> Maybe Syntax.DocumentationComment -> Syntax.PropertySignature-tsPropSigWithDoc name optional typ mcomments =--      let safe = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords name-      in Syntax.PropertySignature {-        Syntax.propertySignatureName = (tsIdent safe),-        Syntax.propertySignatureType = typ,-        Syntax.propertySignatureOptional = optional,-        Syntax.propertySignatureReadonly = True,-        Syntax.propertySignatureComments = mcomments}---- | A ReadonlyMap type with the given key and value types-tsReadonlyMap :: Syntax.TypeExpression -> Syntax.TypeExpression -> Syntax.TypeExpression-tsReadonlyMap k v = tsParamApp2 "ReadonlyMap" k v---- | A ReadonlySet type with the given element type-tsReadonlySet :: Syntax.TypeExpression -> Syntax.TypeExpression-tsReadonlySet t = tsParamApp1 "ReadonlySet" t---- | A tuple type-tsTuple :: [Syntax.TypeExpression] -> Syntax.TypeExpression-tsTuple ts = Syntax.TypeExpressionTuple ts---- | A typed-identifier pattern for a function parameter with a known domain type-tsTypedIdent :: String -> Syntax.TypeExpression -> Syntax.Pattern-tsTypedIdent name typ =-    Syntax.PatternTyped (Syntax.TypedPattern {-      Syntax.typedPatternPattern = (Syntax.PatternIdentifier (tsIdent name)),-      Syntax.typedPatternType = typ})---- | The undefined value as an expression-tsUndefined :: Syntax.Expression-tsUndefined = tsExprIdent "undefined"
− src/main/haskell/Hydra/TypeScript/Language.hs
@@ -1,301 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | Language constraints and reserved words for TypeScript 5.x (ECMAScript 2024 base)--module Hydra.TypeScript.Language where--import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Lexical as Lexical-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void-import qualified Data.Set as S---- | Language constraints for TypeScript 5.x-typeScriptLanguage :: Coders.Language-typeScriptLanguage =-    Coders.Language {-      Coders.languageName = (Coders.LanguageName "hydra.typeScript"),-      Coders.languageConstraints = Coders.LanguageConstraints {-        Coders.languageConstraintsLiteralVariants = literalVariants,-        Coders.languageConstraintsFloatTypes = floatTypes,-        Coders.languageConstraintsIntegerTypes = integerTypes,-        Coders.languageConstraintsTermVariants = termVariants,-        Coders.languageConstraintsTypeVariants = typeVariants,-        Coders.languageConstraintsTypes = typePredicate},-      Coders.languageSupportedFeatures = (Sets.fromList [-        Coders.LanguageFeatureNestedPolymorphicLetBindings]),-      Coders.languageCaseConventions = Coders.CaseConventions {-        Coders.caseConventionsConstant = Util.CaseConventionUpperSnake,-        Coders.caseConventionsDirectory = Util.CaseConventionLowerSnake,-        Coders.caseConventionsEnumValue = Util.CaseConventionPascal,-        Coders.caseConventionsField = Util.CaseConventionCamel,-        Coders.caseConventionsFile = Util.CaseConventionLowerSnake,-        Coders.caseConventionsModule = Util.CaseConventionLowerSnake,-        Coders.caseConventionsTerm = Util.CaseConventionCamel,-        Coders.caseConventionsTermVariable = Util.CaseConventionCamel,-        Coders.caseConventionsType = Util.CaseConventionPascal,-        Coders.caseConventionsTypeVariable = Util.CaseConventionPascal},-      Coders.languageDefaultFileExtension = (File.FileExtension "ts")}-  where-    literalVariants =-        Sets.fromList [-          Variants.LiteralVariantBinary,-          Variants.LiteralVariantBoolean,-          Variants.LiteralVariantDecimal,-          Variants.LiteralVariantFloat,-          Variants.LiteralVariantInteger,-          Variants.LiteralVariantString]-    floatTypes = Sets.fromList [-      Core.FloatTypeFloat64]-    integerTypes =-        Sets.fromList [-          Core.IntegerTypeInt32,-          Core.IntegerTypeBigint]-    termVariants =-        Sets.fromList [-          Variants.TermVariantAnnotated,-          Variants.TermVariantApplication,-          Variants.TermVariantEither,-          Variants.TermVariantCases,-          Variants.TermVariantLambda,-          Variants.TermVariantProject,-          Variants.TermVariantUnwrap,-          Variants.TermVariantLet,-          Variants.TermVariantList,-          Variants.TermVariantLiteral,-          Variants.TermVariantMap,-          Variants.TermVariantOptional,-          Variants.TermVariantPair,-          Variants.TermVariantRecord,-          Variants.TermVariantSet,-          Variants.TermVariantTypeApplication,-          Variants.TermVariantTypeLambda,-          Variants.TermVariantInject,-          Variants.TermVariantUnit,-          Variants.TermVariantVariable,-          Variants.TermVariantWrap]-    typeVariants =-        Sets.fromList [-          Variants.TypeVariantAnnotated,-          Variants.TypeVariantApplication,-          Variants.TypeVariantEither,-          Variants.TypeVariantFunction,-          Variants.TypeVariantForall,-          Variants.TypeVariantList,-          Variants.TypeVariantLiteral,-          Variants.TypeVariantMap,-          Variants.TypeVariantOptional,-          Variants.TypeVariantPair,-          Variants.TypeVariantRecord,-          Variants.TypeVariantSet,-          Variants.TypeVariantUnion,-          Variants.TypeVariantUnit,-          Variants.TypeVariantVariable,-          Variants.TypeVariantVoid,-          Variants.TypeVariantWrap]-    typePredicate = \_ -> True---- | A set of reserved words in TypeScript-typeScriptReservedWords :: S.Set String-typeScriptReservedWords =-    Sets.fromList (Lists.concat [-      keywords,-      futureReserved,-      strictModeReserved,-      typeScriptKeywords,-      builtIns,-      hydraTypeScriptKeywords])-  where-    keywords =-        [-          "await",-          "break",-          "case",-          "catch",-          "class",-          "const",-          "continue",-          "debugger",-          "default",-          "delete",-          "do",-          "else",-          "enum",-          "export",-          "extends",-          "false",-          "finally",-          "for",-          "function",-          "if",-          "import",-          "in",-          "instanceof",-          "let",-          "new",-          "null",-          "return",-          "super",-          "switch",-          "this",-          "throw",-          "true",-          "try",-          "typeof",-          "undefined",-          "var",-          "void",-          "while",-          "with",-          "yield"]-    futureReserved =-        [-          "implements",-          "interface",-          "package",-          "private",-          "protected",-          "public"]-    strictModeReserved =-        [-          "arguments",-          "eval",-          "static",-          "yield"]-    typeScriptKeywords =-        [-          "abstract",-          "as",-          "asserts",-          "assert",-          "any",-          "boolean",-          "constructor",-          "declare",-          "from",-          "get",-          "global",-          "infer",-          "intrinsic",-          "is",-          "keyof",-          "module",-          "namespace",-          "never",-          "object",-          "of",-          "out",-          "override",-          "readonly",-          "require",-          "satisfies",-          "set",-          "string",-          "symbol",-          "type",-          "unique",-          "unknown",-          "using"]-    builtIns =-        [-          "Array",-          "ArrayBuffer",-          "BigInt",-          "Boolean",-          "DataView",-          "Date",-          "Error",-          "Float32Array",-          "Float64Array",-          "Function",-          "Int8Array",-          "Int16Array",-          "Int32Array",-          "JSON",-          "Map",-          "Math",-          "Number",-          "Object",-          "Promise",-          "Proxy",-          "Reflect",-          "RegExp",-          "Set",-          "String",-          "Symbol",-          "Uint8Array",-          "Uint8ClampedArray",-          "Uint16Array",-          "Uint32Array",-          "WeakMap",-          "WeakSet",-          "decodeURI",-          "decodeURIComponent",-          "encodeURI",-          "encodeURIComponent",-          "eval",-          "isFinite",-          "isNaN",-          "parseFloat",-          "parseInt",-          "console",-          "document",-          "global",-          "globalThis",-          "module",-          "process",-          "require",-          "window"]-    hydraTypeScriptKeywords =-        [-          "Name",-          "FrozenMap",-          "TERM_ANNOTATED",-          "TERM_APPLICATION",-          "TERM_EITHER",-          "TERM_FUNCTION",-          "TERM_LET",-          "TERM_LIST",-          "TERM_LITERAL",-          "TERM_MAP",-          "TERM_MAYBE",-          "TERM_PAIR",-          "TERM_RECORD",-          "TERM_SET",-          "TERM_TYPE_APPLICATION",-          "TERM_TYPE_LAMBDA",-          "TERM_UNION",-          "TERM_UNIT",-          "TERM_VARIABLE",-          "TERM_WRAP"]
− src/main/haskell/Hydra/TypeScript/Operators.hs
@@ -1,196 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | AST operators for TypeScript with precedence and associativity--module Hydra.TypeScript.Operators where--import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.Serialization as Serialization-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void---- | Addition operator (+)-addOp :: Ast.Op-addOp = Serialization.op "+" 14 Ast.AssociativityLeft---- | Function application (whitespace)-appOp :: Ast.Op-appOp =-    Ast.Op {-      Ast.opSymbol = (Ast.Symbol ""),-      Ast.opPadding = Ast.Padding {-        Ast.paddingLeft = Ast.WsNone,-        Ast.paddingRight = Ast.WsNone},-      Ast.opPrecedence = (Ast.Precedence 20),-      Ast.opAssociativity = Ast.AssociativityLeft}---- | Arrow function operator (=>)-arrowOp :: Ast.Op-arrowOp = Serialization.op "=>" 2 Ast.AssociativityRight---- | Assignment operator (=)-assignOp :: Ast.Op-assignOp = Serialization.op "=" 2 Ast.AssociativityRight---- | Bitwise AND operator (&)-bitwiseAndOp :: Ast.Op-bitwiseAndOp = Serialization.op "&" 10 Ast.AssociativityLeft---- | Bitwise OR operator (|)-bitwiseOrOp :: Ast.Op-bitwiseOrOp = Serialization.op "|" 8 Ast.AssociativityLeft---- | Bitwise XOR operator (^)-bitwiseXorOp :: Ast.Op-bitwiseXorOp = Serialization.op "^" 9 Ast.AssociativityLeft---- | Type annotation colon (:)-colonOp :: Ast.Op-colonOp = Serialization.op ":" 0 Ast.AssociativityNone---- | Comma operator (,)-commaOp :: Ast.Op-commaOp = Serialization.op "," 1 Ast.AssociativityLeft---- | Definition operator (= in const x = ...)-defineOp :: Ast.Op-defineOp = Serialization.op "=" 0 Ast.AssociativityNone---- | Division operator (/)-divideOp :: Ast.Op-divideOp = Serialization.op "/" 15 Ast.AssociativityLeft---- | Equality operator (==)-equalOp :: Ast.Op-equalOp = Serialization.op "==" 11 Ast.AssociativityLeft---- | Exponentiation operator (**)-exponentiateOp :: Ast.Op-exponentiateOp = Serialization.op "**" 16 Ast.AssociativityRight---- | Greater than operator (>)-greaterThanOp :: Ast.Op-greaterThanOp = Serialization.op ">" 12 Ast.AssociativityLeft---- | Greater than or equal operator (>=)-greaterThanOrEqualOp :: Ast.Op-greaterThanOrEqualOp = Serialization.op ">=" 12 Ast.AssociativityLeft---- | In operator (in)-inOp :: Ast.Op-inOp = Serialization.op "in" 12 Ast.AssociativityLeft---- | Instance of operator (instanceof)-instanceOfOp :: Ast.Op-instanceOfOp = Serialization.op "instanceof" 12 Ast.AssociativityLeft---- | Left shift operator (<<)-leftShiftOp :: Ast.Op-leftShiftOp = Serialization.op "<<" 13 Ast.AssociativityLeft---- | Less than operator (<)-lessThanOp :: Ast.Op-lessThanOp = Serialization.op "<" 12 Ast.AssociativityLeft---- | Less than or equal operator (<=)-lessThanOrEqualOp :: Ast.Op-lessThanOrEqualOp = Serialization.op "<=" 12 Ast.AssociativityLeft---- | Logical AND operator (&&)-logicalAndOp :: Ast.Op-logicalAndOp = Serialization.op "&&" 6 Ast.AssociativityLeft---- | Logical OR operator (||)-logicalOrOp :: Ast.Op-logicalOrOp = Serialization.op "||" 5 Ast.AssociativityLeft---- | Member access operator (.)-memberOp :: Ast.Op-memberOp =-    Ast.Op {-      Ast.opSymbol = (Ast.Symbol "."),-      Ast.opPadding = Ast.Padding {-        Ast.paddingLeft = Ast.WsNone,-        Ast.paddingRight = Ast.WsNone},-      Ast.opPrecedence = (Ast.Precedence 20),-      Ast.opAssociativity = Ast.AssociativityLeft}---- | Modulo operator (%)-moduloOp :: Ast.Op-moduloOp = Serialization.op "%" 15 Ast.AssociativityLeft---- | Multiplication operator (*)-multiplyOp :: Ast.Op-multiplyOp = Serialization.op "*" 15 Ast.AssociativityLeft---- | Inequality operator (!=)-notEqualOp :: Ast.Op-notEqualOp = Serialization.op "!=" 11 Ast.AssociativityLeft---- | Nullish coalescing operator (??)-nullishCoalescingOp :: Ast.Op-nullishCoalescingOp = Serialization.op "??" 4 Ast.AssociativityLeft---- | Optional chaining operator (?.)-optionalChainOp :: Ast.Op-optionalChainOp =-    Ast.Op {-      Ast.opSymbol = (Ast.Symbol "?."),-      Ast.opPadding = Ast.Padding {-        Ast.paddingLeft = Ast.WsNone,-        Ast.paddingRight = Ast.WsNone},-      Ast.opPrecedence = (Ast.Precedence 20),-      Ast.opAssociativity = Ast.AssociativityLeft}---- | Right shift operator (>>)-rightShiftOp :: Ast.Op-rightShiftOp = Serialization.op ">>" 13 Ast.AssociativityLeft---- | Strict equality operator (===)-strictEqualOp :: Ast.Op-strictEqualOp = Serialization.op "===" 11 Ast.AssociativityLeft---- | Strict inequality operator (!==)-strictNotEqualOp :: Ast.Op-strictNotEqualOp = Serialization.op "!==" 11 Ast.AssociativityLeft---- | Subtraction operator (-)-subtractOp :: Ast.Op-subtractOp = Serialization.op "-" 14 Ast.AssociativityLeft---- | Ternary operator (?:) - represents the ? part-ternaryOp :: Ast.Op-ternaryOp = Serialization.op "?" 3 Ast.AssociativityRight---- | Unsigned right shift operator (>>>)-unsignedRightShiftOp :: Ast.Op-unsignedRightShiftOp = Serialization.op ">>>" 13 Ast.AssociativityLeft
− src/main/haskell/Hydra/TypeScript/Serde.hs
@@ -1,1081 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | Serialization functions for converting TypeScript AST to abstract expressions--module Hydra.TypeScript.Serde where--import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Constants as Constants-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Math as Math-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering-import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.Serialization as Serialization-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.TypeScript.Operators as Operators-import qualified Hydra.TypeScript.Syntax as Syntax-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void---- | True iff every codepoint is an ASCII digit 0-9, and the list is non-empty-allDigits :: [Int] -> Bool-allDigits cps =-    Logic.and (Ordering.gt (Lists.length cps) 0) (Lists.foldl (\acc -> \c -> Logic.and acc (Logic.and (Ordering.gte c 48) (Ordering.lte c 57))) True cps)---- | Convert an array element to an AST expression-arrayElementToExpr :: Syntax.ArrayElement -> Ast.Expr-arrayElementToExpr elem =-    case elem of-      Syntax.ArrayElementExpression v0 -> expressionToExpr v0-      Syntax.ArrayElementSpread v0 -> Serialization.prefix "..." (expressionToExpr (Syntax.unSpreadElement v0))-      Syntax.ArrayElementHole -> Serialization.cst ""---- | Convert an array expression to an AST expression-arrayExpressionToExpr :: [Syntax.ArrayElement] -> Ast.Expr-arrayExpressionToExpr arr = Serialization.bracketList Serialization.inlineStyle (Lists.map arrayElementToExpr arr)---- | Convert an array pattern to an AST expression-arrayPatternToExpr :: [Maybe Syntax.Pattern] -> Ast.Expr-arrayPatternToExpr arr =-    Serialization.bracketList Serialization.inlineStyle (Lists.map (\maybeP -> Optionals.match maybeP (Serialization.cst "") patternToExpr) arr)---- | Convert an arrow function expression to an AST expression-arrowFunctionExpressionToExpr :: Syntax.ArrowFunctionExpression -> Ast.Expr-arrowFunctionExpressionToExpr arrow =--      let params = Syntax.arrowFunctionExpressionParams arrow-          body = Syntax.arrowFunctionExpressionBody arrow-          async = Syntax.arrowFunctionExpressionAsync arrow-          asyncKw = Logic.ifElse async [-                Serialization.cst "async"] []-          paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)-          bodyExpr =-                  case body of-                    Syntax.ArrowFunctionBodyExpression v0 -> case v0 of-                      Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr v0)-                      Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr v0)-                      _ -> expressionToExpr v0-                    Syntax.ArrowFunctionBodyBlock v0 -> blockStatementToExpr v0-      in (Serialization.spaceSep (Lists.concat [-        asyncKw,-        [-          Serialization.ifx Operators.arrowOp paramsExpr bodyExpr]]))---- | Convert an assignment expression to an AST expression-assignmentExpressionToExpr :: Syntax.AssignmentExpression -> Ast.Expr-assignmentExpressionToExpr assign =--      let op = Syntax.assignmentExpressionOperator assign-          left = Syntax.assignmentExpressionLeft assign-          right = Syntax.assignmentExpressionRight assign-          opStr = assignmentOperatorToString op-      in (Serialization.spaceSep [-        patternToExpr left,-        (Serialization.cst opStr),-        (expressionToExpr right)])---- | Convert an assignment operator to a string-assignmentOperatorToString :: Syntax.AssignmentOperator -> String-assignmentOperatorToString op =-    case op of-      Syntax.AssignmentOperatorAssign -> "="-      Syntax.AssignmentOperatorAddAssign -> "+="-      Syntax.AssignmentOperatorSubtractAssign -> "-="-      Syntax.AssignmentOperatorMultiplyAssign -> "*="-      Syntax.AssignmentOperatorDivideAssign -> "/="-      Syntax.AssignmentOperatorModuloAssign -> "%="-      Syntax.AssignmentOperatorExponentiateAssign -> "**="-      Syntax.AssignmentOperatorLeftShiftAssign -> "<<="-      Syntax.AssignmentOperatorRightShiftAssign -> ">>="-      Syntax.AssignmentOperatorUnsignedRightShiftAssign -> ">>>="-      Syntax.AssignmentOperatorBitwiseAndAssign -> "&="-      Syntax.AssignmentOperatorBitwiseOrAssign -> "|="-      Syntax.AssignmentOperatorBitwiseXorAssign -> "^="-      Syntax.AssignmentOperatorAndAssign -> "&&="-      Syntax.AssignmentOperatorOrAssign -> "||="-      Syntax.AssignmentOperatorNullishAssign -> "??="---- | Convert an assignment pattern to an AST expression-assignmentPatternToExpr :: Syntax.AssignmentPattern -> Ast.Expr-assignmentPatternToExpr assign =--      let left = Syntax.assignmentPatternLeft assign-          right = Syntax.assignmentPatternRight assign-      in (Serialization.ifx Operators.defineOp (patternToExpr left) (expressionToExpr right))---- | Convert a binary expression to an AST expression-binaryExpressionToExpr :: Syntax.BinaryExpression -> Ast.Expr-binaryExpressionToExpr bin =--      let op = Syntax.binaryExpressionOperator bin-          left = Syntax.binaryExpressionLeft bin-          right = Syntax.binaryExpressionRight bin-      in (Serialization.ifx (binaryOperatorToExpr op) (expressionToExpr left) (expressionToExpr right))---- | Convert a binary operator to an Op-binaryOperatorToExpr :: Syntax.BinaryOperator -> Ast.Op-binaryOperatorToExpr op =-    case op of-      Syntax.BinaryOperatorAdd -> Operators.addOp-      Syntax.BinaryOperatorSubtract -> Operators.subtractOp-      Syntax.BinaryOperatorMultiply -> Operators.multiplyOp-      Syntax.BinaryOperatorDivide -> Operators.divideOp-      Syntax.BinaryOperatorModulo -> Operators.moduloOp-      Syntax.BinaryOperatorExponentiate -> Operators.exponentiateOp-      Syntax.BinaryOperatorEqual -> Operators.equalOp-      Syntax.BinaryOperatorNotEqual -> Operators.notEqualOp-      Syntax.BinaryOperatorStrictEqual -> Operators.strictEqualOp-      Syntax.BinaryOperatorStrictNotEqual -> Operators.strictNotEqualOp-      Syntax.BinaryOperatorLessThan -> Operators.lessThanOp-      Syntax.BinaryOperatorLessThanOrEqual -> Operators.lessThanOrEqualOp-      Syntax.BinaryOperatorGreaterThan -> Operators.greaterThanOp-      Syntax.BinaryOperatorGreaterThanOrEqual -> Operators.greaterThanOrEqualOp-      Syntax.BinaryOperatorAnd -> Operators.logicalAndOp-      Syntax.BinaryOperatorOr -> Operators.logicalOrOp-      Syntax.BinaryOperatorNullishCoalescing -> Operators.nullishCoalescingOp-      Syntax.BinaryOperatorBitwiseAnd -> Operators.bitwiseAndOp-      Syntax.BinaryOperatorBitwiseOr -> Operators.bitwiseOrOp-      Syntax.BinaryOperatorBitwiseXor -> Operators.bitwiseXorOp-      Syntax.BinaryOperatorLeftShift -> Operators.leftShiftOp-      Syntax.BinaryOperatorRightShift -> Operators.rightShiftOp-      Syntax.BinaryOperatorUnsignedRightShift -> Operators.unsignedRightShiftOp-      Syntax.BinaryOperatorIn -> Operators.inOp-      Syntax.BinaryOperatorInstanceof -> Operators.instanceOfOp---- | Convert a block statement to an AST expression. Renders as `{ stmt1\n stmt2\n ... }` using curlyBlock + newlineSep: statements are separated by newlines, NOT by commas (which curlyBracesList's default would insert and which TypeScript rejects between block statements).-blockStatementToExpr :: [Syntax.Statement] -> Ast.Expr-blockStatementToExpr block =-    Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map statementToExpr block))---- | Convert a break statement to an AST expression-breakStatementToExpr :: Maybe Syntax.Identifier -> Ast.Expr-breakStatementToExpr b =-    Optionals.match b (Serialization.cst "break;") (\label -> Serialization.suffix ";" (Serialization.spaceSep [-      Serialization.cst "break",-      (identifierToExpr label)]))---- | Convert a call expression to an AST expression-callExpressionToExpr :: Syntax.CallExpression -> Ast.Expr-callExpressionToExpr call =--      let callee = Syntax.callExpressionCallee call-          args = Syntax.callExpressionArguments call-          optional = Syntax.callExpressionOptional call-          calleeExpr =-                  case callee of-                    Syntax.ExpressionArrow _ -> Serialization.parens (expressionToExpr callee)-                    Syntax.ExpressionConditional _ -> Serialization.parens (expressionToExpr callee)-                    Syntax.ExpressionBinary _ -> Serialization.parens (expressionToExpr callee)-                    Syntax.ExpressionUnary _ -> Serialization.parens (expressionToExpr callee)-                    Syntax.ExpressionAssignment _ -> Serialization.parens (expressionToExpr callee)-                    Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr callee)-                    Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr callee)-                    Syntax.ExpressionFunction _ -> Serialization.parens (expressionToExpr callee)-                    _ -> expressionToExpr callee-          argsExpr = Serialization.parenListAdaptive (Lists.map expressionToExpr args)-          optionalDot = Logic.ifElse optional "?." ""-      in (Serialization.spaceSep [-        calleeExpr,-        (Serialization.cst optionalDot),-        argsExpr])---- | Convert a catch clause to an AST expression-catchClauseToExpr :: Syntax.CatchClause -> Ast.Expr-catchClauseToExpr c =--      let param = Syntax.catchClauseParam c-          body = Syntax.catchClauseBody c-          catchKw =-                  Optionals.match param (Serialization.cst "catch") (\p -> Serialization.spaceSep [-                    Serialization.cst "catch",-                    (Serialization.parens (patternToExpr p))])-      in (Serialization.spaceSep [-        catchKw,-        (blockStatementToExpr body)])---- | Convert a class declaration to an AST expression-classDeclarationToExpr :: Syntax.ClassDeclaration -> Ast.Expr-classDeclarationToExpr cls =--      let id = Syntax.classDeclarationId cls-          superClass = Syntax.classDeclarationSuperClass cls-          body = Syntax.classDeclarationBody cls-          extendsClause =-                  Optionals.match superClass [] (\s -> [-                    Serialization.cst "extends",-                    (expressionToExpr s)])-          bodyExpr =-                  Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map methodDefinitionToExpr body))-      in (Serialization.spaceSep (Lists.concat [-        [-          Serialization.cst "class",-          (identifierToExpr id)],-        extendsClause,-        [-          bodyExpr]]))---- | Convert a class declaration with comments to an AST expression-classDeclarationWithCommentsToExpr :: Syntax.ClassDeclarationWithComments -> Ast.Expr-classDeclarationWithCommentsToExpr cdwc =--      let body = Syntax.classDeclarationWithCommentsBody cdwc-          mc = Syntax.classDeclarationWithCommentsComments cdwc-      in (Optionals.match mc (classDeclarationToExpr body) (\c -> Serialization.newlineSep [-        documentationCommentToExpr c,-        (classDeclarationToExpr body)]))---- | Convert a conditional expression to an AST expression-conditionalExpressionToExpr :: Syntax.ConditionalExpression -> Ast.Expr-conditionalExpressionToExpr cond =--      let test = Syntax.conditionalExpressionTest cond-          consequent = Syntax.conditionalExpressionConsequent cond-          alternate = Syntax.conditionalExpressionAlternate cond-          consExpr =-                  case consequent of-                    Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr consequent)-                    Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr consequent)-                    _ -> expressionToExpr consequent-          altExpr =-                  case alternate of-                    Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr alternate)-                    Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr alternate)-                    _ -> expressionToExpr alternate-      in (Serialization.spaceSep [-        expressionToExpr test,-        (Serialization.cst "?"),-        consExpr,-        (Serialization.cst ":"),-        altExpr])---- | Convert a continue statement to an AST expression-continueStatementToExpr :: Maybe Syntax.Identifier -> Ast.Expr-continueStatementToExpr c =-    Optionals.match c (Serialization.cst "continue;") (\label -> Serialization.suffix ";" (Serialization.spaceSep [-      Serialization.cst "continue",-      (identifierToExpr label)]))---- | Convert a do-while statement to an AST expression-doWhileStatementToExpr :: Syntax.DoWhileStatement -> Ast.Expr-doWhileStatementToExpr d =--      let body = Syntax.doWhileStatementBody d-          test = Syntax.doWhileStatementTest d-      in (Serialization.suffix ";" (Serialization.spaceSep [-        Serialization.cst "do",-        (statementToExpr body),-        (Serialization.cst "while"),-        (Serialization.parens (expressionToExpr test))]))---- | Convert a documentation comment to an AST expression-documentationCommentToExpr :: Syntax.DocumentationComment -> Ast.Expr-documentationCommentToExpr doc =--      let description = Syntax.documentationCommentDescription doc-          tags = Syntax.documentationCommentTags doc-      in (Serialization.cst (toTypeScriptComments description tags))---- | Convert a documentation tag to a JSDoc line. Built by joining non-empty parts with spaces so that absent type/param/description components don't introduce trailing whitespace.-documentationTagToLine :: Syntax.DocumentationTag -> String-documentationTagToLine tag =--      let name = Syntax.documentationTagName tag-          mtype = Syntax.documentationTagType tag-          mparamName = Syntax.documentationTagParamName tag-          description = Syntax.documentationTagDescription tag-          typePart =-                  Optionals.match mtype "" (\t -> Strings.concat [-                    "{",-                    (typeExpressionToString t),-                    "}"])-          paramPart = Optionals.match mparamName "" (\p -> Syntax.unIdentifier p)-          parts =-                  [-                    Strings.concat2 "@" name,-                    typePart,-                    paramPart,-                    description]-          nonEmpty = Lists.filter (\p -> Logic.not (Equality.equal p "")) parts-      in (Strings.concat2 " * " (Strings.join " " nonEmpty))---- | Escape special characters in a string for TypeScript-escapeString :: String -> Bool -> String-escapeString s singleQuote =--      let replace = \old -> \new_ -> \str -> Strings.join new_ (Strings.splitOn old str)-          s1 = replace "\\" "\\\\" s-          s2 = replace "\n" "\\n" s1-          s3 = replace "\r" "\\r" s2-          s4 = replace "\t" "\\t" s3-      in (Logic.ifElse singleQuote (replace "'" "\\'" s4) (replace "\"" "\\\"" s4))---- | Convert an export all declaration to an AST expression-exportAllToExpr :: Syntax.ExportAllDeclaration -> Ast.Expr-exportAllToExpr a =--      let exported = Syntax.exportAllDeclarationExported a-          source = Syntax.exportAllDeclarationSource a-          exportedClause =-                  Optionals.match exported (Serialization.cst "*") (\e -> Serialization.spaceSep [-                    Serialization.cst "*",-                    (Serialization.cst "as"),-                    (identifierToExpr e)])-      in (Serialization.suffix ";" (Serialization.spaceSep [-        Serialization.cst "export",-        exportedClause,-        (Serialization.cst "from"),-        (stringLiteralToExpr source)]))---- | Convert an export declaration to an AST expression-exportDeclarationToExpr :: Syntax.ExportDeclaration -> Ast.Expr-exportDeclarationToExpr exp =-    case exp of-      Syntax.ExportDeclarationNamed v0 -> namedExportToExpr v0-      Syntax.ExportDeclarationDefault v0 -> Serialization.suffix ";" (Serialization.spaceSep [-        Serialization.cst "export",-        (Serialization.cst "default"),-        (expressionToExpr v0)])-      Syntax.ExportDeclarationDeclaration v0 -> Serialization.spaceSep [-        Serialization.cst "export",-        (statementToExpr v0)]-      Syntax.ExportDeclarationAll v0 -> exportAllToExpr v0---- | Convert an export specifier to an AST expression-exportSpecifierToExpr :: Syntax.ExportSpecifier -> Ast.Expr-exportSpecifierToExpr spec =--      let local = Syntax.exportSpecifierLocal spec-          exported = Syntax.exportSpecifierExported spec-      in (Logic.ifElse (Equality.equal (Syntax.unIdentifier local) (Syntax.unIdentifier exported)) (identifierToExpr local) (Serialization.spaceSep [-        identifierToExpr local,-        (Serialization.cst "as"),-        (identifierToExpr exported)]))---- | Convert a TypeScript expression to an AST expression-expressionToExpr :: Syntax.Expression -> Ast.Expr-expressionToExpr expr =-    case expr of-      Syntax.ExpressionIdentifier v0 -> identifierToExpr v0-      Syntax.ExpressionLiteral v0 -> literalToExpr v0-      Syntax.ExpressionArray v0 -> arrayExpressionToExpr v0-      Syntax.ExpressionObject v0 -> objectExpressionToExpr v0-      Syntax.ExpressionFunction v0 -> functionExpressionToExpr v0-      Syntax.ExpressionArrow v0 -> arrowFunctionExpressionToExpr v0-      Syntax.ExpressionCall v0 -> callExpressionToExpr v0-      Syntax.ExpressionMember v0 -> memberExpressionToExpr v0-      Syntax.ExpressionConditional v0 -> conditionalExpressionToExpr v0-      Syntax.ExpressionBinary v0 -> binaryExpressionToExpr v0-      Syntax.ExpressionUnary v0 -> unaryExpressionToExpr v0-      Syntax.ExpressionAssignment v0 -> assignmentExpressionToExpr v0-      Syntax.ExpressionSequence v0 -> Serialization.parenListAdaptive (Lists.map expressionToExpr v0)-      Syntax.ExpressionThis -> Serialization.cst "this"-      Syntax.ExpressionNew v0 -> Serialization.spaceSep [-        Serialization.cst "new",-        (callExpressionToExpr v0)]-      Syntax.ExpressionYield v0 -> Optionals.match v0 (Serialization.cst "yield") (\e -> Serialization.spaceSep [-        Serialization.cst "yield",-        (expressionToExpr e)])-      Syntax.ExpressionAwait v0 -> Serialization.spaceSep [-        Serialization.cst "await",-        (expressionToExpr v0)]-      Syntax.ExpressionSpread v0 -> Serialization.prefix "..." (expressionToExpr (Syntax.unSpreadElement v0))-      Syntax.ExpressionParenthesized v0 -> Serialization.parens (expressionToExpr v0)-      Syntax.ExpressionAsExpression v0 ->-        let innerE = Syntax.asExpressionExpression v0-            typ = Syntax.asExpressionType v0-        in (Serialization.parens (Serialization.spaceSep [-          expressionToExpr innerE,-          (Serialization.cst "as"),-          (Serialization.cst (tsTypeExpressionToString typ))]))---- | Convert a for-in statement to an AST expression-forInStatementToExpr :: Syntax.ForInStatement -> Ast.Expr-forInStatementToExpr f =--      let left = Syntax.forInStatementLeft f-          right = Syntax.forInStatementRight f-          body = Syntax.forInStatementBody f-          leftExpr =-                  case left of-                    Syntax.ForInLeftVariable v0 -> variableDeclarationToExpr v0-                    Syntax.ForInLeftPattern v0 -> patternToExpr v0-      in (Serialization.spaceSep [-        Serialization.cst "for",-        (Serialization.parens (Serialization.spaceSep [-          leftExpr,-          (Serialization.cst "in"),-          (expressionToExpr right)])),-        (statementToExpr body)])---- | Convert a for-of statement to an AST expression-forOfStatementToExpr :: Syntax.ForOfStatement -> Ast.Expr-forOfStatementToExpr f =--      let await = Syntax.forOfStatementAwait f-          left = Syntax.forOfStatementLeft f-          right = Syntax.forOfStatementRight f-          body = Syntax.forOfStatementBody f-          forKw = Logic.ifElse await (Serialization.cst "for await") (Serialization.cst "for")-          leftExpr =-                  case left of-                    Syntax.ForInLeftVariable v0 -> variableDeclarationToExpr v0-                    Syntax.ForInLeftPattern v0 -> patternToExpr v0-      in (Serialization.spaceSep [-        forKw,-        (Serialization.parens (Serialization.spaceSep [-          leftExpr,-          (Serialization.cst "of"),-          (expressionToExpr right)])),-        (statementToExpr body)])---- | Convert a for statement to an AST expression-forStatementToExpr :: Syntax.ForStatement -> Ast.Expr-forStatementToExpr f =--      let init = Syntax.forStatementInit f-          test = Syntax.forStatementTest f-          update = Syntax.forStatementUpdate f-          body = Syntax.forStatementBody f-          initExpr =-                  Optionals.match init (Serialization.cst "") (\i -> case i of-                    Syntax.ForInitVariable v0 -> variableDeclarationToExpr v0-                    Syntax.ForInitExpression v0 -> expressionToExpr v0)-          testExpr = Optionals.match test (Serialization.cst "") expressionToExpr-          updateExpr = Optionals.match update (Serialization.cst "") expressionToExpr-      in (Serialization.spaceSep [-        Serialization.cst "for",-        (Serialization.parenListAdaptive [-          initExpr,-          testExpr,-          updateExpr]),-        (statementToExpr body)])---- | Format import specifiers, handling default vs named imports-formatImportSpecifiers :: [Ast.Expr] -> Ast.Expr-formatImportSpecifiers specs = Serialization.curlyBracesList Nothing Serialization.inlineStyle specs---- | Convert a function declaration to an AST expression-functionDeclarationToExpr :: Syntax.FunctionDeclaration -> Ast.Expr-functionDeclarationToExpr fn =--      let id = Syntax.functionDeclarationId fn-          params = Syntax.functionDeclarationParams fn-          body = Syntax.functionDeclarationBody fn-          async = Syntax.functionDeclarationAsync fn-          generator = Syntax.functionDeclarationGenerator fn-          asyncKw = Logic.ifElse async [-                Serialization.cst "async"] []-          funcKw = Logic.ifElse generator (Serialization.cst "function*") (Serialization.cst "function")-          paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)-          retAnnot = Serialization.cst ": any"-      in (Serialization.spaceSep (Lists.concat [-        asyncKw,-        [-          funcKw,-          (identifierToExpr id),-          paramsExpr,-          retAnnot,-          (blockStatementToExpr body)]]))---- | Convert a function declaration with comments to an AST expression-functionDeclarationWithCommentsToExpr :: Syntax.FunctionDeclarationWithComments -> Ast.Expr-functionDeclarationWithCommentsToExpr fdwc =--      let body = Syntax.functionDeclarationWithCommentsBody fdwc-          mc = Syntax.functionDeclarationWithCommentsComments fdwc-      in (Optionals.match mc (functionDeclarationToExpr body) (\c -> Serialization.newlineSep [-        documentationCommentToExpr c,-        (functionDeclarationToExpr body)]))---- | Convert a function expression to an AST expression-functionExpressionToExpr :: Syntax.FunctionExpression -> Ast.Expr-functionExpressionToExpr fn =--      let mid = Syntax.functionExpressionId fn-          params = Syntax.functionExpressionParams fn-          body = Syntax.functionExpressionBody fn-          async = Syntax.functionExpressionAsync fn-          generator = Syntax.functionExpressionGenerator fn-          asyncKw = Logic.ifElse async [-                Serialization.cst "async"] []-          funcKw = Logic.ifElse generator (Serialization.cst "function*") (Serialization.cst "function")-          nameExpr = Optionals.match mid [] (\id -> [-                identifierToExpr id])-          paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)-      in (Serialization.spaceSep (Lists.concat [-        asyncKw,-        [-          funcKw],-        nameExpr,-        [-          paramsExpr,-          (blockStatementToExpr body)]]))---- | Convert an identifier to an AST expression-identifierToExpr :: Syntax.Identifier -> Ast.Expr-identifierToExpr id = Serialization.cst (Syntax.unIdentifier id)---- | Convert an if statement to an AST expression-ifStatementToExpr :: Syntax.IfStatement -> Ast.Expr-ifStatementToExpr ifStmt =--      let test = Syntax.ifStatementTest ifStmt-          consequent = Syntax.ifStatementConsequent ifStmt-          alternate = Syntax.ifStatementAlternate ifStmt-          ifPart =-                  Serialization.spaceSep [-                    Serialization.cst "if",-                    (Serialization.parens (expressionToExpr test)),-                    (statementToExpr consequent)]-      in (Optionals.match alternate ifPart (\alt -> Serialization.spaceSep [-        ifPart,-        (Serialization.cst "else"),-        (statementToExpr alt)]))---- | Convert an import declaration to an AST expression-importDeclarationToExpr :: Syntax.ImportDeclaration -> Ast.Expr-importDeclarationToExpr imp =--      let specifiers = Syntax.importDeclarationSpecifiers imp-          source = Syntax.importDeclarationSource imp-          sourceExpr = stringLiteralToExpr source-          specExprs = Lists.map importSpecifierToExpr specifiers-      in (Logic.ifElse (Lists.isEmpty specifiers) (Serialization.suffix ";" (Serialization.spaceSep [-        Serialization.cst "import",-        sourceExpr])) (Serialization.suffix ";" (Serialization.spaceSep [-        Serialization.cst "import",-        (formatImportSpecifiers specExprs),-        (Serialization.cst "from"),-        sourceExpr])))---- | Convert an import specifier to an AST expression-importSpecifierToExpr :: Syntax.ImportClause -> Ast.Expr-importSpecifierToExpr spec =-    case spec of-      Syntax.ImportClauseNamed v0 ->-        let imported = Syntax.importSpecifierImported v0-            local = Syntax.importSpecifierLocal v0-        in (Logic.ifElse (Equality.equal (Syntax.unIdentifier imported) (Syntax.unIdentifier local)) (identifierToExpr local) (Serialization.spaceSep [-          identifierToExpr imported,-          (Serialization.cst "as"),-          (identifierToExpr local)]))-      Syntax.ImportClauseDefault v0 -> identifierToExpr (Syntax.unImportDefaultSpecifier v0)-      Syntax.ImportClauseNamespace v0 -> Serialization.spaceSep [-        Serialization.cst "*",-        (Serialization.cst "as"),-        (identifierToExpr (Syntax.unImportNamespaceSpecifier v0))]---- | Detect a kernel-synthesized type-variable name like T0 or T12, which is unbound in inline type annotations-isKernelTypeVarName :: String -> Bool-isKernelTypeVarName s =--      let cps = Strings.toList s-          len = Lists.length cps-          first = Optionals.withDefault 0 (Lists.head cps)-          rest = Logic.ifElse (Ordering.gt len 0) (Lists.drop 1 cps) []-      in (Logic.and (Ordering.gt len 1) (Logic.and (Equality.equal first 84) (allDigits rest)))---- | Convert a labeled statement to an AST expression-labeledStatementToExpr :: Syntax.LabeledStatement -> Ast.Expr-labeledStatementToExpr l =--      let label = Syntax.labeledStatementLabel l-          body = Syntax.labeledStatementBody l-      in (Serialization.spaceSep [-        Serialization.suffix ":" (identifierToExpr label),-        (statementToExpr body)])---- | Convert a literal to an AST expression-literalToExpr :: Syntax.Literal -> Ast.Expr-literalToExpr lit =-    case lit of-      Syntax.LiteralString v0 -> stringLiteralToExpr v0-      Syntax.LiteralNumber v0 -> numericLiteralToExpr v0-      Syntax.LiteralBoolean v0 -> Serialization.cst (Logic.ifElse v0 "true" "false")-      Syntax.LiteralNull -> Serialization.cst "null"-      Syntax.LiteralUndefined -> Serialization.cst "undefined"-      Syntax.LiteralBigInt v0 -> Serialization.cst (Strings.concat2 (Literals.printBigint v0) "n")-      Syntax.LiteralTemplate v0 -> templateLiteralToExpr v0---- | Convert a member expression to an AST expression-memberExpressionToExpr :: Syntax.MemberExpression -> Ast.Expr-memberExpressionToExpr mem =--      let obj = Syntax.memberExpressionObject mem-          prop = Syntax.memberExpressionProperty mem-          computed = Syntax.memberExpressionComputed mem-          optional = Syntax.memberExpressionOptional mem-          objExpr =-                  case obj of-                    Syntax.ExpressionArrow _ -> Serialization.parens (expressionToExpr obj)-                    Syntax.ExpressionConditional _ -> Serialization.parens (expressionToExpr obj)-                    Syntax.ExpressionBinary _ -> Serialization.parens (expressionToExpr obj)-                    Syntax.ExpressionUnary _ -> Serialization.parens (expressionToExpr obj)-                    Syntax.ExpressionAssignment _ -> Serialization.parens (expressionToExpr obj)-                    Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr obj)-                    Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr obj)-                    Syntax.ExpressionFunction _ -> Serialization.parens (expressionToExpr obj)-                    _ -> expressionToExpr obj-          propExpr = expressionToExpr prop-      in (Logic.ifElse computed (Serialization.spaceSep [-        objExpr,-        (Logic.ifElse optional (Serialization.cst "?.") (Serialization.cst "")),-        (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle propExpr)]) (Serialization.ifx (Logic.ifElse optional Operators.optionalChainOp Operators.memberOp) objExpr propExpr))---- | Convert a method definition to an AST expression-methodDefinitionToExpr :: Syntax.MethodDefinition -> Ast.Expr-methodDefinitionToExpr method =--      let key = Syntax.methodDefinitionKey method-          value = Syntax.methodDefinitionValue method-          kind = Syntax.methodDefinitionKind method-          computed = Syntax.methodDefinitionComputed method-          static = Syntax.methodDefinitionStatic method-          staticKw = Logic.ifElse static [-                Serialization.cst "static"] []-          kindKw =-                  case kind of-                    Syntax.MethodKindConstructor -> []-                    Syntax.MethodKindMethod -> []-                    Syntax.MethodKindGet -> [-                      Serialization.cst "get"]-                    Syntax.MethodKindSet -> [-                      Serialization.cst "set"]-          keyExpr =-                  Logic.ifElse computed (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle (expressionToExpr key)) (expressionToExpr key)-          params = Syntax.functionExpressionParams value-          body = Syntax.functionExpressionBody value-          paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)-      in (Serialization.spaceSep (Lists.concat [-        staticKw,-        kindKw,-        [-          keyExpr,-          paramsExpr,-          (blockStatementToExpr body)]]))---- | Convert a module item to an AST expression-moduleItemToExpr :: Syntax.ModuleItem -> Ast.Expr-moduleItemToExpr item =-    case item of-      Syntax.ModuleItemStatement v0 -> statementToExpr v0-      Syntax.ModuleItemImport v0 -> importDeclarationToExpr v0-      Syntax.ModuleItemExport v0 -> exportDeclarationToExpr v0---- | Convert a module item with comments to an AST expression-moduleItemWithCommentsToExpr :: Syntax.ModuleItemWithComments -> Ast.Expr-moduleItemWithCommentsToExpr miwc =--      let body = Syntax.moduleItemWithCommentsBody miwc-          mc = Syntax.moduleItemWithCommentsComments miwc-      in (Optionals.match mc (moduleItemToExpr body) (\c -> Serialization.newlineSep [-        documentationCommentToExpr c,-        (moduleItemToExpr body)]))---- | Convert a named export to an AST expression-namedExportToExpr :: Syntax.NamedExport -> Ast.Expr-namedExportToExpr n =--      let specifiers = Syntax.namedExportSpecifiers n-          source = Syntax.namedExportSource n-          specExprs = Lists.map exportSpecifierToExpr specifiers-          fromClause =-                  Optionals.match source [] (\s -> [-                    Serialization.cst "from",-                    (stringLiteralToExpr s)])-      in (Serialization.suffix ";" (Serialization.spaceSep (Lists.concat [-        [-          Serialization.cst "export"],-        [-          Serialization.curlyBracesList Nothing Serialization.inlineStyle specExprs],-        fromClause])))---- | Convert a numeric literal to an AST expression-numericLiteralToExpr :: Syntax.NumericLiteral -> Ast.Expr-numericLiteralToExpr n =-    case n of-      Syntax.NumericLiteralInteger v0 -> Serialization.cst (Literals.printInt64 v0)-      Syntax.NumericLiteralFloat v0 -> Serialization.cst (Literals.printFloat64 v0)---- | Convert an object expression to an AST expression-objectExpressionToExpr :: [Syntax.Property] -> Ast.Expr-objectExpressionToExpr obj =-    Serialization.curlyBracesList Nothing Serialization.halfBlockStyle (Lists.map propertyToExpr obj)---- | Convert an object pattern property to an AST expression-objectPatternPropertyToExpr :: Syntax.ObjectPatternProperty -> Ast.Expr-objectPatternPropertyToExpr prop =-    case prop of-      Syntax.ObjectPatternPropertyProperty v0 -> propertyToExpr v0-      Syntax.ObjectPatternPropertyRest v0 -> Serialization.prefix "..." (patternToExpr (Syntax.unRestElement v0))---- | Convert an object pattern to an AST expression-objectPatternToExpr :: Syntax.ObjectPattern -> Ast.Expr-objectPatternToExpr obj =--      let props = Syntax.objectPatternProperties obj-      in (Serialization.curlyBracesList Nothing Serialization.inlineStyle (Lists.map objectPatternPropertyToExpr props))---- | Convert a pattern to an AST expression-patternToExpr :: Syntax.Pattern -> Ast.Expr-patternToExpr pat =-    case pat of-      Syntax.PatternIdentifier v0 -> identifierToExpr v0-      Syntax.PatternObject v0 -> objectPatternToExpr v0-      Syntax.PatternArray v0 -> arrayPatternToExpr v0-      Syntax.PatternAssignment v0 -> assignmentPatternToExpr v0-      Syntax.PatternRest v0 -> Serialization.prefix "..." (patternToExpr (Syntax.unRestElement v0))-      Syntax.PatternTyped v0 -> typedPatternToExpr v0---- | Render a TS.Pattern as a plain string-patternToString :: Syntax.Pattern -> String-patternToString pat =-    case pat of-      Syntax.PatternIdentifier v0 -> Syntax.unIdentifier v0-      Syntax.PatternRest v0 -> Strings.concat2 "..." (patternToString (Syntax.unRestElement v0))-      Syntax.PatternTyped v0 -> Strings.concat [-        patternToString (Syntax.typedPatternPattern v0),-        ": ",-        (tsTypeExpressionToString (Syntax.typedPatternType v0))]-      _ -> "_"---- | Convert a TypeScript program to an AST expression-programToExpr :: Syntax.Program -> Ast.Expr-programToExpr prog =--      let body = Syntax.programBody prog-          warning = [-                Serialization.cst (toLineComment Constants.warningAutoGeneratedFile)]-          items = Lists.map moduleItemToExpr body-      in (Serialization.doubleNewlineSep (Lists.concat [-        warning,-        items]))---- | Convert an object property to an AST expression-propertyToExpr :: Syntax.Property -> Ast.Expr-propertyToExpr prop =--      let key = Syntax.propertyKey prop-          value = Syntax.propertyValue prop-          shorthand = Syntax.propertyShorthand prop-          computed = Syntax.propertyComputed prop-          keyExpr =-                  Logic.ifElse computed (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle (expressionToExpr key)) (expressionToExpr key)-      in (Logic.ifElse shorthand keyExpr (Serialization.ifx Operators.colonOp keyExpr (expressionToExpr value)))---- | Convert a return statement to an AST expression-returnStatementToExpr :: Maybe Syntax.Expression -> Ast.Expr-returnStatementToExpr r =-    Optionals.match r (Serialization.cst "return;") (\e -> Serialization.suffix ";" (Serialization.spaceSep [-      Serialization.cst "return",-      (expressionToExpr e)]))---- | Convert a statement to an AST expression-statementToExpr :: Syntax.Statement -> Ast.Expr-statementToExpr stmt =-    case stmt of-      Syntax.StatementExpression v0 -> Serialization.suffix ";" (expressionToExpr v0)-      Syntax.StatementBlock v0 -> blockStatementToExpr v0-      Syntax.StatementEmpty -> Serialization.cst ";"-      Syntax.StatementDebugger -> Serialization.cst "debugger;"-      Syntax.StatementReturn v0 -> returnStatementToExpr v0-      Syntax.StatementBreak v0 -> breakStatementToExpr v0-      Syntax.StatementContinue v0 -> continueStatementToExpr v0-      Syntax.StatementIf v0 -> ifStatementToExpr v0-      Syntax.StatementSwitch v0 -> switchStatementToExpr v0-      Syntax.StatementThrow v0 -> throwStatementToExpr v0-      Syntax.StatementTry v0 -> tryStatementToExpr v0-      Syntax.StatementWhile v0 -> whileStatementToExpr v0-      Syntax.StatementDoWhile v0 -> doWhileStatementToExpr v0-      Syntax.StatementFor v0 -> forStatementToExpr v0-      Syntax.StatementForIn v0 -> forInStatementToExpr v0-      Syntax.StatementForOf v0 -> forOfStatementToExpr v0-      Syntax.StatementVariableDeclaration v0 -> variableDeclarationToExpr v0-      Syntax.StatementFunctionDeclaration v0 -> functionDeclarationToExpr v0-      Syntax.StatementClassDeclaration v0 -> classDeclarationToExpr v0-      Syntax.StatementLabeled v0 -> labeledStatementToExpr v0---- | Convert a string literal to an AST expression-stringLiteralToExpr :: Syntax.StringLiteral -> Ast.Expr-stringLiteralToExpr s =--      let value = Syntax.stringLiteralValue s-          singleQuote = Syntax.stringLiteralSingleQuote s-          quote = Logic.ifElse singleQuote "'" "\""-          escaped = escapeString value singleQuote-      in (Serialization.cst (Strings.concat [-        quote,-        escaped,-        quote]))---- | Convert a switch case to an AST expression-switchCaseToExpr :: Syntax.SwitchCase -> Ast.Expr-switchCaseToExpr c =--      let test = Syntax.switchCaseTest c-          consequent = Syntax.switchCaseConsequent c-          caseLabel =-                  Optionals.match test (Serialization.cst "default:") (\t -> Serialization.spaceSep [-                    Serialization.cst "case",-                    (expressionToExpr t),-                    (Serialization.cst ":")])-      in (Serialization.newlineSep (Lists.cons caseLabel (Lists.map statementToExpr consequent)))---- | Convert a switch statement to an AST expression-switchStatementToExpr :: Syntax.SwitchStatement -> Ast.Expr-switchStatementToExpr switchStmt =--      let discriminant = Syntax.switchStatementDiscriminant switchStmt-          match = Syntax.switchStatementCases switchStmt-      in (Serialization.spaceSep [-        Serialization.cst "switch",-        (Serialization.parens (expressionToExpr discriminant)),-        (Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map switchCaseToExpr match)))])---- | Convert a template literal to an AST expression-templateLiteralToExpr :: Syntax.TemplateLiteral -> Ast.Expr-templateLiteralToExpr t =--      let quasis = Syntax.templateLiteralQuasis t-          exprs = Syntax.templateLiteralExpressions t-      in (Serialization.cst (Strings.concat [-        "`",-        (Strings.join "" (Lists.map (\q -> Syntax.templateElementValue q) quasis)),-        "`"]))---- | Convert a throw statement to an AST expression-throwStatementToExpr :: Syntax.ThrowStatement -> Ast.Expr-throwStatementToExpr t =-    Serialization.suffix ";" (Serialization.spaceSep [-      Serialization.cst "throw",-      (expressionToExpr (Syntax.unThrowStatement t))])---- | Convert a string to a TypeScript line comment. Empty source lines emit `//` (no trailing space).-toLineComment :: String -> String-toLineComment s =-    Strings.join "\n" (Lists.map (\line -> Logic.ifElse (Equality.equal line "") "//" (Strings.concat2 "// " line)) (Formatting.lines s))---- | Format a description and tags as a JSDoc comment. Empty doc lines emit ` *` (no trailing space) so blank lines don't carry trailing whitespace.-toTypeScriptComments :: String -> [Syntax.DocumentationTag] -> String-toTypeScriptComments desc tags =--      let descLines =-              Logic.ifElse (Equality.equal desc "") [] (Lists.map (\line -> Logic.ifElse (Equality.equal line "") " *" (Strings.concat2 " * " line)) (Formatting.lines desc))-          tagLines = Lists.map documentationTagToLine tags-          allLines =-                  Lists.concat [-                    descLines,-                    tagLines]-      in (Logic.ifElse (Lists.isEmpty allLines) "" (Strings.join "\n" (Lists.concat [-        [-          "/**"],-        allLines,-        [-          " */"]])))---- | Convert a try statement to an AST expression-tryStatementToExpr :: Syntax.TryStatement -> Ast.Expr-tryStatementToExpr t =--      let block = Syntax.tryStatementBlock t-          handler = Syntax.tryStatementHandler t-          finalizer = Syntax.tryStatementFinalizer t-          tryPart =-                  Serialization.spaceSep [-                    Serialization.cst "try",-                    (blockStatementToExpr block)]-          catchPart = Optionals.match handler [] (\c -> [-                catchClauseToExpr c])-          finallyPart =-                  Optionals.match finalizer [] (\f -> [-                    Serialization.spaceSep [-                      Serialization.cst "finally",-                      (blockStatementToExpr f)]])-      in (Serialization.spaceSep (Lists.concat [-        [-          tryPart],-        catchPart,-        finallyPart]))---- | Render a TypeScript type expression as a string in TS syntax-tsTypeExpressionToString :: Syntax.TypeExpression -> String-tsTypeExpressionToString t =-    case t of-      Syntax.TypeExpressionIdentifier v0 ->-        let raw = Syntax.unIdentifier v0-        in (Logic.ifElse (isKernelTypeVarName raw) "any" raw)-      Syntax.TypeExpressionAny -> "any"-      Syntax.TypeExpressionVoid -> "void"-      Syntax.TypeExpressionNever -> "never"-      Syntax.TypeExpressionArray v0 -> Strings.concat [-        "ReadonlyArray<",-        (tsTypeExpressionToString (Syntax.unArrayTypeExpression v0)),-        ">"]-      Syntax.TypeExpressionTuple v0 -> Strings.concat [-        "readonly [",-        (Strings.join ", " (Lists.map tsTypeExpressionToString v0)),-        "]"]-      Syntax.TypeExpressionUnion v0 -> Strings.join " | " (Lists.map tsTypeExpressionToString v0)-      Syntax.TypeExpressionIntersection v0 -> Strings.join " & " (Lists.map tsTypeExpressionToString v0)-      Syntax.TypeExpressionParameterized v0 -> Strings.concat [-        tsTypeExpressionToString (Syntax.parameterizedTypeExpressionBase v0),-        "<",-        (Strings.join ", " (Lists.map tsTypeExpressionToString (Syntax.parameterizedTypeExpressionArguments v0))),-        ">"]-      Syntax.TypeExpressionOptional v0 -> Strings.concat [-        tsTypeExpressionToString v0,-        " | undefined"]-      Syntax.TypeExpressionReadonly v0 -> Strings.concat2 "readonly " (tsTypeExpressionToString v0)-      Syntax.TypeExpressionUnknown -> "unknown"-      Syntax.TypeExpressionFunction _ -> "((...args: any[]) => any)"-      _ -> "unknown"---- | Convert a type expression to a string for JSDoc-typeExpressionToString :: Syntax.TypeExpression -> String-typeExpressionToString typ =-    case typ of-      Syntax.TypeExpressionIdentifier v0 -> Syntax.unIdentifier v0-      Syntax.TypeExpressionAny -> "*"-      Syntax.TypeExpressionVoid -> "void"-      Syntax.TypeExpressionNever -> "never"-      Syntax.TypeExpressionLiteral _ -> "literal"-      Syntax.TypeExpressionArray v0 -> Strings.concat2 (typeExpressionToString (Syntax.unArrayTypeExpression v0)) "[]"-      Syntax.TypeExpressionFunction v0 ->-        let params = Syntax.functionTypeExpressionParameters v0-            rt = Syntax.functionTypeExpressionReturnType v0-            rendered =-                    Pairs.second (Lists.foldl (\acc -> \p ->-                      let i = Pairs.first acc-                          soFar = Pairs.second acc-                          this =-                                  Strings.concat [-                                    "_a",-                                    (Literals.printInt32 i),-                                    ": ",-                                    (typeExpressionToString p)]-                      in (Math.add i 1, (Lists.concat2 soFar (Lists.singleton this)))) (0, []) params)-        in (Strings.concat [-          "(",-          (Strings.join ", " rendered),-          ") => ",-          (typeExpressionToString rt)])-      Syntax.TypeExpressionObject _ -> "Object"-      Syntax.TypeExpressionUnion v0 -> Strings.join "|" (Lists.map typeExpressionToString v0)-      Syntax.TypeExpressionParameterized v0 ->-        let base = Syntax.parameterizedTypeExpressionBase v0-            args = Syntax.parameterizedTypeExpressionArguments v0-        in (Strings.concat [-          typeExpressionToString base,-          "<",-          (Strings.join ", " (Lists.map typeExpressionToString args)),-          ">"])-      Syntax.TypeExpressionOptional v0 -> Strings.concat2 "?" (typeExpressionToString v0)---- | Render `<pattern>: <type>` (TypeScript parameter / variable type annotation)-typedPatternToExpr :: Syntax.TypedPattern -> Ast.Expr-typedPatternToExpr tp =--      let innerPat = Syntax.typedPatternPattern tp-          typ = Syntax.typedPatternType tp-          innerStr = patternToString innerPat-          typeStr = tsTypeExpressionToString typ-      in (Serialization.cst (Strings.concat [-        innerStr,-        ": ",-        typeStr]))---- | Convert a unary expression to an AST expression-unaryExpressionToExpr :: Syntax.UnaryExpression -> Ast.Expr-unaryExpressionToExpr un =--      let op = Syntax.unaryExpressionOperator un-          arg = Syntax.unaryExpressionArgument un-          prefix = Syntax.unaryExpressionPrefix un-          opStr = unaryOperatorToString op-          argExpr = expressionToExpr arg-      in (Logic.ifElse prefix (Serialization.prefix opStr argExpr) (Serialization.suffix opStr argExpr))---- | Convert a unary operator to a string-unaryOperatorToString :: Syntax.UnaryOperator -> String-unaryOperatorToString op =-    case op of-      Syntax.UnaryOperatorNegate -> "-"-      Syntax.UnaryOperatorPlus -> "+"-      Syntax.UnaryOperatorNot -> "!"-      Syntax.UnaryOperatorBitwiseNot -> "~"-      Syntax.UnaryOperatorTypeof -> "typeof "-      Syntax.UnaryOperatorVoid -> "void "-      Syntax.UnaryOperatorDelete -> "delete "-      Syntax.UnaryOperatorIncrement -> "++"-      Syntax.UnaryOperatorDecrement -> "--"---- | Convert a variable declaration to an AST expression-variableDeclarationToExpr :: Syntax.VariableDeclaration -> Ast.Expr-variableDeclarationToExpr decl =--      let kind = Syntax.variableDeclarationKind decl-          declarations = Syntax.variableDeclarationDeclarations decl-      in (Serialization.suffix ";" (Serialization.spaceSep [-        variableKindToExpr kind,-        (Serialization.commaSep Serialization.inlineStyle (Lists.map variableDeclaratorToExpr declarations))]))---- | Convert a variable declarator to an AST expression-variableDeclaratorToExpr :: Syntax.VariableDeclarator -> Ast.Expr-variableDeclaratorToExpr decl =--      let id = Syntax.variableDeclaratorId decl-          init = Syntax.variableDeclaratorInit decl-      in (Optionals.match init (patternToExpr id) (\e -> Serialization.ifx Operators.defineOp (patternToExpr id) (expressionToExpr e)))---- | Convert a variable kind to an AST expression-variableKindToExpr :: Syntax.VariableKind -> Ast.Expr-variableKindToExpr kind =-    case kind of-      Syntax.VariableKindVar -> Serialization.cst "var"-      Syntax.VariableKindLet -> Serialization.cst "let"-      Syntax.VariableKindConst -> Serialization.cst "const"---- | Convert a while statement to an AST expression-whileStatementToExpr :: Syntax.WhileStatement -> Ast.Expr-whileStatementToExpr w =--      let test = Syntax.whileStatementTest w-          body = Syntax.whileStatementBody w-      in (Serialization.spaceSep [-        Serialization.cst "while",-        (Serialization.parens (expressionToExpr test)),-        (statementToExpr body)])
− src/main/haskell/Hydra/TypeScript/Syntax.hs
@@ -1,1730 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | A TypeScript 5.x syntax model for Hydra code generation--module Hydra.TypeScript.Syntax where--import qualified Hydra.Core as Core-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void-import qualified Data.Int as I---- | An element in an array expression-data ArrayElement =-  -- | A regular expression element-  ArrayElementExpression Expression |-  -- | A spread element ...x-  ArrayElementSpread SpreadElement |-  -- | An empty slot (elision)-  ArrayElementHole-  deriving (Eq, Ord, Read, Show)--_ArrayElement = Core.Name "hydra.typeScript.syntax.ArrayElement"--_ArrayElement_expression = Core.Name "expression"--_ArrayElement_spread = Core.Name "spread"--_ArrayElement_hole = Core.Name "hole"---- | An array expression [a, b, c]-type ArrayExpression = [ArrayElement]--_ArrayExpression = Core.Name "hydra.typeScript.syntax.ArrayExpression"---- | An array destructuring pattern [a, b, c]-type ArrayPattern = [Maybe Pattern]--_ArrayPattern = Core.Name "hydra.typeScript.syntax.ArrayPattern"---- | An array type (T[])-newtype ArrayTypeExpression =-  ArrayTypeExpression {-    unArrayTypeExpression :: TypeExpression}-  deriving (Eq, Ord, Read, Show)--_ArrayTypeExpression = Core.Name "hydra.typeScript.syntax.ArrayTypeExpression"---- | The body of an arrow function (expression or block)-data ArrowFunctionBody =-  ArrowFunctionBodyExpression Expression |-  ArrowFunctionBodyBlock BlockStatement-  deriving (Eq, Ord, Read, Show)--_ArrowFunctionBody = Core.Name "hydra.typeScript.syntax.ArrowFunctionBody"--_ArrowFunctionBody_expression = Core.Name "expression"--_ArrowFunctionBody_block = Core.Name "block"---- | An arrow function expression-data ArrowFunctionExpression =-  ArrowFunctionExpression {-    -- | Function parameters-    arrowFunctionExpressionParams :: [Pattern],-    -- | Function body (expression or block)-    arrowFunctionExpressionBody :: ArrowFunctionBody,-    -- | Whether the function is async-    arrowFunctionExpressionAsync :: Bool}-  deriving (Eq, Ord, Read, Show)--_ArrowFunctionExpression = Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"--_ArrowFunctionExpression_params = Core.Name "params"--_ArrowFunctionExpression_body = Core.Name "body"--_ArrowFunctionExpression_async = Core.Name "async"---- | A TypeScript `<expression> as <type>` cast-data AsExpression =-  AsExpression {-    -- | The expression being cast-    asExpressionExpression :: Expression,-    -- | The target type-    asExpressionType :: TypeExpression}-  deriving (Eq, Ord, Read, Show)--_AsExpression = Core.Name "hydra.typeScript.syntax.AsExpression"--_AsExpression_expression = Core.Name "expression"--_AsExpression_type = Core.Name "type"---- | An assignment expression-data AssignmentExpression =-  AssignmentExpression {-    assignmentExpressionOperator :: AssignmentOperator,-    assignmentExpressionLeft :: Pattern,-    assignmentExpressionRight :: Expression}-  deriving (Eq, Ord, Read, Show)--_AssignmentExpression = Core.Name "hydra.typeScript.syntax.AssignmentExpression"--_AssignmentExpression_operator = Core.Name "operator"--_AssignmentExpression_left = Core.Name "left"--_AssignmentExpression_right = Core.Name "right"---- | An assignment operator-data AssignmentOperator =-  -- | =-  AssignmentOperatorAssign |-  -- | +=-  AssignmentOperatorAddAssign |-  -- | -=-  AssignmentOperatorSubtractAssign |-  -- | *=-  AssignmentOperatorMultiplyAssign |-  -- | /=-  AssignmentOperatorDivideAssign |-  -- | %=-  AssignmentOperatorModuloAssign |-  -- | **=-  AssignmentOperatorExponentiateAssign |-  -- | <<=-  AssignmentOperatorLeftShiftAssign |-  -- | >>=-  AssignmentOperatorRightShiftAssign |-  -- | >>>=-  AssignmentOperatorUnsignedRightShiftAssign |-  -- | &=-  AssignmentOperatorBitwiseAndAssign |-  -- | |=-  AssignmentOperatorBitwiseOrAssign |-  -- | ^=-  AssignmentOperatorBitwiseXorAssign |-  -- | &&=-  AssignmentOperatorAndAssign |-  -- | ||=-  AssignmentOperatorOrAssign |-  -- | ??=-  AssignmentOperatorNullishAssign-  deriving (Eq, Ord, Read, Show)--_AssignmentOperator = Core.Name "hydra.typeScript.syntax.AssignmentOperator"--_AssignmentOperator_assign = Core.Name "assign"--_AssignmentOperator_addAssign = Core.Name "addAssign"--_AssignmentOperator_subtractAssign = Core.Name "subtractAssign"--_AssignmentOperator_multiplyAssign = Core.Name "multiplyAssign"--_AssignmentOperator_divideAssign = Core.Name "divideAssign"--_AssignmentOperator_moduloAssign = Core.Name "moduloAssign"--_AssignmentOperator_exponentiateAssign = Core.Name "exponentiateAssign"--_AssignmentOperator_leftShiftAssign = Core.Name "leftShiftAssign"--_AssignmentOperator_rightShiftAssign = Core.Name "rightShiftAssign"--_AssignmentOperator_unsignedRightShiftAssign = Core.Name "unsignedRightShiftAssign"--_AssignmentOperator_bitwiseAndAssign = Core.Name "bitwiseAndAssign"--_AssignmentOperator_bitwiseOrAssign = Core.Name "bitwiseOrAssign"--_AssignmentOperator_bitwiseXorAssign = Core.Name "bitwiseXorAssign"--_AssignmentOperator_andAssign = Core.Name "andAssign"--_AssignmentOperator_orAssign = Core.Name "orAssign"--_AssignmentOperator_nullishAssign = Core.Name "nullishAssign"---- | A pattern with default value (param = default)-data AssignmentPattern =-  AssignmentPattern {-    assignmentPatternLeft :: Pattern,-    assignmentPatternRight :: Expression}-  deriving (Eq, Ord, Read, Show)--_AssignmentPattern = Core.Name "hydra.typeScript.syntax.AssignmentPattern"--_AssignmentPattern_left = Core.Name "left"--_AssignmentPattern_right = Core.Name "right"---- | A binary operation expression-data BinaryExpression =-  BinaryExpression {-    binaryExpressionOperator :: BinaryOperator,-    binaryExpressionLeft :: Expression,-    binaryExpressionRight :: Expression}-  deriving (Eq, Ord, Read, Show)--_BinaryExpression = Core.Name "hydra.typeScript.syntax.BinaryExpression"--_BinaryExpression_operator = Core.Name "operator"--_BinaryExpression_left = Core.Name "left"--_BinaryExpression_right = Core.Name "right"---- | A binary operator-data BinaryOperator =-  -- | +-  BinaryOperatorAdd |-  -- | --  BinaryOperatorSubtract |-  -- | *-  BinaryOperatorMultiply |-  -- | /-  BinaryOperatorDivide |-  -- | %-  BinaryOperatorModulo |-  -- | **-  BinaryOperatorExponentiate |-  -- | ==-  BinaryOperatorEqual |-  -- | !=-  BinaryOperatorNotEqual |-  -- | ===-  BinaryOperatorStrictEqual |-  -- | !==-  BinaryOperatorStrictNotEqual |-  -- | <-  BinaryOperatorLessThan |-  -- | <=-  BinaryOperatorLessThanOrEqual |-  -- | >-  BinaryOperatorGreaterThan |-  -- | >=-  BinaryOperatorGreaterThanOrEqual |-  -- | &&-  BinaryOperatorAnd |-  -- | ||-  BinaryOperatorOr |-  -- | ??-  BinaryOperatorNullishCoalescing |-  -- | &-  BinaryOperatorBitwiseAnd |-  -- | |-  BinaryOperatorBitwiseOr |-  -- | ^-  BinaryOperatorBitwiseXor |-  -- | <<-  BinaryOperatorLeftShift |-  -- | >>-  BinaryOperatorRightShift |-  -- | >>>-  BinaryOperatorUnsignedRightShift |-  -- | in-  BinaryOperatorIn |-  -- | instanceof-  BinaryOperatorInstanceof-  deriving (Eq, Ord, Read, Show)--_BinaryOperator = Core.Name "hydra.typeScript.syntax.BinaryOperator"--_BinaryOperator_add = Core.Name "add"--_BinaryOperator_subtract = Core.Name "subtract"--_BinaryOperator_multiply = Core.Name "multiply"--_BinaryOperator_divide = Core.Name "divide"--_BinaryOperator_modulo = Core.Name "modulo"--_BinaryOperator_exponentiate = Core.Name "exponentiate"--_BinaryOperator_equal = Core.Name "equal"--_BinaryOperator_notEqual = Core.Name "notEqual"--_BinaryOperator_strictEqual = Core.Name "strictEqual"--_BinaryOperator_strictNotEqual = Core.Name "strictNotEqual"--_BinaryOperator_lessThan = Core.Name "lessThan"--_BinaryOperator_lessThanOrEqual = Core.Name "lessThanOrEqual"--_BinaryOperator_greaterThan = Core.Name "greaterThan"--_BinaryOperator_greaterThanOrEqual = Core.Name "greaterThanOrEqual"--_BinaryOperator_and = Core.Name "and"--_BinaryOperator_or = Core.Name "or"--_BinaryOperator_nullishCoalescing = Core.Name "nullishCoalescing"--_BinaryOperator_bitwiseAnd = Core.Name "bitwiseAnd"--_BinaryOperator_bitwiseOr = Core.Name "bitwiseOr"--_BinaryOperator_bitwiseXor = Core.Name "bitwiseXor"--_BinaryOperator_leftShift = Core.Name "leftShift"--_BinaryOperator_rightShift = Core.Name "rightShift"--_BinaryOperator_unsignedRightShift = Core.Name "unsignedRightShift"--_BinaryOperator_in = Core.Name "in"--_BinaryOperator_instanceof = Core.Name "instanceof"---- | A block statement { ... }-type BlockStatement = [Statement]--_BlockStatement = Core.Name "hydra.typeScript.syntax.BlockStatement"---- | A break statement-type BreakStatement = (Maybe Identifier)--_BreakStatement = Core.Name "hydra.typeScript.syntax.BreakStatement"---- | A function call expression-data CallExpression =-  CallExpression {-    -- | The function being called-    callExpressionCallee :: Expression,-    -- | The arguments-    callExpressionArguments :: [Expression],-    -- | Whether using optional chaining (?.)-    callExpressionOptional :: Bool}-  deriving (Eq, Ord, Read, Show)--_CallExpression = Core.Name "hydra.typeScript.syntax.CallExpression"--_CallExpression_callee = Core.Name "callee"--_CallExpression_arguments = Core.Name "arguments"--_CallExpression_optional = Core.Name "optional"---- | A catch clause-data CatchClause =-  CatchClause {-    -- | The catch parameter (can be omitted in ES2019+)-    catchClauseParam :: (Maybe Pattern),-    catchClauseBody :: BlockStatement}-  deriving (Eq, Ord, Read, Show)--_CatchClause = Core.Name "hydra.typeScript.syntax.CatchClause"--_CatchClause_param = Core.Name "param"--_CatchClause_body = Core.Name "body"---- | A class body-type ClassBody = [MethodDefinition]--_ClassBody = Core.Name "hydra.typeScript.syntax.ClassBody"---- | A class declaration-data ClassDeclaration =-  ClassDeclaration {-    -- | Class name-    classDeclarationId :: Identifier,-    -- | Optional superclass-    classDeclarationSuperClass :: (Maybe Expression),-    -- | Class body-    classDeclarationBody :: ClassBody}-  deriving (Eq, Ord, Read, Show)--_ClassDeclaration = Core.Name "hydra.typeScript.syntax.ClassDeclaration"--_ClassDeclaration_id = Core.Name "id"--_ClassDeclaration_superClass = Core.Name "superClass"--_ClassDeclaration_body = Core.Name "body"---- | A class declaration with optional JSDoc-data ClassDeclarationWithComments =-  ClassDeclarationWithComments {-    -- | The class declaration-    classDeclarationWithCommentsBody :: ClassDeclaration,-    -- | Optional JSDoc comment-    classDeclarationWithCommentsComments :: (Maybe DocumentationComment)}-  deriving (Eq, Ord, Read, Show)--_ClassDeclarationWithComments = Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"--_ClassDeclarationWithComments_body = Core.Name "body"--_ClassDeclarationWithComments_comments = Core.Name "comments"---- | A TypeScript comment-data Comment =-  -- | A single-line comment (// ...)-  CommentLine String |-  -- | A block comment, delimited by slash-star and star-slash-  CommentBlock String |-  -- | A documentation comment, delimited by slash-double-star and star-slash (JSDoc)-  CommentDocumentation DocumentationComment-  deriving (Eq, Ord, Read, Show)--_Comment = Core.Name "hydra.typeScript.syntax.Comment"--_Comment_line = Core.Name "line"--_Comment_block = Core.Name "block"--_Comment_documentation = Core.Name "documentation"---- | A conditional (ternary) expression: test ? consequent : alternate-data ConditionalExpression =-  ConditionalExpression {-    conditionalExpressionTest :: Expression,-    conditionalExpressionConsequent :: Expression,-    conditionalExpressionAlternate :: Expression}-  deriving (Eq, Ord, Read, Show)--_ConditionalExpression = Core.Name "hydra.typeScript.syntax.ConditionalExpression"--_ConditionalExpression_test = Core.Name "test"--_ConditionalExpression_consequent = Core.Name "consequent"--_ConditionalExpression_alternate = Core.Name "alternate"---- | A continue statement-type ContinueStatement = (Maybe Identifier)--_ContinueStatement = Core.Name "hydra.typeScript.syntax.ContinueStatement"---- | A do-while statement-data DoWhileStatement =-  DoWhileStatement {-    doWhileStatementBody :: Statement,-    doWhileStatementTest :: Expression}-  deriving (Eq, Ord, Read, Show)--_DoWhileStatement = Core.Name "hydra.typeScript.syntax.DoWhileStatement"--_DoWhileStatement_body = Core.Name "body"--_DoWhileStatement_test = Core.Name "test"---- | A documentation comment (JSDoc) with structured tags-data DocumentationComment =-  DocumentationComment {-    -- | The main description-    documentationCommentDescription :: String,-    -- | Documentation tags (@param, @returns, etc.)-    documentationCommentTags :: [DocumentationTag]}-  deriving (Eq, Ord, Read, Show)--_DocumentationComment = Core.Name "hydra.typeScript.syntax.DocumentationComment"--_DocumentationComment_description = Core.Name "description"--_DocumentationComment_tags = Core.Name "tags"---- | A documentation tag (@param, @returns, @type, etc.)-data DocumentationTag =-  DocumentationTag {-    -- | Tag name (param, returns, type, etc.)-    documentationTagName :: String,-    -- | Optional type expression-    documentationTagType :: (Maybe TypeExpression),-    -- | Optional parameter name (for @param)-    documentationTagParamName :: (Maybe Identifier),-    -- | Tag description-    documentationTagDescription :: String}-  deriving (Eq, Ord, Read, Show)--_DocumentationTag = Core.Name "hydra.typeScript.syntax.DocumentationTag"--_DocumentationTag_name = Core.Name "name"--_DocumentationTag_type = Core.Name "type"--_DocumentationTag_paramName = Core.Name "paramName"--_DocumentationTag_description = Core.Name "description"---- | Export all declaration (export * from ...)-data ExportAllDeclaration =-  ExportAllDeclaration {-    exportAllDeclarationExported :: (Maybe Identifier),-    exportAllDeclarationSource :: StringLiteral}-  deriving (Eq, Ord, Read, Show)--_ExportAllDeclaration = Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"--_ExportAllDeclaration_exported = Core.Name "exported"--_ExportAllDeclaration_source = Core.Name "source"---- | An export declaration-data ExportDeclaration =-  -- | Named exports (export {x, y as z})-  ExportDeclarationNamed NamedExport |-  -- | Default export (export default ...)-  ExportDeclarationDefault Expression |-  -- | Export a declaration (export const x = ...)-  ExportDeclarationDeclaration Statement |-  -- | Export all (export * from ...)-  ExportDeclarationAll ExportAllDeclaration-  deriving (Eq, Ord, Read, Show)--_ExportDeclaration = Core.Name "hydra.typeScript.syntax.ExportDeclaration"--_ExportDeclaration_named = Core.Name "named"--_ExportDeclaration_default = Core.Name "default"--_ExportDeclaration_declaration = Core.Name "declaration"--_ExportDeclaration_all = Core.Name "all"---- | An export specifier (x as y)-data ExportSpecifier =-  ExportSpecifier {-    exportSpecifierLocal :: Identifier,-    exportSpecifierExported :: Identifier}-  deriving (Eq, Ord, Read, Show)--_ExportSpecifier = Core.Name "hydra.typeScript.syntax.ExportSpecifier"--_ExportSpecifier_local = Core.Name "local"--_ExportSpecifier_exported = Core.Name "exported"---- | A TypeScript expression-data Expression =-  -- | A simple identifier-  ExpressionIdentifier Identifier |-  -- | A literal value-  ExpressionLiteral Literal |-  -- | An array expression [a, b, c]-  ExpressionArray ArrayExpression |-  -- | An object expression {a: 1, b: 2}-  ExpressionObject ObjectExpression |-  -- | A function expression-  ExpressionFunction FunctionExpression |-  -- | An arrow function expression-  ExpressionArrow ArrowFunctionExpression |-  -- | A function call expression-  ExpressionCall CallExpression |-  -- | A member access expression (obj.prop or obj[prop])-  ExpressionMember MemberExpression |-  -- | A conditional (ternary) expression-  ExpressionConditional ConditionalExpression |-  -- | A binary operation expression-  ExpressionBinary BinaryExpression |-  -- | A unary operation expression-  ExpressionUnary UnaryExpression |-  -- | An assignment expression-  ExpressionAssignment AssignmentExpression |-  -- | A sequence expression (a, b, c)-  ExpressionSequence [Expression] |-  -- | The 'this' keyword-  ExpressionThis |-  -- | A 'new' expression-  ExpressionNew CallExpression |-  -- | A yield expression-  ExpressionYield (Maybe Expression) |-  -- | An await expression-  ExpressionAwait Expression |-  -- | A spread expression (...x)-  ExpressionSpread SpreadElement |-  -- | A parenthesized expression-  ExpressionParenthesized Expression |-  -- | A TypeScript type assertion `<expr> as <type>`-  ExpressionAsExpression AsExpression-  deriving (Eq, Ord, Read, Show)--_Expression = Core.Name "hydra.typeScript.syntax.Expression"--_Expression_identifier = Core.Name "identifier"--_Expression_literal = Core.Name "literal"--_Expression_array = Core.Name "array"--_Expression_object = Core.Name "object"--_Expression_function = Core.Name "function"--_Expression_arrow = Core.Name "arrow"--_Expression_call = Core.Name "call"--_Expression_member = Core.Name "member"--_Expression_conditional = Core.Name "conditional"--_Expression_binary = Core.Name "binary"--_Expression_unary = Core.Name "unary"--_Expression_assignment = Core.Name "assignment"--_Expression_sequence = Core.Name "sequence"--_Expression_this = Core.Name "this"--_Expression_new = Core.Name "new"--_Expression_yield = Core.Name "yield"--_Expression_await = Core.Name "await"--_Expression_spread = Core.Name "spread"--_Expression_parenthesized = Core.Name "parenthesized"--_Expression_asExpression = Core.Name "asExpression"---- | Left-hand side of a for-in or for-of statement-data ForInLeft =-  ForInLeftVariable VariableDeclaration |-  ForInLeftPattern Pattern-  deriving (Eq, Ord, Read, Show)--_ForInLeft = Core.Name "hydra.typeScript.syntax.ForInLeft"--_ForInLeft_variable = Core.Name "variable"--_ForInLeft_pattern = Core.Name "pattern"---- | A for-in statement-data ForInStatement =-  ForInStatement {-    forInStatementLeft :: ForInLeft,-    forInStatementRight :: Expression,-    forInStatementBody :: Statement}-  deriving (Eq, Ord, Read, Show)--_ForInStatement = Core.Name "hydra.typeScript.syntax.ForInStatement"--_ForInStatement_left = Core.Name "left"--_ForInStatement_right = Core.Name "right"--_ForInStatement_body = Core.Name "body"---- | Initialization clause of a for statement-data ForInit =-  ForInitVariable VariableDeclaration |-  ForInitExpression Expression-  deriving (Eq, Ord, Read, Show)--_ForInit = Core.Name "hydra.typeScript.syntax.ForInit"--_ForInit_variable = Core.Name "variable"--_ForInit_expression = Core.Name "expression"---- | A for-of statement-data ForOfStatement =-  ForOfStatement {-    -- | Whether this is a for-await-of-    forOfStatementAwait :: Bool,-    forOfStatementLeft :: ForInLeft,-    forOfStatementRight :: Expression,-    forOfStatementBody :: Statement}-  deriving (Eq, Ord, Read, Show)--_ForOfStatement = Core.Name "hydra.typeScript.syntax.ForOfStatement"--_ForOfStatement_await = Core.Name "await"--_ForOfStatement_left = Core.Name "left"--_ForOfStatement_right = Core.Name "right"--_ForOfStatement_body = Core.Name "body"---- | A for statement-data ForStatement =-  ForStatement {-    -- | Initialization-    forStatementInit :: (Maybe ForInit),-    -- | Test condition-    forStatementTest :: (Maybe Expression),-    -- | Update expression-    forStatementUpdate :: (Maybe Expression),-    forStatementBody :: Statement}-  deriving (Eq, Ord, Read, Show)--_ForStatement = Core.Name "hydra.typeScript.syntax.ForStatement"--_ForStatement_init = Core.Name "init"--_ForStatement_test = Core.Name "test"--_ForStatement_update = Core.Name "update"--_ForStatement_body = Core.Name "body"---- | A function declaration-data FunctionDeclaration =-  FunctionDeclaration {-    -- | Function name-    functionDeclarationId :: Identifier,-    -- | Function parameters-    functionDeclarationParams :: [Pattern],-    -- | Function body-    functionDeclarationBody :: BlockStatement,-    -- | Whether the function is async-    functionDeclarationAsync :: Bool,-    -- | Whether the function is a generator-    functionDeclarationGenerator :: Bool}-  deriving (Eq, Ord, Read, Show)--_FunctionDeclaration = Core.Name "hydra.typeScript.syntax.FunctionDeclaration"--_FunctionDeclaration_id = Core.Name "id"--_FunctionDeclaration_params = Core.Name "params"--_FunctionDeclaration_body = Core.Name "body"--_FunctionDeclaration_async = Core.Name "async"--_FunctionDeclaration_generator = Core.Name "generator"---- | A function declaration with optional JSDoc-data FunctionDeclarationWithComments =-  FunctionDeclarationWithComments {-    -- | The function declaration-    functionDeclarationWithCommentsBody :: FunctionDeclaration,-    -- | Optional JSDoc comment-    functionDeclarationWithCommentsComments :: (Maybe DocumentationComment)}-  deriving (Eq, Ord, Read, Show)--_FunctionDeclarationWithComments = Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"--_FunctionDeclarationWithComments_body = Core.Name "body"--_FunctionDeclarationWithComments_comments = Core.Name "comments"---- | A function expression-data FunctionExpression =-  FunctionExpression {-    -- | Optional function name-    functionExpressionId :: (Maybe Identifier),-    -- | Function parameters-    functionExpressionParams :: [Pattern],-    -- | Function body-    functionExpressionBody :: BlockStatement,-    -- | Whether the function is async-    functionExpressionAsync :: Bool,-    -- | Whether the function is a generator-    functionExpressionGenerator :: Bool}-  deriving (Eq, Ord, Read, Show)--_FunctionExpression = Core.Name "hydra.typeScript.syntax.FunctionExpression"--_FunctionExpression_id = Core.Name "id"--_FunctionExpression_params = Core.Name "params"--_FunctionExpression_body = Core.Name "body"--_FunctionExpression_async = Core.Name "async"--_FunctionExpression_generator = Core.Name "generator"---- | A function type expression-data FunctionTypeExpression =-  FunctionTypeExpression {-    -- | Type parameters (generics)-    functionTypeExpressionTypeParameters :: [TypeParameter],-    -- | Parameter types-    functionTypeExpressionParameters :: [TypeExpression],-    -- | Return type-    functionTypeExpressionReturnType :: TypeExpression}-  deriving (Eq, Ord, Read, Show)--_FunctionTypeExpression = Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"--_FunctionTypeExpression_typeParameters = Core.Name "typeParameters"--_FunctionTypeExpression_parameters = Core.Name "parameters"--_FunctionTypeExpression_returnType = Core.Name "returnType"---- | A TypeScript identifier (variable, function, class name, etc.)-newtype Identifier =-  Identifier {-    unIdentifier :: String}-  deriving (Eq, Ord, Read, Show)--_Identifier = Core.Name "hydra.typeScript.syntax.Identifier"---- | An if statement-data IfStatement =-  IfStatement {-    ifStatementTest :: Expression,-    ifStatementConsequent :: Statement,-    ifStatementAlternate :: (Maybe Statement)}-  deriving (Eq, Ord, Read, Show)--_IfStatement = Core.Name "hydra.typeScript.syntax.IfStatement"--_IfStatement_test = Core.Name "test"--_IfStatement_consequent = Core.Name "consequent"--_IfStatement_alternate = Core.Name "alternate"---- | An import clause (named, default, or namespace import)-data ImportClause =-  ImportClauseNamed ImportSpecifier |-  ImportClauseDefault ImportDefaultSpecifier |-  ImportClauseNamespace ImportNamespaceSpecifier-  deriving (Eq, Ord, Read, Show)--_ImportClause = Core.Name "hydra.typeScript.syntax.ImportClause"--_ImportClause_named = Core.Name "named"--_ImportClause_default = Core.Name "default"--_ImportClause_namespace = Core.Name "namespace"---- | An import declaration-data ImportDeclaration =-  ImportDeclaration {-    -- | What to import-    importDeclarationSpecifiers :: [ImportClause],-    -- | The module to import from-    importDeclarationSource :: StringLiteral}-  deriving (Eq, Ord, Read, Show)--_ImportDeclaration = Core.Name "hydra.typeScript.syntax.ImportDeclaration"--_ImportDeclaration_specifiers = Core.Name "specifiers"--_ImportDeclaration_source = Core.Name "source"---- | A default import specifier (import x from ...)-newtype ImportDefaultSpecifier =-  ImportDefaultSpecifier {-    unImportDefaultSpecifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_ImportDefaultSpecifier = Core.Name "hydra.typeScript.syntax.ImportDefaultSpecifier"---- | A namespace import specifier (import * as x from ...)-newtype ImportNamespaceSpecifier =-  ImportNamespaceSpecifier {-    unImportNamespaceSpecifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_ImportNamespaceSpecifier = Core.Name "hydra.typeScript.syntax.ImportNamespaceSpecifier"---- | A named import specifier (import {x as y} from ...)-data ImportSpecifier =-  ImportSpecifier {-    importSpecifierImported :: Identifier,-    importSpecifierLocal :: Identifier}-  deriving (Eq, Ord, Read, Show)--_ImportSpecifier = Core.Name "hydra.typeScript.syntax.ImportSpecifier"--_ImportSpecifier_imported = Core.Name "imported"--_ImportSpecifier_local = Core.Name "local"---- | A TypeScript interface declaration (interface Foo<T> extends Bar { ... })-data InterfaceDeclaration =-  InterfaceDeclaration {-    -- | Interface name-    interfaceDeclarationName :: Identifier,-    -- | Generic parameters-    interfaceDeclarationTypeParameters :: [TypeParameter],-    -- | Interfaces this one extends-    interfaceDeclarationExtends :: [TypeExpression],-    -- | Property signatures (the interface body)-    interfaceDeclarationMembers :: [PropertySignature]}-  deriving (Eq, Ord, Read, Show)--_InterfaceDeclaration = Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"--_InterfaceDeclaration_name = Core.Name "name"--_InterfaceDeclaration_typeParameters = Core.Name "typeParameters"--_InterfaceDeclaration_extends = Core.Name "extends"--_InterfaceDeclaration_members = Core.Name "members"---- | An intersection type (A & B & C)-type IntersectionTypeExpression = [TypeExpression]--_IntersectionTypeExpression = Core.Name "hydra.typeScript.syntax.IntersectionTypeExpression"---- | A labeled statement-data LabeledStatement =-  LabeledStatement {-    labeledStatementLabel :: Identifier,-    labeledStatementBody :: Statement}-  deriving (Eq, Ord, Read, Show)--_LabeledStatement = Core.Name "hydra.typeScript.syntax.LabeledStatement"--_LabeledStatement_label = Core.Name "label"--_LabeledStatement_body = Core.Name "body"---- | A literal value-data Literal =-  -- | A string literal-  LiteralString StringLiteral |-  -- | A numeric literal-  LiteralNumber NumericLiteral |-  -- | A boolean literal (true or false)-  LiteralBoolean Bool |-  -- | The null literal-  LiteralNull |-  -- | The undefined literal-  LiteralUndefined |-  -- | A BigInt literal (e.g., 123n)-  LiteralBigInt Integer |-  -- | A template literal-  LiteralTemplate TemplateLiteral-  deriving (Eq, Ord, Read, Show)--_Literal = Core.Name "hydra.typeScript.syntax.Literal"--_Literal_string = Core.Name "string"--_Literal_number = Core.Name "number"--_Literal_boolean = Core.Name "boolean"--_Literal_null = Core.Name "null"--_Literal_undefined = Core.Name "undefined"--_Literal_bigInt = Core.Name "bigInt"--_Literal_template = Core.Name "template"---- | A member access expression-data MemberExpression =-  MemberExpression {-    -- | The object-    memberExpressionObject :: Expression,-    -- | The property-    memberExpressionProperty :: Expression,-    -- | Whether using bracket notation (obj[prop])-    memberExpressionComputed :: Bool,-    -- | Whether using optional chaining (?.)-    memberExpressionOptional :: Bool}-  deriving (Eq, Ord, Read, Show)--_MemberExpression = Core.Name "hydra.typeScript.syntax.MemberExpression"--_MemberExpression_object = Core.Name "object"--_MemberExpression_property = Core.Name "property"--_MemberExpression_computed = Core.Name "computed"--_MemberExpression_optional = Core.Name "optional"---- | A method definition in a class-data MethodDefinition =-  MethodDefinition {-    -- | Method name-    methodDefinitionKey :: Expression,-    -- | Method function-    methodDefinitionValue :: FunctionExpression,-    -- | Method kind-    methodDefinitionKind :: MethodKind,-    -- | Whether the key is computed-    methodDefinitionComputed :: Bool,-    -- | Whether the method is static-    methodDefinitionStatic :: Bool}-  deriving (Eq, Ord, Read, Show)--_MethodDefinition = Core.Name "hydra.typeScript.syntax.MethodDefinition"--_MethodDefinition_key = Core.Name "key"--_MethodDefinition_value = Core.Name "value"--_MethodDefinition_kind = Core.Name "kind"--_MethodDefinition_computed = Core.Name "computed"--_MethodDefinition_static = Core.Name "static"---- | The kind of a class method-data MethodKind =-  MethodKindConstructor |-  MethodKindMethod |-  MethodKindGet |-  MethodKindSet-  deriving (Eq, Ord, Read, Show)--_MethodKind = Core.Name "hydra.typeScript.syntax.MethodKind"--_MethodKind_constructor = Core.Name "constructor"--_MethodKind_method = Core.Name "method"--_MethodKind_get = Core.Name "get"--_MethodKind_set = Core.Name "set"---- | A top-level item in a module-data ModuleItem =-  ModuleItemStatement Statement |-  ModuleItemImport ImportDeclaration |-  ModuleItemExport ExportDeclaration |-  -- | A top-level interface declaration-  ModuleItemInterface InterfaceDeclaration |-  -- | A top-level type alias declaration-  ModuleItemTypeAlias TypeAliasDeclaration-  deriving (Eq, Ord, Read, Show)--_ModuleItem = Core.Name "hydra.typeScript.syntax.ModuleItem"--_ModuleItem_statement = Core.Name "statement"--_ModuleItem_import = Core.Name "import"--_ModuleItem_export = Core.Name "export"--_ModuleItem_interface = Core.Name "interface"--_ModuleItem_typeAlias = Core.Name "typeAlias"---- | A module item with optional documentation-data ModuleItemWithComments =-  ModuleItemWithComments {-    -- | The module item-    moduleItemWithCommentsBody :: ModuleItem,-    -- | Optional documentation comment-    moduleItemWithCommentsComments :: (Maybe DocumentationComment)}-  deriving (Eq, Ord, Read, Show)--_ModuleItemWithComments = Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"--_ModuleItemWithComments_body = Core.Name "body"--_ModuleItemWithComments_comments = Core.Name "comments"---- | Named exports (export {x, y as z})-data NamedExport =-  NamedExport {-    namedExportSpecifiers :: [ExportSpecifier],-    namedExportSource :: (Maybe StringLiteral)}-  deriving (Eq, Ord, Read, Show)--_NamedExport = Core.Name "hydra.typeScript.syntax.NamedExport"--_NamedExport_specifiers = Core.Name "specifiers"--_NamedExport_source = Core.Name "source"---- | A numeric literal (integer or floating-point)-data NumericLiteral =-  -- | An integer literal-  NumericLiteralInteger I.Int64 |-  -- | A floating-point literal-  NumericLiteralFloat Double-  deriving (Eq, Ord, Read, Show)--_NumericLiteral = Core.Name "hydra.typeScript.syntax.NumericLiteral"--_NumericLiteral_integer = Core.Name "integer"--_NumericLiteral_float = Core.Name "float"---- | An object expression {a: 1, b: 2}-type ObjectExpression = [Property]--_ObjectExpression = Core.Name "hydra.typeScript.syntax.ObjectExpression"---- | An object destructuring pattern {a, b: c}-data ObjectPattern =-  ObjectPattern {-    -- | The property patterns-    objectPatternProperties :: [ObjectPatternProperty]}-  deriving (Eq, Ord, Read, Show)--_ObjectPattern = Core.Name "hydra.typeScript.syntax.ObjectPattern"--_ObjectPattern_properties = Core.Name "properties"---- | A property in an object pattern-data ObjectPatternProperty =-  ObjectPatternPropertyProperty Property |-  ObjectPatternPropertyRest RestElement-  deriving (Eq, Ord, Read, Show)--_ObjectPatternProperty = Core.Name "hydra.typeScript.syntax.ObjectPatternProperty"--_ObjectPatternProperty_property = Core.Name "property"--_ObjectPatternProperty_rest = Core.Name "rest"---- | An object type with property signatures-type ObjectTypeExpression = [PropertySignature]--_ObjectTypeExpression = Core.Name "hydra.typeScript.syntax.ObjectTypeExpression"---- | A parameterized type (e.g., Array<T>, Map<K, V>)-data ParameterizedTypeExpression =-  ParameterizedTypeExpression {-    parameterizedTypeExpressionBase :: TypeExpression,-    parameterizedTypeExpressionArguments :: [TypeExpression]}-  deriving (Eq, Ord, Read, Show)--_ParameterizedTypeExpression = Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"--_ParameterizedTypeExpression_base = Core.Name "base"--_ParameterizedTypeExpression_arguments = Core.Name "arguments"---- | A binding pattern (for destructuring)-data Pattern =-  -- | A simple identifier binding-  PatternIdentifier Identifier |-  -- | An object destructuring pattern-  PatternObject ObjectPattern |-  -- | An array destructuring pattern-  PatternArray ArrayPattern |-  -- | A pattern with default value-  PatternAssignment AssignmentPattern |-  -- | A rest element (...x)-  PatternRest RestElement |-  -- | A pattern with a TypeScript type annotation (`x: T`)-  PatternTyped TypedPattern-  deriving (Eq, Ord, Read, Show)--_Pattern = Core.Name "hydra.typeScript.syntax.Pattern"--_Pattern_identifier = Core.Name "identifier"--_Pattern_object = Core.Name "object"--_Pattern_array = Core.Name "array"--_Pattern_assignment = Core.Name "assignment"--_Pattern_rest = Core.Name "rest"--_Pattern_typed = Core.Name "typed"---- | A TypeScript program (module)-data Program =-  Program {-    -- | The module items-    programBody :: [ModuleItem],-    -- | Whether this is a module or script-    programSourceType :: SourceType}-  deriving (Eq, Ord, Read, Show)--_Program = Core.Name "hydra.typeScript.syntax.Program"--_Program_body = Core.Name "body"--_Program_sourceType = Core.Name "sourceType"---- | A property in an object expression-data Property =-  Property {-    -- | Property key (identifier, literal, or computed)-    propertyKey :: Expression,-    -- | Property value-    propertyValue :: Expression,-    -- | Property kind (init, get, set)-    propertyKind :: PropertyKind,-    -- | Whether the key is computed [expr]-    propertyComputed :: Bool,-    -- | Whether using shorthand syntax {x} for {x: x}-    propertyShorthand :: Bool}-  deriving (Eq, Ord, Read, Show)--_Property = Core.Name "hydra.typeScript.syntax.Property"--_Property_key = Core.Name "key"--_Property_value = Core.Name "value"--_Property_kind = Core.Name "kind"--_Property_computed = Core.Name "computed"--_Property_shorthand = Core.Name "shorthand"---- | The kind of an object property-data PropertyKind =-  -- | A normal property initialization-  PropertyKindInit |-  -- | A getter-  PropertyKindGet |-  -- | A setter-  PropertyKindSet-  deriving (Eq, Ord, Read, Show)--_PropertyKind = Core.Name "hydra.typeScript.syntax.PropertyKind"--_PropertyKind_init = Core.Name "init"--_PropertyKind_get = Core.Name "get"--_PropertyKind_set = Core.Name "set"---- | A property signature in an object type-data PropertySignature =-  PropertySignature {-    -- | Property name-    propertySignatureName :: Identifier,-    -- | Property type-    propertySignatureType :: TypeExpression,-    -- | Whether the property is optional-    propertySignatureOptional :: Bool,-    -- | Whether the property is readonly-    propertySignatureReadonly :: Bool,-    -- | Optional JSDoc documentation comment to emit above this property-    propertySignatureComments :: (Maybe DocumentationComment)}-  deriving (Eq, Ord, Read, Show)--_PropertySignature = Core.Name "hydra.typeScript.syntax.PropertySignature"--_PropertySignature_name = Core.Name "name"--_PropertySignature_type = Core.Name "type"--_PropertySignature_optional = Core.Name "optional"--_PropertySignature_readonly = Core.Name "readonly"--_PropertySignature_comments = Core.Name "comments"---- | A qualified name like 'module.submodule.name'-type QualifiedName = [Identifier]--_QualifiedName = Core.Name "hydra.typeScript.syntax.QualifiedName"---- | A rest element pattern (...x)-newtype RestElement =-  RestElement {-    unRestElement :: Pattern}-  deriving (Eq, Ord, Read, Show)--_RestElement = Core.Name "hydra.typeScript.syntax.RestElement"---- | A return statement-type ReturnStatement = (Maybe Expression)--_ReturnStatement = Core.Name "hydra.typeScript.syntax.ReturnStatement"---- | Whether the program is a module or script-data SourceType =-  SourceTypeModule |-  SourceTypeScript-  deriving (Eq, Ord, Read, Show)--_SourceType = Core.Name "hydra.typeScript.syntax.SourceType"--_SourceType_module = Core.Name "module"--_SourceType_script = Core.Name "script"---- | A spread element (...x)-newtype SpreadElement =-  SpreadElement {-    unSpreadElement :: Expression}-  deriving (Eq, Ord, Read, Show)--_SpreadElement = Core.Name "hydra.typeScript.syntax.SpreadElement"---- | A TypeScript statement-data Statement =-  -- | An expression statement-  StatementExpression Expression |-  -- | A block statement-  StatementBlock BlockStatement |-  -- | An empty statement (;)-  StatementEmpty |-  -- | A debugger statement-  StatementDebugger |-  -- | A return statement-  StatementReturn ReturnStatement |-  -- | A break statement-  StatementBreak BreakStatement |-  -- | A continue statement-  StatementContinue ContinueStatement |-  -- | An if statement-  StatementIf IfStatement |-  -- | A switch statement-  StatementSwitch SwitchStatement |-  -- | A throw statement-  StatementThrow ThrowStatement |-  -- | A try statement-  StatementTry TryStatement |-  -- | A while statement-  StatementWhile WhileStatement |-  -- | A do-while statement-  StatementDoWhile DoWhileStatement |-  -- | A for statement-  StatementFor ForStatement |-  -- | A for-in statement-  StatementForIn ForInStatement |-  -- | A for-of statement-  StatementForOf ForOfStatement |-  -- | A variable declaration-  StatementVariableDeclaration VariableDeclaration |-  -- | A function declaration-  StatementFunctionDeclaration FunctionDeclaration |-  -- | A class declaration-  StatementClassDeclaration ClassDeclaration |-  -- | A labeled statement-  StatementLabeled LabeledStatement-  deriving (Eq, Ord, Read, Show)--_Statement = Core.Name "hydra.typeScript.syntax.Statement"--_Statement_expression = Core.Name "expression"--_Statement_block = Core.Name "block"--_Statement_empty = Core.Name "empty"--_Statement_debugger = Core.Name "debugger"--_Statement_return = Core.Name "return"--_Statement_break = Core.Name "break"--_Statement_continue = Core.Name "continue"--_Statement_if = Core.Name "if"--_Statement_switch = Core.Name "switch"--_Statement_throw = Core.Name "throw"--_Statement_try = Core.Name "try"--_Statement_while = Core.Name "while"--_Statement_doWhile = Core.Name "doWhile"--_Statement_for = Core.Name "for"--_Statement_forIn = Core.Name "forIn"--_Statement_forOf = Core.Name "forOf"--_Statement_variableDeclaration = Core.Name "variableDeclaration"--_Statement_functionDeclaration = Core.Name "functionDeclaration"--_Statement_classDeclaration = Core.Name "classDeclaration"--_Statement_labeled = Core.Name "labeled"---- | A statement with optional documentation-data StatementWithComments =-  StatementWithComments {-    -- | The statement-    statementWithCommentsBody :: Statement,-    -- | Optional documentation comment-    statementWithCommentsComments :: (Maybe DocumentationComment)}-  deriving (Eq, Ord, Read, Show)--_StatementWithComments = Core.Name "hydra.typeScript.syntax.StatementWithComments"--_StatementWithComments_body = Core.Name "body"--_StatementWithComments_comments = Core.Name "comments"---- | A string literal with quote style-data StringLiteral =-  StringLiteral {-    -- | The string value-    stringLiteralValue :: String,-    -- | Whether to use single quotes (true) or double quotes (false)-    stringLiteralSingleQuote :: Bool}-  deriving (Eq, Ord, Read, Show)--_StringLiteral = Core.Name "hydra.typeScript.syntax.StringLiteral"--_StringLiteral_value = Core.Name "value"--_StringLiteral_singleQuote = Core.Name "singleQuote"---- | A case clause in a switch statement-data SwitchCase =-  SwitchCase {-    -- | The test expression (Nothing for default)-    switchCaseTest :: (Maybe Expression),-    -- | The statements to execute-    switchCaseConsequent :: [Statement]}-  deriving (Eq, Ord, Read, Show)--_SwitchCase = Core.Name "hydra.typeScript.syntax.SwitchCase"--_SwitchCase_test = Core.Name "test"--_SwitchCase_consequent = Core.Name "consequent"---- | A switch statement-data SwitchStatement =-  SwitchStatement {-    switchStatementDiscriminant :: Expression,-    switchStatementCases :: [SwitchCase]}-  deriving (Eq, Ord, Read, Show)--_SwitchStatement = Core.Name "hydra.typeScript.syntax.SwitchStatement"--_SwitchStatement_discriminant = Core.Name "discriminant"--_SwitchStatement_cases = Core.Name "cases"---- | A static part of a template literal-data TemplateElement =-  TemplateElement {-    -- | The raw string value-    templateElementValue :: String,-    -- | Whether this is the last element-    templateElementTail :: Bool}-  deriving (Eq, Ord, Read, Show)--_TemplateElement = Core.Name "hydra.typeScript.syntax.TemplateElement"--_TemplateElement_value = Core.Name "value"--_TemplateElement_tail = Core.Name "tail"---- | A template literal (backtick string with interpolations)-data TemplateLiteral =-  TemplateLiteral {-    -- | The static string parts-    templateLiteralQuasis :: [TemplateElement],-    -- | The interpolated expressions-    templateLiteralExpressions :: [Expression]}-  deriving (Eq, Ord, Read, Show)--_TemplateLiteral = Core.Name "hydra.typeScript.syntax.TemplateLiteral"--_TemplateLiteral_quasis = Core.Name "quasis"--_TemplateLiteral_expressions = Core.Name "expressions"---- | A throw statement-newtype ThrowStatement =-  ThrowStatement {-    unThrowStatement :: Expression}-  deriving (Eq, Ord, Read, Show)--_ThrowStatement = Core.Name "hydra.typeScript.syntax.ThrowStatement"---- | A try statement-data TryStatement =-  TryStatement {-    tryStatementBlock :: BlockStatement,-    tryStatementHandler :: (Maybe CatchClause),-    tryStatementFinalizer :: (Maybe BlockStatement)}-  deriving (Eq, Ord, Read, Show)--_TryStatement = Core.Name "hydra.typeScript.syntax.TryStatement"--_TryStatement_block = Core.Name "block"--_TryStatement_handler = Core.Name "handler"--_TryStatement_finalizer = Core.Name "finalizer"---- | A tuple type ([A, B] or readonly [A, B])-type TupleTypeExpression = [TypeExpression]--_TupleTypeExpression = Core.Name "hydra.typeScript.syntax.TupleTypeExpression"---- | A TypeScript type alias declaration (type Foo<T> = ...)-data TypeAliasDeclaration =-  TypeAliasDeclaration {-    -- | Alias name-    typeAliasDeclarationName :: Identifier,-    -- | Generic parameters-    typeAliasDeclarationTypeParameters :: [TypeParameter],-    -- | The right-hand-side type-    typeAliasDeclarationType :: TypeExpression}-  deriving (Eq, Ord, Read, Show)--_TypeAliasDeclaration = Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"--_TypeAliasDeclaration_name = Core.Name "name"--_TypeAliasDeclaration_typeParameters = Core.Name "typeParameters"--_TypeAliasDeclaration_type = Core.Name "type"---- | A type annotation (for JSDoc comments or TypeScript)-newtype TypeAnnotation =-  TypeAnnotation {-    unTypeAnnotation :: TypeExpression}-  deriving (Eq, Ord, Read, Show)--_TypeAnnotation = Core.Name "hydra.typeScript.syntax.TypeAnnotation"---- | A type expression-data TypeExpression =-  -- | A named type (e.g., 'string', 'number', 'MyClass')-  TypeExpressionIdentifier Identifier |-  -- | A literal type (e.g., 'hello', 42)-  TypeExpressionLiteral Literal |-  -- | An array type-  TypeExpressionArray ArrayTypeExpression |-  -- | A function type-  TypeExpressionFunction FunctionTypeExpression |-  -- | An object type-  TypeExpressionObject ObjectTypeExpression |-  -- | A tuple type (readonly [A, B, C])-  TypeExpressionTuple TupleTypeExpression |-  -- | A union type (A | B)-  TypeExpressionUnion UnionTypeExpression |-  -- | An intersection type (A & B)-  TypeExpressionIntersection IntersectionTypeExpression |-  -- | A parameterized type (e.g., Array<T>, Map<K, V>)-  TypeExpressionParameterized ParameterizedTypeExpression |-  -- | An optional type (T | undefined or T?)-  TypeExpressionOptional TypeExpression |-  -- | A readonly modifier (readonly T[], readonly [A, B])-  TypeExpressionReadonly TypeExpression |-  -- | The 'any' type-  TypeExpressionAny |-  -- | The 'unknown' type-  TypeExpressionUnknown |-  -- | The 'void' type-  TypeExpressionVoid |-  -- | The 'never' type-  TypeExpressionNever-  deriving (Eq, Ord, Read, Show)--_TypeExpression = Core.Name "hydra.typeScript.syntax.TypeExpression"--_TypeExpression_identifier = Core.Name "identifier"--_TypeExpression_literal = Core.Name "literal"--_TypeExpression_array = Core.Name "array"--_TypeExpression_function = Core.Name "function"--_TypeExpression_object = Core.Name "object"--_TypeExpression_tuple = Core.Name "tuple"--_TypeExpression_union = Core.Name "union"--_TypeExpression_intersection = Core.Name "intersection"--_TypeExpression_parameterized = Core.Name "parameterized"--_TypeExpression_optional = Core.Name "optional"--_TypeExpression_readonly = Core.Name "readonly"--_TypeExpression_any = Core.Name "any"--_TypeExpression_unknown = Core.Name "unknown"--_TypeExpression_void = Core.Name "void"--_TypeExpression_never = Core.Name "never"---- | A type parameter (generic)-data TypeParameter =-  TypeParameter {-    -- | Parameter name-    typeParameterName :: Identifier,-    -- | Optional constraint (extends clause)-    typeParameterConstraint :: (Maybe TypeExpression),-    -- | Optional default type-    typeParameterDefault :: (Maybe TypeExpression)}-  deriving (Eq, Ord, Read, Show)--_TypeParameter = Core.Name "hydra.typeScript.syntax.TypeParameter"--_TypeParameter_name = Core.Name "name"--_TypeParameter_constraint = Core.Name "constraint"--_TypeParameter_default = Core.Name "default"---- | A pattern with a TypeScript type annotation (`x: T`)-data TypedPattern =-  TypedPattern {-    -- | The underlying binding pattern-    typedPatternPattern :: Pattern,-    -- | The TypeScript type annotation-    typedPatternType :: TypeExpression}-  deriving (Eq, Ord, Read, Show)--_TypedPattern = Core.Name "hydra.typeScript.syntax.TypedPattern"--_TypedPattern_pattern = Core.Name "pattern"--_TypedPattern_type = Core.Name "type"---- | A unary operation expression-data UnaryExpression =-  UnaryExpression {-    unaryExpressionOperator :: UnaryOperator,-    unaryExpressionArgument :: Expression,-    -- | Whether the operator is prefix (true) or postfix (false)-    unaryExpressionPrefix :: Bool}-  deriving (Eq, Ord, Read, Show)--_UnaryExpression = Core.Name "hydra.typeScript.syntax.UnaryExpression"--_UnaryExpression_operator = Core.Name "operator"--_UnaryExpression_argument = Core.Name "argument"--_UnaryExpression_prefix = Core.Name "prefix"---- | A unary operator-data UnaryOperator =-  -- | --  UnaryOperatorNegate |-  -- | +-  UnaryOperatorPlus |-  -- | !-  UnaryOperatorNot |-  -- | ~-  UnaryOperatorBitwiseNot |-  -- | typeof-  UnaryOperatorTypeof |-  -- | void-  UnaryOperatorVoid |-  -- | delete-  UnaryOperatorDelete |-  -- | ++-  UnaryOperatorIncrement |-  -- | ---  UnaryOperatorDecrement-  deriving (Eq, Ord, Read, Show)--_UnaryOperator = Core.Name "hydra.typeScript.syntax.UnaryOperator"--_UnaryOperator_negate = Core.Name "negate"--_UnaryOperator_plus = Core.Name "plus"--_UnaryOperator_not = Core.Name "not"--_UnaryOperator_bitwiseNot = Core.Name "bitwiseNot"--_UnaryOperator_typeof = Core.Name "typeof"--_UnaryOperator_void = Core.Name "void"--_UnaryOperator_delete = Core.Name "delete"--_UnaryOperator_increment = Core.Name "increment"--_UnaryOperator_decrement = Core.Name "decrement"---- | A union type (A | B | C)-type UnionTypeExpression = [TypeExpression]--_UnionTypeExpression = Core.Name "hydra.typeScript.syntax.UnionTypeExpression"---- | A variable declaration (var, let, const)-data VariableDeclaration =-  VariableDeclaration {-    variableDeclarationKind :: VariableKind,-    variableDeclarationDeclarations :: [VariableDeclarator]}-  deriving (Eq, Ord, Read, Show)--_VariableDeclaration = Core.Name "hydra.typeScript.syntax.VariableDeclaration"--_VariableDeclaration_kind = Core.Name "kind"--_VariableDeclaration_declarations = Core.Name "declarations"---- | A variable declarator (id = init)-data VariableDeclarator =-  VariableDeclarator {-    variableDeclaratorId :: Pattern,-    variableDeclaratorInit :: (Maybe Expression)}-  deriving (Eq, Ord, Read, Show)--_VariableDeclarator = Core.Name "hydra.typeScript.syntax.VariableDeclarator"--_VariableDeclarator_id = Core.Name "id"--_VariableDeclarator_init = Core.Name "init"---- | The kind of variable declaration-data VariableKind =-  VariableKindVar |-  VariableKindLet |-  VariableKindConst-  deriving (Eq, Ord, Read, Show)--_VariableKind = Core.Name "hydra.typeScript.syntax.VariableKind"--_VariableKind_var = Core.Name "var"--_VariableKind_let = Core.Name "let"--_VariableKind_const = Core.Name "const"---- | A while statement-data WhileStatement =-  WhileStatement {-    whileStatementTest :: Expression,-    whileStatementBody :: Statement}-  deriving (Eq, Ord, Read, Show)--_WhileStatement = Core.Name "hydra.typeScript.syntax.WhileStatement"--_WhileStatement_test = Core.Name "test"--_WhileStatement_body = Core.Name "body"
+ src/main/haskell/Hydra/Typescript/Coder.hs view
@@ -0,0 +1,1232 @@+-- Note: this is an automatically generated file. Do not edit.++-- | TypeScript code generator: emits TypeScript type declarations from Hydra modules++module Hydra.Typescript.Coder where++import qualified Hydra.Core.Analysis as Analysis+import qualified Hydra.Core.Annotations as Annotations+import qualified Hydra.Core.Arity as Arity+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Environment as Environment+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Lexical as Lexical+import qualified Hydra.Core.Overlay.Haskell.Lib.Eithers as Eithers+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Maps as Maps+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering+import qualified Hydra.Core.Overlay.Haskell.Lib.Pairs as Pairs+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Names as Names+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Print.Docs as PrintDocs+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Rewriting as Rewriting+import qualified Hydra.Core.Scoping as Scoping+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.Sorting as Sorting+import qualified Hydra.Core.Strip as Strip+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variables as Variables+import qualified Hydra.Core.Variants as Variants+import qualified Hydra.Typescript.Language as Language+import qualified Hydra.Typescript.Serde as Serde+import qualified Hydra.Typescript.Syntax as Syntax+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void+import qualified Data.Map as M+import qualified Data.Set as S++-- | Analyze a term as a TypeScript function, using the Graph as the analysis environment+analyzeTypeScriptFunction :: Typing.InferenceContext -> Graph.Graph -> Model.Term -> Either t0 (Typing.FunctionStructure Graph.Graph)+analyzeTypeScriptFunction cx g term = Analysis.analyzeFunctionTerm cx tsEnvGetGraph tsEnvSetGraph g term++-- | Collect the bound parameter names from a chain of nested foralls, in outer-to-inner order; stops at the first non-forall type+collectForallParams :: Model.Type -> [Model.Name]+collectForallParams t =++      let dt = Strip.deannotateType t+      in case dt of+        Model.TypeForall v0 -> Lists.cons (Model.forallTypeParameter v0) (collectForallParams (Model.forallTypeBody v0))+        _ -> []++-- | Collect the names of every type referenced in a type tree that belongs to a different namespace than the current module, for computing the imports needed at the top of the emitted .ts file+collectImports :: Packaging.ModuleName -> Model.Type -> S.Set Model.Name+collectImports currentNs t =++      let vars = Variables.freeVariablesInType t+      in (filterNonLocalNames currentNs vars)++-- | Collect type imports referenced inside a term tree (lambda bodies, type applications, let-binding schemes), supplementing the top-level typeScheme walk+collectInnerTypeImports :: Packaging.ModuleName -> Model.Term -> S.Set Model.Name+collectInnerTypeImports currentNs term =++      let subs = Rewriting.subterms term+          ownVars =+                  case (Strip.deannotateTerm term) of+                    Model.TermLambda v0 -> Optionals.match (Model.lambdaDomain v0) Sets.empty (\d -> Variables.freeVariablesInType d)+                    Model.TermTypeApplication v0 -> Variables.freeVariablesInType (Model.typeApplicationTermType v0)+                    Model.TermTypeLambda _ -> Sets.empty+                    Model.TermLet v0 -> Lists.foldl (\acc -> \b -> Optionals.match (Model.bindingTypeScheme b) acc (\ts -> Sets.union acc (Variables.freeVariablesInType (Model.typeSchemeBody ts)))) Sets.empty (Model.letBindings v0)+                    _ -> Sets.empty+          childVars = Lists.foldl (\acc -> \s -> Sets.union acc (collectInnerTypeImports currentNs s)) Sets.empty subs+      in (filterNonLocalNames currentNs (Sets.union ownVars childVars))++-- | Like collectImports but walks a Term, gathering free term-level variables that resolve to a different module+collectTermImports :: Packaging.ModuleName -> Model.Term -> S.Set Model.Name+collectTermImports currentNs t =++      let vars = Variables.freeVariablesInTerm t+      in (filterNonLocalNames currentNs vars)++-- | Decode a canonical decimal digit string into a ((sign, digits), scale) nested pair+decimalDigitsAndScale :: String -> ((String, String), Int)+decimalDigitsAndScale s =++      let eParts = Strings.splitOn "e" s+          mantissa = Optionals.withDefault "" (Lists.head eParts)+          expText = Optionals.withDefault "" (Lists.head (Lists.drop 1 eParts))+          expTextUnplussed =+                  Logic.ifElse (Equality.equal (Optionals.withDefault 0 (Strings.charAt 0 expText)) 43) (Strings.fromList (Lists.drop 1 (Strings.toList expText))) expText+          expPart = Optionals.withDefault 0 (Literals.parseInt32 expTextUnplussed)+          isNeg = Equality.equal (Optionals.withDefault 0 (Strings.charAt 0 mantissa)) 45+          unsigned = Logic.ifElse isNeg (Strings.fromList (Lists.drop 1 (Strings.toList mantissa))) mantissa+          dotParts = Strings.splitOn "." unsigned+          intPart = Optionals.withDefault "" (Lists.head dotParts)+          fracPart = Optionals.withDefault "" (Lists.head (Lists.drop 1 dotParts))+          rawDigits = Strings.concat2 intPart fracPart+          rawScale = Math.sub (Strings.length fracPart) expPart+          sign = Logic.ifElse isNeg "-" ""+      in (Logic.ifElse (Ordering.lt rawScale 0) ((sign, (Strings.concat2 rawDigits (Strings.fromList (Lists.replicate (Math.negate rawScale) 48)))), 0) ((sign, rawDigits), rawScale))++-- | Find the free variables of a term that are referenced eagerly, i.e. outside of any nested lambda body; used to break false dependency cycles caused by DSL-level thunks such as hydra.core.parsers.lazy+eagerFreeVariablesInTerm :: Model.Term -> S.Set Model.Name+eagerFreeVariablesInTerm term =++      let dfltVars =+              \_ -> Lists.foldl (\s -> \t -> Sets.union s (eagerFreeVariablesInTerm t)) Sets.empty (Rewriting.subterms term)+      in case term of+        Model.TermLambda _ -> Sets.empty+        Model.TermLet v0 -> Sets.difference (dfltVars ()) (Sets.fromList (Lists.map (\b -> Model.bindingName b) (Model.letBindings v0)))+        Model.TermVariable v0 -> Sets.singleton v0+        _ -> dfltVars ()++-- | Encode a let-binding as a TS statement inside an enclosing function body, hoisting lambda-valued bindings as nested function declarations+encodeBindingAsStatement :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Model.Binding -> Syntax.Statement+encodeBindingAsStatement cx g currentNs b =++      let bname = Model.bindingName b+          lname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf bname)+          bterm = Model.bindingTerm b+          dterm = Strip.deannotateTerm bterm+      in case dterm of+        Model.TermLambda _ ->+          let innerFunDecl =+                  functionDeclarationFromTerm cx g currentNs lname bterm (Optionals.bind (Model.bindingTypeScheme b) (\ts -> Just (Model.typeSchemeBody ts)))+          in (Syntax.StatementFunctionDeclaration innerFunDecl)+        _ ->+          let expr = encodeTerm cx g currentNs bterm+              declarator =+                      Syntax.VariableDeclarator {+                        Syntax.variableDeclaratorId = (Syntax.PatternIdentifier (tsIdent lname)),+                        Syntax.variableDeclaratorInit = (Just expr)}+              varDecl =+                      Syntax.VariableDeclaration {+                        Syntax.variableDeclarationKind = Syntax.VariableKindConst,+                        Syntax.variableDeclarationDeclarations = [+                          declarator]}+          in (Syntax.StatementVariableDeclaration varDecl)++-- | Emit a fully-applied primitive call with selected arguments wrapped in thunks, per a parallel list of laziness flags+encodeLazyCall :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Model.Term -> [Model.Term] -> [Bool] -> Syntax.Expression+encodeLazyCall cx g currentNs headTerm args lazyFlags =++      let headExpr = encodeTerm cx g currentNs headTerm+          paired = Lists.zip args lazyFlags+          renderArg =+                  \p ->+                    let argTerm = Pairs.first p+                        isLazy = Pairs.second p+                        expr = encodeTerm cx g currentNs argTerm+                    in (Logic.ifElse isLazy (tsArrow [] expr) expr)+          argExprs = Lists.map renderArg paired+      in (tsCall headExpr argExprs)++-- | Render a Hydra literal as a TypeScript expression+encodeLiteral :: Model.Literal -> Syntax.Expression+encodeLiteral lit =++      let litExpr = \lit -> Syntax.ExpressionLiteral lit+          numLit = \i -> litExpr (Syntax.LiteralNumber (Syntax.NumericLiteralInteger i))+          floatLit = \f -> litExpr (Syntax.LiteralNumber (Syntax.NumericLiteralFloat f))+          strLit =+                  \s -> litExpr (Syntax.LiteralString (Syntax.StringLiteral {+                    Syntax.stringLiteralValue = s,+                    Syntax.stringLiteralSingleQuote = False}))+          boolLit = \b -> litExpr (Syntax.LiteralBoolean b)+          bigIntCall = \txt -> tsCall (tsExprIdent "BigInt") [+                strLit txt]+      in case lit of+        Model.LiteralBinary v0 -> strLit (Literals.binaryToBase64 v0)+        Model.LiteralBoolean v0 -> boolLit v0+        Model.LiteralDecimal v0 ->+          let parts = decimalDigitsAndScale (Literals.printDecimal v0)+              signDigits = Pairs.first parts+              scale = Pairs.second parts+              coefficientText = Strings.concat2 (Pairs.first signDigits) (Pairs.second signDigits)+          in (tsObject [+            ("coefficient", (bigIntCall coefficientText)),+            ("scale", (numLit (Literals.bigintToInt64 (Literals.int32ToBigint scale))))])+        Model.LiteralString v0 -> strLit v0+        Model.LiteralInteger v0 -> case v0 of+          Model.IntegerValueBigint v1 -> bigIntCall (Literals.printBigint v1)+          Model.IntegerValueInt8 v1 -> numLit (Literals.bigintToInt64 (Literals.int8ToBigint v1))+          Model.IntegerValueInt16 v1 -> numLit (Literals.bigintToInt64 (Literals.int16ToBigint v1))+          Model.IntegerValueInt32 v1 -> numLit (Literals.bigintToInt64 (Literals.int32ToBigint v1))+          Model.IntegerValueInt64 v1 -> bigIntCall (Literals.printInt64 v1)+          Model.IntegerValueUint8 v1 -> numLit (Literals.bigintToInt64 (Literals.uint8ToBigint v1))+          Model.IntegerValueUint16 v1 -> numLit (Literals.bigintToInt64 (Literals.uint16ToBigint v1))+          Model.IntegerValueUint32 v1 -> numLit (Literals.bigintToInt64 (Literals.uint32ToBigint v1))+          Model.IntegerValueUint64 v1 -> bigIntCall (Literals.printUint64 v1)+          _ -> numLit (Literals.bigintToInt64 (Literals.int32ToBigint 0))+        Model.LiteralFloat v0 -> case v0 of+          Model.FloatValueFloat32 v1 -> floatLit (Literals.float32ToFloat64 v1)+          Model.FloatValueFloat64 v1 -> floatLit v1+          _ -> floatLit 0.0+        _ -> litExpr Syntax.LiteralNull++-- | Map a Hydra literal type to a TypeScript type expression+encodeLiteralType :: Model.LiteralType -> Syntax.TypeExpression+encodeLiteralType lt =+    case lt of+      Model.LiteralTypeBinary -> tsParamApp1 "ReadonlyArray" (tsNamedType "number")+      Model.LiteralTypeBoolean -> tsNamedType "boolean"+      Model.LiteralTypeDecimal -> Syntax.TypeExpressionObject [+        tsPropSig "coefficient" False (tsNamedType "bigint"),+        (tsPropSig "scale" False (tsNamedType "number"))]+      Model.LiteralTypeFloat v0 -> case v0 of+        Model.FloatTypeFloat32 -> tsNamedType "number"+        Model.FloatTypeFloat64 -> tsNamedType "number"+      Model.LiteralTypeInteger v0 -> case v0 of+        Model.IntegerTypeBigint -> tsNamedType "bigint"+        Model.IntegerTypeInt8 -> tsNamedType "number"+        Model.IntegerTypeInt16 -> tsNamedType "number"+        Model.IntegerTypeInt32 -> tsNamedType "number"+        Model.IntegerTypeInt64 -> tsNamedType "bigint"+        Model.IntegerTypeUint8 -> tsNamedType "number"+        Model.IntegerTypeUint16 -> tsNamedType "number"+        Model.IntegerTypeUint32 -> tsNamedType "number"+        Model.IntegerTypeUint64 -> tsNamedType "bigint"+      Model.LiteralTypeString -> tsNamedType "string"++-- | Build a TS function parameter as a pattern, typed unless the domain is the analyze pass's untyped-variable sentinel+encodeParam :: t0 -> t1 -> Packaging.ModuleName -> Model.Name -> Model.Type -> Syntax.Pattern+encodeParam cx g currentNs pname dom =++      let nstr = sanitizeParamName pname+      in case (Strip.deannotateType dom) of+        Model.TypeVariable _ -> tsTypedIdent nstr Syntax.TypeExpressionAny+        _ -> tsTypedIdent nstr (encodeTypeOrAny cx g currentNs dom)++-- | Render a Hydra term as a TypeScript expression+encodeTerm :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Model.Term -> Syntax.Expression+encodeTerm cx g currentNs term =+    case term of+      Model.TermAnnotated v0 -> encodeTerm cx g currentNs (Model.annotatedTermBody v0)+      Model.TermLiteral v0 -> encodeLiteral v0+      Model.TermVariable v0 ->+        let local = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf v0)+            varExpr =+                    Optionals.match (Names.moduleNameOf v0) (tsExprIdent local) (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) (tsExprIdent local) (+                      let nsSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))+                          alias = Strings.concat2 "$mod_" (Strings.join "_" nsSegs)+                      in (tsMember (tsExprIdent alias) local)))+        in (Optionals.match (Lexical.lookupPrimitive g v0) varExpr (\prim ->+          let isZeroArityEffect =+                  Logic.and (Equality.equal (Arity.primitiveArity prim) 0) (Logic.not (Packaging.primitiveDefinitionIsPure (Graph.primitiveDefinition prim)))+          in (Logic.ifElse isZeroArityEffect (tsCall varExpr []) varExpr)))+      Model.TermLambda v0 ->+        let lamTerm = Model.TermLambda v0+            fsLE = analyzeTypeScriptFunction cx g lamTerm+            fsL =+                    Eithers.either (\_err -> Typing.FunctionStructure {+                      Typing.functionStructureTypeParams = [],+                      Typing.functionStructureParams = [],+                      Typing.functionStructureBindings = [],+                      Typing.functionStructureBody = lamTerm,+                      Typing.functionStructureDomains = [],+                      Typing.functionStructureCodomain = Nothing,+                      Typing.functionStructureEnvironment = g}) (\ok -> ok) fsLE+            fsLParams = Typing.functionStructureParams fsL+            fsLDoms = Typing.functionStructureDomains fsL+            fsLBindings = Typing.functionStructureBindings fsL+            fsLBody = Typing.functionStructureBody fsL+            fsLEnv = Typing.functionStructureEnvironment fsL+            innerBody =+                    Logic.ifElse (Lists.isEmpty fsLBindings) fsLBody (Model.TermLet (Model.Let {+                      Model.letBindings = fsLBindings,+                      Model.letBody = fsLBody}))+            paramAcc =+                    Lists.foldl (\acc -> \pn ->+                      let idx = Pairs.first acc+                          pats = Pairs.second acc+                          raw = Names.localNameOf pn+                          uniq = Logic.ifElse (Equality.equal raw "_") (Strings.concat2 "_" (Literals.printInt32 idx)) raw+                          pat = tsTypedIdent (Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords uniq) Syntax.TypeExpressionAny+                      in (Math.add idx 1, (Lists.concat2 pats [+                        pat]))) (0, []) fsLParams+            paramPatterns = Pairs.second paramAcc+            bExpr = encodeTerm cx fsLEnv currentNs innerBody+        in (tsArrowTyped paramPatterns bExpr)+      Model.TermApplication v0 ->+        let asTerm = Model.TermApplication v0+            flat = flattenApplication asTerm+            headTerm = Pairs.first flat+            args = Pairs.second flat+            mName = termHeadVariable headTerm+            argc = Lists.length args+            lazyMaybe =+                    Optionals.match mName Nothing (\n ->+                      let lazyFlags = lazyFlagsForPrimitive g n+                          anyLazy = Lists.foldl (\b -> \f -> Logic.or b f) False lazyFlags+                      in (Logic.ifElse (Logic.and anyLazy (Equality.equal argc (Lists.length lazyFlags))) (Just (encodeLazyCall cx g currentNs headTerm args lazyFlags)) Nothing))+        in (Optionals.match lazyMaybe (+          let dHead = Strip.deannotateAndDetypeTerm headTerm+              encArgs = Lists.map (encodeTerm cx g currentNs) args+          in case dHead of+            Model.TermProject v1 -> Logic.ifElse (Lists.isEmpty encArgs) (+              let headExpr = encodeTerm cx g currentNs headTerm+              in headExpr) (+              let fname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Model.unName (Model.projectionFieldName v1))+                  firstA = Optionals.withDefault (tsExprIdent "undefined") (Lists.head encArgs)+                  restA = Lists.drop 1 encArgs+                  fieldExpr = tsMember firstA fname+              in (Logic.ifElse (Lists.isEmpty restA) fieldExpr (tsCall fieldExpr restA)))+            Model.TermUnwrap _ -> Logic.ifElse (Lists.isEmpty encArgs) (+              let headExpr = encodeTerm cx g currentNs headTerm+              in headExpr) (+              let firstA = Optionals.withDefault (tsExprIdent "undefined") (Lists.head encArgs)+                  restA = Lists.drop 1 encArgs+                  valueExpr = tsMember firstA "value"+              in (Logic.ifElse (Lists.isEmpty restA) valueExpr (tsCall valueExpr restA)))+            _ ->+              let headExpr = encodeTerm cx g currentNs headTerm+              in (tsCall headExpr encArgs)) (\e -> e))+      Model.TermUnit -> tsUndefined+      Model.TermList v0 -> tsArray (Lists.map (encodeTerm cx g currentNs) v0)+      Model.TermSet v0 -> tsNew (tsExprIdent "Set") [+        tsArray (Lists.map (encodeTerm cx g currentNs) (Sets.toList v0))]+      Model.TermMap v0 -> tsNew (tsExprIdent "Map") [+        tsArray (Lists.map (\entry -> tsArray [+          encodeTerm cx g currentNs (Pairs.first entry),+          (encodeTerm cx g currentNs (Pairs.second entry))]) (Maps.toList v0))]+      Model.TermPair v0 -> tsAsAny (tsArray [+        encodeTerm cx g currentNs (Pairs.first v0),+        (encodeTerm cx g currentNs (Pairs.second v0))])+      Model.TermOptional v0 -> Optionals.match v0 (tsAsAny (tsObject [+        ("tag", (tsExprStr "none"))])) (\v -> tsAsAny (tsObject [+        ("tag", (tsExprStr "given")),+        ("value", (encodeTerm cx g currentNs v))]))+      Model.TermRecord v0 ->+        let fields = Model.recordFields v0+        in (tsObject (Lists.map (\f -> (+          Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Model.unName (Model.fieldName f)),+          (encodeTerm cx g currentNs (Model.fieldTerm f)))) fields))+      Model.TermInject v0 ->+        let fname = Model.unName (Model.fieldName (Model.injectionField v0))+            fterm = Model.fieldTerm (Model.injectionField v0)+            isUnit =+                    case (Strip.deannotateTerm fterm) of+                      Model.TermUnit -> True+                      _ -> False+        in (Logic.ifElse isUnit (tsAsAny (tsObject [+          ("tag", (tsExprStr fname))])) (tsAsAny (tsObject [+          ("tag", (tsExprStr fname)),+          ("value", (encodeTerm cx g currentNs fterm))])))+      Model.TermWrap v0 -> tsObject [+        ("value", (encodeTerm cx g currentNs (Model.wrappedTermBody v0)))]+      Model.TermLet v0 ->+        let lt2 = thunkLazyLet v0+            bindings = sortBindingsTopologically (Model.letBindings lt2)+            body = Model.letBody lt2+            encodedBody = encodeTerm cx g currentNs body+            bindingStmts = Lists.map (\b -> encodeBindingAsStatement cx g currentNs b) bindings+            returnStmt = Syntax.StatementReturn (Just encodedBody)+            stmts = Lists.concat2 bindingStmts [+                  returnStmt]+            iifeArrow =+                    Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {+                      Syntax.arrowFunctionExpressionParams = [],+                      Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyBlock stmts),+                      Syntax.arrowFunctionExpressionAsync = False})+        in (tsCall iifeArrow [])+      Model.TermTypeApplication v0 -> encodeTerm cx g currentNs (Model.typeApplicationTermBody v0)+      Model.TermTypeLambda v0 -> encodeTerm cx g currentNs (Model.typeLambdaBody v0)+      Model.TermProject v0 ->+        let fname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Model.unName (Model.projectionFieldName v0))+        in (tsArrowTyped [+          tsTypedIdent "x" Syntax.TypeExpressionAny] (tsMember (tsExprIdent "x") fname))+      Model.TermUnwrap _ -> tsArrowTyped [+        tsTypedIdent "x" Syntax.TypeExpressionAny] (tsMember (tsExprIdent "x") "value")+      Model.TermCases v0 ->+        let armFields = Model.caseStatementCases v0+            defaultMaybe = Model.caseStatementDefault v0+            uVar = "u"+            uExpr = tsAsAny (tsExprIdent uVar)+            uTag = tsMember uExpr "tag"+            uValue = tsMember uExpr "value"+            armCases =+                    Lists.map (\f ->+                      let fname = Model.unName (Model.caseAlternativeName f)+                          armExpr = encodeTerm cx g currentNs (Model.caseAlternativeHandler f)+                          callExpr = tsCall armExpr [+                                uValue]+                      in Syntax.SwitchCase {+                        Syntax.switchCaseTest = (Just (tsExprStr fname)),+                        Syntax.switchCaseConsequent = [+                          Syntax.StatementReturn (Just callExpr)]}) armFields+            defaultCase =+                    Optionals.match defaultMaybe (Syntax.SwitchCase {+                      Syntax.switchCaseTest = Nothing,+                      Syntax.switchCaseConsequent = [+                        Syntax.StatementReturn (Just (tsCall (tsExprIdent "(() => { throw new Error('unmatched case'); })") []))]}) (\dt ->+                      let dExpr = encodeTerm cx g currentNs dt+                      in Syntax.SwitchCase {+                        Syntax.switchCaseTest = Nothing,+                        Syntax.switchCaseConsequent = [+                          Syntax.StatementReturn (Just dExpr)]})+            allCases = Lists.concat2 armCases [+                  defaultCase]+            switchStmt =+                    Syntax.StatementSwitch (Syntax.SwitchStatement {+                      Syntax.switchStatementDiscriminant = uTag,+                      Syntax.switchStatementCases = allCases})+        in (Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {+          Syntax.arrowFunctionExpressionParams = [+            Syntax.PatternIdentifier (tsIdent uVar)],+          Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyBlock [+            switchStmt]),+          Syntax.arrowFunctionExpressionAsync = False}))+      Model.TermEither v0 -> Eithers.either (\l -> tsAsAny (tsObject [+        ("tag", (tsExprStr "left")),+        ("value", (encodeTerm cx g currentNs l))])) (\r -> tsAsAny (tsObject [+        ("tag", (tsExprStr "right")),+        ("value", (encodeTerm cx g currentNs r))])) v0+      _ -> tsExprIdent "null"++-- | Render a Hydra term definition as a TypeScript module item+encodeTermDefinition :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Packaging.TermDefinition -> (Maybe String, Syntax.ModuleItem)+encodeTermDefinition cx g currentNs td =++      let name = Packaging.termDefinitionName td+          lname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf name)+          rawTerm = Packaging.termDefinitionBody td+          mdoc = Eithers.either (\_ -> Nothing) (\x_ -> x_) (Annotations.getTermDescription cx g rawTerm)+          asExport = \stmt -> Syntax.ModuleItemExport (Syntax.ExportDeclarationDeclaration stmt)+          mScheme =+                  Optionals.bind (Packaging.termDefinitionSignature td) (\sig -> Just (Model.typeSchemeBody (Scoping.termSignatureToTypeScheme sig)))+          dterm = Strip.deannotateTerm rawTerm+          funDecl = functionDeclarationFromTerm cx g currentNs lname rawTerm mScheme+          asFunDecl = asExport (Syntax.StatementFunctionDeclaration funDecl)+          item =+                  case dterm of+                    Model.TermLambda _ -> asFunDecl+                    Model.TermTypeLambda _ -> asFunDecl+                    _ ->+                      let expr = encodeTerm cx g currentNs rawTerm+                          declarator =+                                  Syntax.VariableDeclarator {+                                    Syntax.variableDeclaratorId = (Syntax.PatternIdentifier (tsIdent lname)),+                                    Syntax.variableDeclaratorInit = (Just expr)}+                          varDecl =+                                  Syntax.VariableDeclaration {+                                    Syntax.variableDeclarationKind = Syntax.VariableKindConst,+                                    Syntax.variableDeclarationDeclarations = [+                                      declarator]}+                      in (asExport (Syntax.StatementVariableDeclaration varDecl))+      in (mdoc, item)++-- | Map a Hydra type to a TypeScript type expression+encodeType :: t0 -> t1 -> Packaging.ModuleName -> Model.Type -> Either t2 Syntax.TypeExpression+encodeType cx g currentNs t =++      let typ = Strip.deannotateType t+      in case typ of+        Model.TypeAnnotated v0 -> encodeType cx g currentNs (Model.annotatedTypeBody v0)+        Model.TypeApplication v0 ->+          let fnTyp = Model.applicationTypeFunction v0+              argTyp = Model.applicationTypeArgument v0+          in (Eithers.bind (encodeType cx g currentNs fnTyp) (\encFn -> Eithers.bind (encodeType cx g currentNs argTyp) (\encArg -> case encFn of+            Syntax.TypeExpressionIdentifier _ -> Right (Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {+              Syntax.parameterizedTypeExpressionBase = encFn,+              Syntax.parameterizedTypeExpressionArguments = [+                encArg]}))+            Syntax.TypeExpressionParameterized v1 -> Right (Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {+              Syntax.parameterizedTypeExpressionBase = (Syntax.parameterizedTypeExpressionBase v1),+              Syntax.parameterizedTypeExpressionArguments = (Lists.concat2 (Syntax.parameterizedTypeExpressionArguments v1) [+                encArg])}))+            _ -> Right encFn)))+        Model.TypeForall v0 -> encodeType cx g currentNs (Model.forallTypeBody v0)+        Model.TypeUnit -> Right Syntax.TypeExpressionVoid+        Model.TypeVoid -> Right Syntax.TypeExpressionNever+        Model.TypeLiteral v0 -> Right (encodeLiteralType v0)+        Model.TypeList v0 -> Eithers.map (\enc -> tsParamApp1 "ReadonlyArray" enc) (encodeType cx g currentNs v0)+        Model.TypeSet v0 -> Eithers.map tsReadonlySet (encodeType cx g currentNs v0)+        Model.TypeMap v0 -> Eithers.bind (encodeType cx g currentNs (Model.mapTypeKeys v0)) (\kt -> Eithers.bind (encodeType cx g currentNs (Model.mapTypeValues v0)) (\vt -> Right (tsReadonlyMap kt vt)))+        Model.TypeOptional v0 -> Eithers.map (\enc -> Syntax.TypeExpressionUnion [+          Syntax.TypeExpressionObject [+            tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+              Syntax.stringLiteralValue = "given",+              Syntax.stringLiteralSingleQuote = False}))),+            (tsPropSig "value" False enc)],+          (Syntax.TypeExpressionObject [+            tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+              Syntax.stringLiteralValue = "none",+              Syntax.stringLiteralSingleQuote = False})))])]) (encodeType cx g currentNs v0)+        Model.TypeEither v0 -> Eithers.bind (encodeType cx g currentNs (Model.eitherTypeLeft v0)) (\lt -> Eithers.bind (encodeType cx g currentNs (Model.eitherTypeRight v0)) (\rt ->+          let leftArm =+                  Syntax.TypeExpressionObject [+                    tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+                      Syntax.stringLiteralValue = "left",+                      Syntax.stringLiteralSingleQuote = False}))),+                    (tsPropSig "value" False lt)]+              rightArm =+                      Syntax.TypeExpressionObject [+                        tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+                          Syntax.stringLiteralValue = "right",+                          Syntax.stringLiteralSingleQuote = False}))),+                        (tsPropSig "value" False rt)]+          in (Right (Syntax.TypeExpressionUnion [+            leftArm,+            rightArm]))))+        Model.TypePair v0 -> Eithers.bind (encodeType cx g currentNs (Model.pairTypeFirst v0)) (\ft -> Eithers.bind (encodeType cx g currentNs (Model.pairTypeSecond v0)) (\st -> Right (tsTuple [+          ft,+          st])))+        Model.TypeFunction v0 -> Eithers.bind (encodeType cx g currentNs (Model.functionTypeDomain v0)) (\dom -> Eithers.bind (encodeType cx g currentNs (Model.functionTypeCodomain v0)) (\cod -> Right (Syntax.TypeExpressionFunction (Syntax.FunctionTypeExpression {+          Syntax.functionTypeExpressionTypeParameters = [],+          Syntax.functionTypeExpressionParameters = [+            dom],+          Syntax.functionTypeExpressionReturnType = cod}))))+        Model.TypeVariable v0 ->+          let lname = Formatting.capitalize (Names.localNameOf v0)+          in (Optionals.match (Names.moduleNameOf v0) (Right (tsNamedType lname)) (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) (Right (tsNamedType lname)) (+            let nsSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))+                typeAlias = Strings.concat2 "$type_" (Strings.join "_" nsSegs)+            in (Right (tsNamedType (Strings.concat [+              typeAlias,+              ".",+              lname]))))))+        Model.TypeWrap v0 -> encodeType cx g currentNs v0+        Model.TypeRecord v0 -> Eithers.bind (Eithers.mapList (\ft ->+          let fname = Model.unName (Model.fieldTypeName ft)+              ftyp = Model.fieldTypeType ft+          in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (tsPropSig fname False sftyp)))) v0) (\members -> Right (Syntax.TypeExpressionObject members))+        Model.TypeUnion v0 -> Eithers.bind (Eithers.mapList (\ft ->+          let fname = Model.unName (Model.fieldTypeName ft)+              ftyp = Model.fieldTypeType ft+          in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (Syntax.TypeExpressionObject [+            tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+              Syntax.stringLiteralValue = fname,+              Syntax.stringLiteralSingleQuote = False}))),+            (tsPropSig "value" False sftyp)])))) v0) (\arms -> Right (Syntax.TypeExpressionUnion arms))++-- | Encode a Hydra type definition as an interface declaration, a discriminated-union type alias, or a plain type alias+encodeTypeDefinition :: t0 -> Graph.Graph -> Packaging.ModuleName -> Packaging.TypeDefinition -> Either Errors.Error (Maybe String, Syntax.ModuleItem)+encodeTypeDefinition cx g currentNs tdef =++      let name = Packaging.typeDefinitionName tdef+          typScheme = Packaging.typeDefinitionBody tdef+          rawTyp = Model.typeSchemeBody typScheme+          lname = Formatting.capitalize (Names.localNameOf name)+      in (Eithers.bind (Annotations.getTypeDescription cx g rawTyp) (\mdoc ->+        let forallParams = collectForallParams rawTyp+            typ = stripForalls rawTyp+            typeParams = Lists.map (\v -> tsParam (Formatting.capitalize (Model.unName v))) forallParams+            dtyp = Strip.deannotateType typ+        in case dtyp of+          Model.TypeRecord v0 -> Eithers.bind (Eithers.mapList (\ft ->+            let fname = Model.unName (Model.fieldTypeName ft)+                ftyp = Model.fieldTypeType ft+            in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Eithers.bind (Annotations.commentsFromFieldType cx g ft) (\mfdoc -> Right (tsPropSigWithDoc fname False sftyp (mkDocComment mfdoc)))))) v0) (\members -> Right (+            mdoc,+            (Syntax.ModuleItemInterface (Syntax.InterfaceDeclaration {+              Syntax.interfaceDeclarationName = (tsIdent lname),+              Syntax.interfaceDeclarationTypeParameters = typeParams,+              Syntax.interfaceDeclarationExtends = [],+              Syntax.interfaceDeclarationMembers = members}))))+          Model.TypeUnion v0 -> Eithers.bind (Eithers.mapList (\ft ->+            let fname = Model.unName (Model.fieldTypeName ft)+                ftyp = Model.fieldTypeType ft+                dtyp2 = Strip.deannotateType ftyp+            in case dtyp2 of+              Model.TypeUnit -> Right (Syntax.TypeExpressionObject [+                tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+                  Syntax.stringLiteralValue = fname,+                  Syntax.stringLiteralSingleQuote = False})))])+              _ -> Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (Syntax.TypeExpressionObject [+                tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+                  Syntax.stringLiteralValue = fname,+                  Syntax.stringLiteralSingleQuote = False}))),+                (tsPropSig "value" False sftyp)]))) v0) (\arms -> Right (+            mdoc,+            (Syntax.ModuleItemTypeAlias (Syntax.TypeAliasDeclaration {+              Syntax.typeAliasDeclarationName = (tsIdent lname),+              Syntax.typeAliasDeclarationTypeParameters = typeParams,+              Syntax.typeAliasDeclarationType = (Syntax.TypeExpressionUnion arms)}))))+          Model.TypeWrap v0 -> Eithers.bind (encodeType cx g currentNs v0) (\sftyp -> Right (+            mdoc,+            (Syntax.ModuleItemInterface (Syntax.InterfaceDeclaration {+              Syntax.interfaceDeclarationName = (tsIdent lname),+              Syntax.interfaceDeclarationTypeParameters = typeParams,+              Syntax.interfaceDeclarationExtends = [],+              Syntax.interfaceDeclarationMembers = [+                tsPropSig "value" False sftyp]}))))+          _ -> Eithers.bind (encodeType cx g currentNs typ) (\styp -> Right (+            mdoc,+            (Syntax.ModuleItemTypeAlias (Syntax.TypeAliasDeclaration {+              Syntax.typeAliasDeclarationName = (tsIdent lname),+              Syntax.typeAliasDeclarationTypeParameters = typeParams,+              Syntax.typeAliasDeclarationType = styp}))))))++-- | Try to encode a Hydra type as a TS type expression, falling back to any if encodeType fails+encodeTypeOrAny :: t0 -> t1 -> Packaging.ModuleName -> Model.Type -> Syntax.TypeExpression+encodeTypeOrAny cx g currentNs typ =+    Eithers.either (\_e -> Syntax.TypeExpressionAny) (\te -> te) (encodeType cx g currentNs typ)++-- | Keep only names whose module differs from the current module's+filterNonLocalNames :: Packaging.ModuleName -> S.Set Model.Name -> S.Set Model.Name+filterNonLocalNames currentNs names =+    Sets.fromList (Optionals.givens (Lists.map (\n -> Optionals.match (Names.moduleNameOf n) Nothing (\nameNs -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName nameNs)) Nothing (Just n))) (Sets.toList names)))++-- | Walk an application spine, returning the innermost head term and its arguments in application order+flattenApplication :: Model.Term -> (Model.Term, [Model.Term])+flattenApplication t =++      let dt = Strip.deannotateTerm t+      in case dt of+        Model.TermApplication v0 ->+          let inner = flattenApplication (Model.applicationFunction v0)+              head_ = Pairs.first inner+              prevArgs = Pairs.second inner+          in (head_, (Lists.concat2 prevArgs (Lists.singleton (Model.applicationArgument v0))))+        _ -> (t, [])++-- | Rewrite free occurrences of the given target names from x to x(undefined), forcing a thunked binding created by thunkLazyLet+forceLazyRefs :: S.Set Model.Name -> Model.Term -> Model.Term+forceLazyRefs targets0 term0 =+    Rewriting.rewriteTermWithContext (\recurse0 -> \targets -> \term -> case term of+      Model.TermVariable v0 -> Logic.ifElse (Sets.member v0 targets) (Model.TermApplication (Model.Application {+        Model.applicationFunction = (Model.TermVariable v0),+        Model.applicationArgument = Model.TermUnit})) term+      Model.TermLambda v0 ->+        let innerTargets = Sets.delete (Model.lambdaParameter v0) targets+        in (recurse0 innerTargets term)+      Model.TermLet v0 ->+        let boundNames = Sets.fromList (Lists.map Model.bindingName (Model.letBindings v0))+            innerTargets = Sets.difference targets boundNames+        in (recurse0 innerTargets term)+      _ -> recurse0 targets term) targets0 term0++-- | Build a TS function declaration from a Hydra term by peeling lambdas and let bindings into explicit parameters, statements, and a body+functionDeclarationFromTerm :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> String -> Model.Term -> Maybe Model.Type -> Syntax.FunctionDeclaration+functionDeclarationFromTerm cx g currentNs lname term _mScheme =++      let fsE = analyzeTypeScriptFunction cx g term+          fs =+                  Eithers.either (\_err -> Typing.FunctionStructure {+                    Typing.functionStructureTypeParams = [],+                    Typing.functionStructureParams = [],+                    Typing.functionStructureBindings = [],+                    Typing.functionStructureBody = term,+                    Typing.functionStructureDomains = [],+                    Typing.functionStructureCodomain = Nothing,+                    Typing.functionStructureEnvironment = g}) (\ok -> ok) fsE+          fsParams = Typing.functionStructureParams fs+          fsDoms = Typing.functionStructureDomains fs+          fsBindings0 = Typing.functionStructureBindings fs+          fsBody0 = Typing.functionStructureBody fs+          thunked = thunkLazyBindings fsBindings0 fsBody0+          fsBindings = Pairs.first thunked+          fsBody = Pairs.second thunked+          fsEnv = Typing.functionStructureEnvironment fs+          domPad = Model.TypeVariable (Model.Name "_")+          fsDomsPadded = Lists.concat2 fsDoms (Lists.replicate (Math.sub (Lists.length fsParams) (Lists.length fsDoms)) domPad)+          paramPatterns =+                  Lists.map (\pair -> encodeParam cx fsEnv currentNs (Pairs.first pair) (Pairs.second pair)) (Lists.zip fsParams fsDomsPadded)+          sortedBindings = sortBindingsTopologically fsBindings+          bindingStmts = Lists.map (\b -> encodeBindingAsStatement cx fsEnv currentNs b) sortedBindings+          bodyExpr = encodeTerm cx fsEnv currentNs fsBody+          returnStmt = Syntax.StatementReturn (Just bodyExpr)+          block = Lists.concat2 bindingStmts [+                returnStmt]+      in Syntax.FunctionDeclaration {+        Syntax.functionDeclarationId = (tsIdent lname),+        Syntax.functionDeclarationParams = paramPatterns,+        Syntax.functionDeclarationBody = block,+        Syntax.functionDeclarationAsync = False,+        Syntax.functionDeclarationGenerator = False}++-- | Render a set of qualified names as TypeScript import statements grouped by source module+importsToText :: S.Set String -> String -> Packaging.ModuleName -> S.Set Model.Name -> String+importsToText overlaySubs kind currentNs names =++      let pairs =+              Optionals.givens (Lists.map (\n -> Optionals.match (Names.moduleNameOf n) Nothing (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) Nothing (Just (ns, n)))) (Sets.toList names))+          transformLocal =+                  \s -> Logic.ifElse (Equality.equal kind "type") (Formatting.capitalize s) (Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords s)+          importKeyword = Logic.ifElse (Equality.equal kind "type") "import type" "import"+          grouped =+                  Lists.foldl (\acc -> \p ->+                    let ns = Pairs.first p+                        n = Pairs.second p+                        local = transformLocal (Names.localNameOf n)+                        existing = Optionals.withDefault [] (Maps.lookup ns acc)+                    in (Maps.insert ns (Lists.cons local existing) acc)) Maps.empty pairs+          currentSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName currentNs))+          currentDepth = Lists.length currentSegs+          currentIsTest =+                  Logic.and (Ordering.gt (Lists.length currentSegs) 1) (Equality.equal (Optionals.withDefault "" (Lists.at 1 currentSegs)) "test")+          baseUpPrefix =+                  Logic.ifElse (Equality.equal currentDepth 1) "./" (Strings.concat (Lists.replicate (Math.sub currentDepth 1) "../"))+          lines =+                  Lists.map (\entry ->+                    let ns = Pairs.first entry+                        locals = Pairs.second entry+                        targetSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))+                        targetIsTest =+                                Logic.and (Ordering.gt (Lists.length targetSegs) 1) (Equality.equal (Optionals.withDefault "" (Lists.at 1 targetSegs)) "test")+                        targetSub = Optionals.withDefault "" (Lists.at 2 targetSegs)+                        targetPathSegs =+                                Logic.ifElse (Logic.and (Logic.and (Equality.equal (Optionals.withDefault "" (Lists.head targetSegs)) "core") (Equality.equal (Optionals.withDefault "" (Lists.at 1 targetSegs)) "lib")) (Sets.member targetSub overlaySubs)) [+                                  "core",+                                  "overlay",+                                  "typescript",+                                  "lib",+                                  targetSub] targetSegs+                        targetPath = Strings.join "/" targetPathSegs+                        upPrefix =+                                Logic.ifElse (Logic.and currentIsTest (Logic.not targetIsTest)) (Strings.concat2 baseUpPrefix "../../../main/typescript/hydra/") baseUpPrefix+                        nsSlug = Strings.join "_" targetSegs+                        moduleAlias = Logic.ifElse (Equality.equal kind "type") (Strings.concat2 "$type_" nsSlug) (Strings.concat2 "$mod_" nsSlug)+                    in (Strings.concat [+                      importKeyword,+                      " * as ",+                      moduleAlias,+                      " from \"",+                      upPrefix,+                      targetPath,+                      ".js\";\n"])) (Maps.toList grouped)+      in (Strings.concat lines)++-- | Look up a primitive by name and return its per-parameter laziness flags in parameter order+lazyFlagsForPrimitive :: Graph.Graph -> Model.Name -> [Bool]+lazyFlagsForPrimitive g name =+    Optionals.match (Maps.lookup name (Graph.graphPrimitives g)) [] (\prim -> Lists.map (\p -> Typing.parameterIsLazy p) (Typing.termSignatureParameters (Packaging.primitiveDefinitionSignature (Graph.primitiveDefinition prim))))++-- | True when a let-binding's value should be thunked to preserve Haskell's lazy evaluation semantics+letBindingIsThunkCandidate :: Model.Binding -> Bool+letBindingIsThunkCandidate b =++      let dterm = Strip.deannotateAndDetypeTerm (Model.bindingTerm b)+          isLambda =+                  case dterm of+                    Model.TermLambda _ -> True+                    _ -> False+          freeVars = Variables.freeVariablesInTerm (Model.bindingTerm b)+          callsShow =+                  Lists.foldl (\acc -> \n -> Logic.or acc (Optionals.match (Names.moduleNameOf n) False (\mn -> Equality.equal (Lists.take 2 (Strings.splitOn "." (Packaging.unModuleName mn))) [+                    "hydra",+                    "show"]))) False (Sets.toList freeVars)+      in (Logic.and (Logic.not isLambda) callsShow)++-- | Build a documentation comment from an optional description string, or nothing if the description is missing or empty+mkDocComment :: Maybe String -> Maybe Syntax.DocumentationComment+mkDocComment mdesc =+    Optionals.match mdesc Nothing (\d -> Logic.ifElse (Equality.equal d "") Nothing (Just (Syntax.DocumentationComment {+      Syntax.documentationCommentDescription = (PrintDocs.renderDocStringWith tsDocEntityRef d),+      Syntax.documentationCommentTags = []})))++-- | Convert a Hydra module to a map from .ts file path to TypeScript source+moduleToTypeScript :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (M.Map String String)+moduleToTypeScript overlaySubs mod defs cx g =++      let currentNs = Packaging.moduleName mod+          partitioned = Environment.partitionDefinitions defs+          typeDefs = Pairs.first partitioned+          rawTermDefs = Pairs.second partitioned+          termDefs = sortTermDefsTopologically currentNs rawTermDefs+          typeImportsFromTypes =+                  Lists.foldl (\acc -> \td -> Sets.union acc (collectImports currentNs (Model.typeSchemeBody (Packaging.typeDefinitionBody td)))) Sets.empty typeDefs+          typeImportsFromTerms =+                  Lists.foldl (\acc -> \td -> Optionals.match (Packaging.termDefinitionSignature td) acc (\sig -> Sets.union acc (collectImports currentNs (Model.typeSchemeBody (Scoping.termSignatureToTypeScheme sig))))) Sets.empty termDefs+          typeImportsFromInner =+                  Lists.foldl (\acc -> \td -> Sets.union acc (collectInnerTypeImports currentNs (Packaging.termDefinitionBody td))) Sets.empty termDefs+          typeImports = Sets.union (Sets.union typeImportsFromTypes typeImportsFromTerms) typeImportsFromInner+          termImports =+                  Lists.foldl (\acc -> \td -> Sets.union acc (collectTermImports currentNs (Packaging.termDefinitionBody td))) Sets.empty termDefs+          typeImportsBlock = importsToText overlaySubs "type" currentNs typeImports+          termImportsBlock = importsToText overlaySubs "value" currentNs termImports+          importsBlock = Strings.concat2 typeImportsBlock termImportsBlock+      in (Eithers.bind (Eithers.mapList (encodeTypeDefinition cx g currentNs) typeDefs) (\typeItems ->+        let termItems = Lists.map (encodeTermDefinition cx g currentNs) termDefs+            allItems = Lists.concat2 typeItems termItems+            mModuleDoc = Optionals.bind (Packaging.moduleMetadata mod) (\em -> Packaging.entityMetadataDescription em)+            moduleDocText = Optionals.match mModuleDoc "" (\d -> Strings.concat2 (Serde.toTypeScriptComments d []) "\n\n")+            header = Strings.concat2 "// Note: this is an automatically generated file. Do not edit.\n\n" moduleDocText+            renderItem =+                    \docAndItem ->+                      let mdoc = Pairs.first docAndItem+                          item = Pairs.second docAndItem+                          itemText = printModuleItem item+                      in (Optionals.match mdoc itemText (\d -> Strings.concat [+                        Serde.toTypeScriptComments d [],+                        "\n",+                        itemText]))+            body = Strings.join "\n\n" (Lists.map renderItem allItems)+            filePath = Names.moduleNameToFilePath Util.CaseConventionCamel (File.FileExtension "ts") (Packaging.moduleName mod)+        in (Right (Maps.singleton filePath (Strings.concat [+          header,+          importsBlock,+          (Logic.ifElse (Equality.equal importsBlock "") "" "\n"),+          body,+          (Logic.ifElse (Equality.equal body "") "" "\n")])))))++-- | Render an interface declaration+printInterfaceDeclaration :: Syntax.InterfaceDeclaration -> String+printInterfaceDeclaration decl =++      let name = Syntax.unIdentifier (Syntax.interfaceDeclarationName decl)+          params = printTypeParameterList (Syntax.interfaceDeclarationTypeParameters decl)+          exts = Syntax.interfaceDeclarationExtends decl+          extClause =+                  Logic.ifElse (Lists.isEmpty exts) "" (Strings.concat2 " extends " (Strings.join ", " (Lists.map printTypeExpression exts)))+          members = Syntax.interfaceDeclarationMembers decl+          renderMember = \ps -> Strings.join "\n  " (Formatting.lines (printPropertySignature ps))+          body =+                  Logic.ifElse (Lists.isEmpty members) "" (Strings.concat [+                    "\n  ",+                    (Strings.join ";\n  " (Lists.map renderMember members)),+                    ";\n"])+      in (Strings.concat [+        "export interface ",+        name,+        params,+        extClause,+        " {",+        body,+        "}\n"])++-- | Render a TypeScript literal as source text+printLiteral :: Syntax.Literal -> String+printLiteral lit =+    case lit of+      Syntax.LiteralString v0 -> tsEscapeString (Syntax.stringLiteralValue v0)+      Syntax.LiteralBoolean v0 -> Logic.ifElse v0 "true" "false"+      Syntax.LiteralNull -> "null"+      Syntax.LiteralUndefined -> "undefined"+      _ -> "null"++-- | Render a top-level module item+printModuleItem :: Syntax.ModuleItem -> String+printModuleItem mi =+    case mi of+      Syntax.ModuleItemInterface v0 -> printInterfaceDeclaration v0+      Syntax.ModuleItemTypeAlias v0 -> printTypeAliasDeclaration v0+      Syntax.ModuleItemStatement _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)+      Syntax.ModuleItemImport _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)+      Syntax.ModuleItemExport _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)+      _ -> ""++-- | Render a property signature, with an optional JSDoc comment prepended+printPropertySignature :: Syntax.PropertySignature -> String+printPropertySignature ps =++      let mcomments = Syntax.propertySignatureComments ps+          line =+                  Strings.concat [+                    Logic.ifElse (Syntax.propertySignatureReadonly ps) "readonly " "",+                    (Syntax.unIdentifier (Syntax.propertySignatureName ps)),+                    (Logic.ifElse (Syntax.propertySignatureOptional ps) "?" ""),+                    ": ",+                    (printTypeExpression (Syntax.propertySignatureType ps))]+      in (Optionals.match mcomments line (\dc -> Strings.concat [+        Serde.toTypeScriptComments (Syntax.documentationCommentDescription dc) (Syntax.documentationCommentTags dc),+        "\n",+        line]))++-- | Render a type alias declaration+printTypeAliasDeclaration :: Syntax.TypeAliasDeclaration -> String+printTypeAliasDeclaration decl =++      let name = Syntax.unIdentifier (Syntax.typeAliasDeclarationName decl)+          params = printTypeParameterList (Syntax.typeAliasDeclarationTypeParameters decl)+          rhs = printTypeExpression (Syntax.typeAliasDeclarationType decl)+      in (Strings.concat [+        "export type ",+        name,+        params,+        " = ",+        rhs,+        ";\n"])++-- | Render a TypeScript type expression as source text+printTypeExpression :: Syntax.TypeExpression -> String+printTypeExpression t =+    case t of+      Syntax.TypeExpressionIdentifier v0 -> Syntax.unIdentifier v0+      Syntax.TypeExpressionLiteral v0 -> printLiteral v0+      Syntax.TypeExpressionArray v0 -> Strings.concat [+        "ReadonlyArray<",+        (printTypeExpression (Syntax.unArrayTypeExpression v0)),+        ">"]+      Syntax.TypeExpressionTuple v0 -> Strings.concat [+        "readonly [",+        (Strings.join ", " (Lists.map printTypeExpression v0)),+        "]"]+      Syntax.TypeExpressionUnion v0 -> Strings.join " | " (Lists.map printTypeExpression v0)+      Syntax.TypeExpressionIntersection v0 -> Strings.join " & " (Lists.map printTypeExpression v0)+      Syntax.TypeExpressionParameterized v0 -> Strings.concat [+        printTypeExpression (Syntax.parameterizedTypeExpressionBase v0),+        "<",+        (Strings.join ", " (Lists.map printTypeExpression (Syntax.parameterizedTypeExpressionArguments v0))),+        ">"]+      Syntax.TypeExpressionOptional v0 -> Strings.concat [+        printTypeExpression v0,+        " | undefined"]+      Syntax.TypeExpressionReadonly v0 -> Strings.concat2 "readonly " (printTypeExpression v0)+      Syntax.TypeExpressionObject v0 -> Strings.concat [+        "{ ",+        (Strings.join "; " (Lists.map printPropertySignature v0)),+        " }"]+      Syntax.TypeExpressionFunction _ -> "((...args: any[]) => any)"+      Syntax.TypeExpressionAny -> "any"+      Syntax.TypeExpressionUnknown -> "unknown"+      Syntax.TypeExpressionVoid -> "void"+      Syntax.TypeExpressionNever -> "never"+      _ -> "unknown"++-- | Render one generic type parameter, with an optional extends constraint+printTypeParameter :: Syntax.TypeParameter -> String+printTypeParameter tp =++      let name = Syntax.unIdentifier (Syntax.typeParameterName tp)+          constraint = Syntax.typeParameterConstraint tp+      in (Optionals.match constraint name (\c -> Strings.concat [+        name,+        " extends ",+        (printTypeExpression c)]))++-- | Render a generic parameter list, or the empty string when there are no parameters+printTypeParameterList :: [Syntax.TypeParameter] -> String+printTypeParameterList tps =+    Logic.ifElse (Lists.isEmpty tps) "" (Strings.concat [+      "<",+      (Strings.join ", " (Lists.map printTypeParameter tps)),+      ">"])++-- | Sanitize a Hydra parameter name into a valid, non-reserved TS identifier+sanitizeParamName :: Model.Name -> String+sanitizeParamName n = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf n)++-- | Reorder let-bindings so each appears after the sibling bindings it depends on, avoiding JS temporal-dead-zone errors+sortBindingsTopologically :: [Model.Binding] -> [Model.Binding]+sortBindingsTopologically bindings =++      let byName = Maps.fromList (Lists.map (\b -> (Model.bindingName b, b)) bindings)+          adjacency =+                  Lists.map (\b ->+                    let bname = Model.bindingName b+                        bterm = Model.bindingTerm b+                        freeVars = Variables.freeVariablesInTerm bterm+                        deps = Lists.filter (\n -> Maps.member n byName) (Sets.toList freeVars)+                    in (bname, deps)) bindings+          sccs = Sorting.topologicalSortComponents adjacency+      in (Optionals.givens (Lists.map (\n -> Maps.lookup n byName) (Lists.concat sccs)))++-- | Reorder term definitions so each appears after the intra-module definitions it depends on+sortTermDefsTopologically :: t0 -> [Packaging.TermDefinition] -> [Packaging.TermDefinition]+sortTermDefsTopologically currentNs tdefs =++      let byName = Maps.fromList (Lists.map (\td -> (Packaging.termDefinitionName td, td)) tdefs)+          adjacency =+                  Lists.map (\td ->+                    let tname = Packaging.termDefinitionName td+                        tterm = Packaging.termDefinitionBody td+                        freeVars = eagerFreeVariablesInTerm tterm+                        deps = Lists.filter (\n -> Maps.member n byName) (Sets.toList freeVars)+                    in (tname, deps)) tdefs+          sccs = Sorting.topologicalSortComponents adjacency+      in (Optionals.givens (Lists.map (\n -> Maps.lookup n byName) (Lists.concat sccs)))++-- | Strip leading forall quantifiers from a type, returning the innermost body+stripForalls :: Model.Type -> Model.Type+stripForalls t =++      let dt = Strip.deannotateType t+      in case dt of+        Model.TypeForall v0 -> stripForalls (Model.forallTypeBody v0)+        _ -> dt++-- | If a term reduces, through annotations and type applications, to a variable reference, return its name+termHeadVariable :: Model.Term -> Maybe Model.Name+termHeadVariable t =++      let dt = Strip.deannotateTerm t+      in case dt of+        Model.TermVariable v0 -> Just v0+        Model.TermTypeApplication v0 -> termHeadVariable (Model.typeApplicationTermBody v0)+        _ -> Nothing++-- | The bindings-and-body core of thunkLazyLet, shared by the Term_let encoder and the lifted-binding path in functionDeclarationFromTerm+thunkLazyBindings :: [Model.Binding] -> Model.Term -> ([Model.Binding], Model.Term)+thunkLazyBindings bindings body =++      let candidates = Lists.filter (\b -> letBindingIsThunkCandidate b) bindings+      in (Logic.ifElse (Lists.isEmpty candidates) (bindings, body) (+        let targets = Sets.fromList (Lists.map Model.bindingName candidates)+            wrapCandidate =+                    \b -> Logic.ifElse (letBindingIsThunkCandidate b) (Model.Binding {+                      Model.bindingName = (Model.bindingName b),+                      Model.bindingTerm = (Model.TermLambda (Model.Lambda {+                        Model.lambdaParameter = (Model.Name "_"),+                        Model.lambdaDomain = Nothing,+                        Model.lambdaBody = (forceLazyRefs targets (Model.bindingTerm b))})),+                      Model.bindingTypeScheme = (Model.bindingTypeScheme b)}) (Model.Binding {+                      Model.bindingName = (Model.bindingName b),+                      Model.bindingTerm = (forceLazyRefs targets (Model.bindingTerm b)),+                      Model.bindingTypeScheme = (Model.bindingTypeScheme b)})+        in (Lists.map wrapCandidate bindings, (forceLazyRefs targets body))))++-- | Thunk every let-binding for which letBindingIsThunkCandidate holds, and rewrite forced references to it accordingly+thunkLazyLet :: Model.Let -> Model.Let+thunkLazyLet lt =++      let result = thunkLazyBindings (Model.letBindings lt) (Model.letBody lt)+      in Model.Let {+        Model.letBindings = (Pairs.first result),+        Model.letBody = (Pairs.second result)}++-- | An array expression: [e1, e2, ...]+tsArray :: [Syntax.Expression] -> Syntax.Expression+tsArray elems = Syntax.ExpressionArray (Lists.map (\e -> Syntax.ArrayElementExpression e) elems)++-- | An untyped arrow function with an expression body+tsArrow :: [String] -> Syntax.Expression -> Syntax.Expression+tsArrow params body =+    Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {+      Syntax.arrowFunctionExpressionParams = (Lists.map (\p -> Syntax.PatternIdentifier (tsIdent p)) params),+      Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyExpression body),+      Syntax.arrowFunctionExpressionAsync = False})++-- | A typed arrow function with typed parameter patterns+tsArrowTyped :: [Syntax.Pattern] -> Syntax.Expression -> Syntax.Expression+tsArrowTyped patterns body =+    Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {+      Syntax.arrowFunctionExpressionParams = patterns,+      Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyExpression body),+      Syntax.arrowFunctionExpressionAsync = False})++-- | Wrap an expression in a TypeScript 'as any' cast+tsAsAny :: Syntax.Expression -> Syntax.Expression+tsAsAny e =+    Syntax.ExpressionAsExpression (Syntax.AsExpression {+      Syntax.asExpressionExpression = e,+      Syntax.asExpressionType = Syntax.TypeExpressionAny})++-- | A call expression, parenthesizing the callee when it's an arrow function or other ambiguous call target+tsCall :: Syntax.Expression -> [Syntax.Expression] -> Syntax.Expression+tsCall callee args =+    Syntax.ExpressionCall (Syntax.CallExpression {+      Syntax.callExpressionCallee = callee,+      Syntax.callExpressionArguments = args,+      Syntax.callExpressionOptional = False})++-- | A conditional (ternary) expression+tsCond :: Syntax.Expression -> Syntax.Expression -> Syntax.Expression -> Syntax.Expression+tsCond test cons alt =+    Syntax.ExpressionConditional (Syntax.ConditionalExpression {+      Syntax.conditionalExpressionTest = test,+      Syntax.conditionalExpressionConsequent = cons,+      Syntax.conditionalExpressionAlternate = alt})++-- | Render a 'EntityReference' as TSDoc link syntax+tsDocEntityRef :: Packaging.EntityReference -> String+tsDocEntityRef x =+    case x of+      Packaging.EntityReferenceDefinition v0 -> Strings.concat2 "{@link " (Strings.concat2 (case v0 of+        Packaging.DefinitionReferencePrimitive v1 -> Names.localNameOf v1+        Packaging.DefinitionReferenceTerm v1 -> Names.localNameOf v1+        Packaging.DefinitionReferenceType v1 -> Names.localNameOf v1) "}")+      Packaging.EntityReferenceModule v0 -> Packaging.unModuleName v0+      Packaging.EntityReferencePackage v0 -> Packaging.unPackageName v0+      Packaging.EntityReferenceTermExpr v0 -> Strings.concat2 "`" (Strings.concat2 v0 "`")+      Packaging.EntityReferenceTypeExpr v0 -> Strings.concat2 "`" (Strings.concat2 v0 "`")++-- | Identity getter for analyzeFunctionTerm when the environment is a Graph+tsEnvGetGraph :: t0 -> t0+tsEnvGetGraph g = g++-- | Setter for analyzeFunctionTerm when the environment is a Graph+tsEnvSetGraph :: t0 -> t1 -> t0+tsEnvSetGraph newG _old = newG++-- | Escape a Hydra string for embedding as a double-quoted TypeScript string literal+tsEscapeString :: String -> String+tsEscapeString s =++      let escapeChar =+              \c -> Logic.ifElse (Equality.equal c 34) "\\\"" (Logic.ifElse (Equality.equal c 92) "\\\\" (Logic.ifElse (Equality.equal c 10) "\\n" (Logic.ifElse (Equality.equal c 13) "\\r" (Logic.ifElse (Equality.equal c 9) "\\t" (Logic.ifElse (Equality.equal c 8) "\\b" (Logic.ifElse (Equality.equal c 12) "\\f" (Strings.fromList (Lists.singleton c))))))))+      in (Strings.concat [+        "\"",+        (Strings.concat (Lists.map escapeChar (Strings.toList s))),+        "\""])++-- | A bare identifier expression+tsExprIdent :: String -> Syntax.Expression+tsExprIdent s = Syntax.ExpressionIdentifier (tsIdent s)++-- | A string-literal expression+tsExprStr :: String -> Syntax.Expression+tsExprStr s =+    Syntax.ExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+      Syntax.stringLiteralValue = s,+      Syntax.stringLiteralSingleQuote = False}))++-- | Wrap a string into a TypeScript identifier+tsIdent :: String -> Syntax.Identifier+tsIdent s = Syntax.Identifier s++-- | A member-access expression: obj.prop+tsMember :: Syntax.Expression -> String -> Syntax.Expression+tsMember obj prop =+    Syntax.ExpressionMember (Syntax.MemberExpression {+      Syntax.memberExpressionObject = obj,+      Syntax.memberExpressionProperty = (tsExprIdent prop),+      Syntax.memberExpressionComputed = False,+      Syntax.memberExpressionOptional = False})++-- | A bare named type reference+tsNamedType :: String -> Syntax.TypeExpression+tsNamedType n = Syntax.TypeExpressionIdentifier (tsIdent n)++-- | A new-expression: new C(args)+tsNew :: Syntax.Expression -> [Syntax.Expression] -> Syntax.Expression+tsNew callee args =+    Syntax.ExpressionNew (Syntax.CallExpression {+      Syntax.callExpressionCallee = callee,+      Syntax.callExpressionArguments = args,+      Syntax.callExpressionOptional = False})++-- | An object literal with identifier-style keys+tsObject :: [(String, Syntax.Expression)] -> Syntax.Expression+tsObject props =+    Syntax.ExpressionObject (Lists.map (\kv ->+      let k = Pairs.first kv+          v = Pairs.second kv+      in Syntax.Property {+        Syntax.propertyKey = (tsExprIdent k),+        Syntax.propertyValue = v,+        Syntax.propertyKind = Syntax.PropertyKindInit,+        Syntax.propertyComputed = False,+        Syntax.propertyShorthand = False}) props)++-- | A generic type parameter with no constraint+tsParam :: String -> Syntax.TypeParameter+tsParam n =+    Syntax.TypeParameter {+      Syntax.typeParameterName = (tsIdent n),+      Syntax.typeParameterConstraint = Nothing,+      Syntax.typeParameterDefault = Nothing}++-- | A parameterized type with one type argument+tsParamApp1 :: String -> Syntax.TypeExpression -> Syntax.TypeExpression+tsParamApp1 n arg =+    Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {+      Syntax.parameterizedTypeExpressionBase = (tsNamedType n),+      Syntax.parameterizedTypeExpressionArguments = [+        arg]})++-- | A parameterized type with two type arguments+tsParamApp2 :: String -> Syntax.TypeExpression -> Syntax.TypeExpression -> Syntax.TypeExpression+tsParamApp2 n a b =+    Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {+      Syntax.parameterizedTypeExpressionBase = (tsNamedType n),+      Syntax.parameterizedTypeExpressionArguments = [+        a,+        b]})++-- | Wrap an expression in parentheses when its serialized form needs grouping+tsParen :: Syntax.Expression -> Syntax.Expression+tsParen e = Syntax.ExpressionParenthesized e++-- | A readonly property signature, with the name sanitized for TS reserved words+tsPropSig :: String -> Bool -> Syntax.TypeExpression -> Syntax.PropertySignature+tsPropSig name optional typ = tsPropSigWithDoc name optional typ Nothing++-- | A readonly property signature with an optional JSDoc comment above the property line+tsPropSigWithDoc :: String -> Bool -> Syntax.TypeExpression -> Maybe Syntax.DocumentationComment -> Syntax.PropertySignature+tsPropSigWithDoc name optional typ mcomments =++      let safe = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords name+      in Syntax.PropertySignature {+        Syntax.propertySignatureName = (tsIdent safe),+        Syntax.propertySignatureType = typ,+        Syntax.propertySignatureOptional = optional,+        Syntax.propertySignatureReadonly = True,+        Syntax.propertySignatureComments = mcomments}++-- | A ReadonlyMap type with the given key and value types+tsReadonlyMap :: Syntax.TypeExpression -> Syntax.TypeExpression -> Syntax.TypeExpression+tsReadonlyMap k v = tsParamApp2 "ReadonlyMap" k v++-- | A ReadonlySet type with the given element type+tsReadonlySet :: Syntax.TypeExpression -> Syntax.TypeExpression+tsReadonlySet t = tsParamApp1 "ReadonlySet" t++-- | A tuple type+tsTuple :: [Syntax.TypeExpression] -> Syntax.TypeExpression+tsTuple ts = Syntax.TypeExpressionTuple ts++-- | A typed-identifier pattern for a function parameter with a known domain type+tsTypedIdent :: String -> Syntax.TypeExpression -> Syntax.Pattern+tsTypedIdent name typ =+    Syntax.PatternTyped (Syntax.TypedPattern {+      Syntax.typedPatternPattern = (Syntax.PatternIdentifier (tsIdent name)),+      Syntax.typedPatternType = typ})++-- | The undefined value as an expression+tsUndefined :: Syntax.Expression+tsUndefined = tsExprIdent "undefined"
+ src/main/haskell/Hydra/Typescript/Dsl/Syntax.hs view
@@ -0,0 +1,7269 @@+-- Note: this is an automatically generated file. Do not edit.++-- | DSL functions for hydra.typescript.syntax++module Hydra.Typescript.Dsl.Syntax where++import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Typescript.Syntax as Syntax+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void+import qualified Data.Int as I++-- | DSL name token for hydra.typescript.syntax.ArrayElement+arrayElementArrayElement :: Typed.TypedName Syntax.ArrayElement+arrayElementArrayElement = Typed.TypedName (Model.Name "hydra.typescript.syntax.ArrayElement")++-- | DSL injection for the expression variant of hydra.typescript.syntax.ArrayElement+arrayElementExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ArrayElement+arrayElementExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ArrayElement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the hole variant of hydra.typescript.syntax.ArrayElement+arrayElementHole :: Typed.TypedTerm Syntax.ArrayElement+arrayElementHole =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ArrayElement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "hole"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the spread variant of hydra.typescript.syntax.ArrayElement+arrayElementSpread :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.ArrayElement+arrayElementSpread x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ArrayElement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "spread"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.typescript.syntax.ArrayTypeExpression wrapper+arrayTypeExpression :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.ArrayTypeExpression+arrayTypeExpression x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.ArrayTypeExpression"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ArrayTypeExpression+arrayTypeExpressionArrayTypeExpression :: Typed.TypedName Syntax.ArrayTypeExpression+arrayTypeExpressionArrayTypeExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.ArrayTypeExpression")++-- | DSL name token for hydra.typescript.syntax.ArrowFunctionBody+arrowFunctionBodyArrowFunctionBody :: Typed.TypedName Syntax.ArrowFunctionBody+arrowFunctionBodyArrowFunctionBody = Typed.TypedName (Model.Name "hydra.typescript.syntax.ArrowFunctionBody")++-- | DSL injection for the block variant of hydra.typescript.syntax.ArrowFunctionBody+arrowFunctionBodyBlock :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.ArrowFunctionBody+arrowFunctionBodyBlock x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionBody"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "block"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the expression variant of hydra.typescript.syntax.ArrowFunctionBody+arrowFunctionBodyExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ArrowFunctionBody+arrowFunctionBodyExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionBody"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpression :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ArrowFunctionBody -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ArrowFunctionExpression+arrowFunctionExpression params body async =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Typed.unTypedTerm params)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Typed.unTypedTerm async)}]}))++-- | DSL name token for hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionArrowFunctionExpression :: Typed.TypedName Syntax.ArrowFunctionExpression+arrowFunctionExpressionArrowFunctionExpression =+    Typed.TypedName (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression")++-- | DSL accessor for the async field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionAsync :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Bool+arrowFunctionExpressionAsync x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+        Model.projectionFieldName = (Model.Name "async")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionBody :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.ArrowFunctionBody+arrowFunctionExpressionBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the params field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionParams :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm [Syntax.Pattern]+arrowFunctionExpressionParams x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+        Model.projectionFieldName = (Model.Name "params")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the async field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionWithAsync :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ArrowFunctionExpression+arrowFunctionExpressionWithAsync original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+              Model.projectionFieldName = (Model.Name "params")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the body field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionWithBody :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.ArrowFunctionBody -> Typed.TypedTerm Syntax.ArrowFunctionExpression+arrowFunctionExpressionWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+              Model.projectionFieldName = (Model.Name "params")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+              Model.projectionFieldName = (Model.Name "async")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the params field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionWithParams :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ArrowFunctionExpression+arrowFunctionExpressionWithParams original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+              Model.projectionFieldName = (Model.Name "async")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.AsExpression+asExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.AsExpression+asExpression expression type_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL name token for hydra.typescript.syntax.AsExpression+asExpressionAsExpression :: Typed.TypedName Syntax.AsExpression+asExpressionAsExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.AsExpression")++-- | DSL accessor for the expression field of hydra.typescript.syntax.AsExpression+asExpressionExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression+asExpressionExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.typescript.syntax.AsExpression+asExpressionType :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.TypeExpression+asExpressionType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the expression field of hydra.typescript.syntax.AsExpression+asExpressionWithExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AsExpression+asExpressionWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.typescript.syntax.AsExpression+asExpressionWithType :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.AsExpression+asExpressionWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.AssignmentExpression+assignmentExpression :: Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression+assignmentExpression operator left right =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm operator)},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Typed.unTypedTerm left)},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Typed.unTypedTerm right)}]}))++-- | DSL name token for hydra.typescript.syntax.AssignmentExpression+assignmentExpressionAssignmentExpression :: Typed.TypedName Syntax.AssignmentExpression+assignmentExpressionAssignmentExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.AssignmentExpression")++-- | DSL accessor for the left field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionLeft :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Pattern+assignmentExpressionLeft x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+        Model.projectionFieldName = (Model.Name "left")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the operator field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionOperator :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.AssignmentOperator+assignmentExpressionOperator x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+        Model.projectionFieldName = (Model.Name "operator")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the right field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionRight :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression+assignmentExpressionRight x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+        Model.projectionFieldName = (Model.Name "right")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the left field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionWithLeft :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AssignmentExpression+assignmentExpressionWithLeft original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+              Model.projectionFieldName = (Model.Name "operator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+              Model.projectionFieldName = (Model.Name "right")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the operator field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionWithOperator :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.AssignmentExpression+assignmentExpressionWithOperator original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+              Model.projectionFieldName = (Model.Name "left")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+              Model.projectionFieldName = (Model.Name "right")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the right field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionWithRight :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression+assignmentExpressionWithRight original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+              Model.projectionFieldName = (Model.Name "operator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+              Model.projectionFieldName = (Model.Name "left")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the addAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorAddAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorAddAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "addAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the andAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorAndAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorAndAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "andAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the assign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "assign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.AssignmentOperator+assignmentOperatorAssignmentOperator :: Typed.TypedName Syntax.AssignmentOperator+assignmentOperatorAssignmentOperator = Typed.TypedName (Model.Name "hydra.typescript.syntax.AssignmentOperator")++-- | DSL injection for the bitwiseAndAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorBitwiseAndAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorBitwiseAndAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "bitwiseAndAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the bitwiseOrAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorBitwiseOrAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorBitwiseOrAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "bitwiseOrAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the bitwiseXorAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorBitwiseXorAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorBitwiseXorAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "bitwiseXorAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the divideAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorDivideAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorDivideAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "divideAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the exponentiateAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorExponentiateAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorExponentiateAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "exponentiateAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the leftShiftAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorLeftShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorLeftShiftAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "leftShiftAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the moduloAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorModuloAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorModuloAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "moduloAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the multiplyAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorMultiplyAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorMultiplyAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "multiplyAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the nullishAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorNullishAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorNullishAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "nullishAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the orAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorOrAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorOrAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "orAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the rightShiftAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorRightShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorRightShiftAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "rightShiftAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the subtractAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorSubtractAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorSubtractAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "subtractAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the unsignedRightShiftAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorUnsignedRightShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorUnsignedRightShiftAssign =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "unsignedRightShiftAssign"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.typescript.syntax.AssignmentPattern+assignmentPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentPattern+assignmentPattern left right =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Typed.unTypedTerm left)},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Typed.unTypedTerm right)}]}))++-- | DSL name token for hydra.typescript.syntax.AssignmentPattern+assignmentPatternAssignmentPattern :: Typed.TypedName Syntax.AssignmentPattern+assignmentPatternAssignmentPattern = Typed.TypedName (Model.Name "hydra.typescript.syntax.AssignmentPattern")++-- | DSL accessor for the left field of hydra.typescript.syntax.AssignmentPattern+assignmentPatternLeft :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern+assignmentPatternLeft x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+        Model.projectionFieldName = (Model.Name "left")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the right field of hydra.typescript.syntax.AssignmentPattern+assignmentPatternRight :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Expression+assignmentPatternRight x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+        Model.projectionFieldName = (Model.Name "right")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the left field of hydra.typescript.syntax.AssignmentPattern+assignmentPatternWithLeft :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AssignmentPattern+assignmentPatternWithLeft original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+              Model.projectionFieldName = (Model.Name "right")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the right field of hydra.typescript.syntax.AssignmentPattern+assignmentPatternWithRight :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentPattern+assignmentPatternWithRight original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+              Model.projectionFieldName = (Model.Name "left")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.BinaryExpression+binaryExpression :: Typed.TypedTerm Syntax.BinaryOperator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression+binaryExpression operator left right =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm operator)},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Typed.unTypedTerm left)},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Typed.unTypedTerm right)}]}))++-- | DSL name token for hydra.typescript.syntax.BinaryExpression+binaryExpressionBinaryExpression :: Typed.TypedName Syntax.BinaryExpression+binaryExpressionBinaryExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.BinaryExpression")++-- | DSL accessor for the left field of hydra.typescript.syntax.BinaryExpression+binaryExpressionLeft :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression+binaryExpressionLeft x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+        Model.projectionFieldName = (Model.Name "left")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the operator field of hydra.typescript.syntax.BinaryExpression+binaryExpressionOperator :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.BinaryOperator+binaryExpressionOperator x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+        Model.projectionFieldName = (Model.Name "operator")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the right field of hydra.typescript.syntax.BinaryExpression+binaryExpressionRight :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression+binaryExpressionRight x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+        Model.projectionFieldName = (Model.Name "right")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the left field of hydra.typescript.syntax.BinaryExpression+binaryExpressionWithLeft :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression+binaryExpressionWithLeft original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+              Model.projectionFieldName = (Model.Name "operator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+              Model.projectionFieldName = (Model.Name "right")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the operator field of hydra.typescript.syntax.BinaryExpression+binaryExpressionWithOperator :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.BinaryOperator -> Typed.TypedTerm Syntax.BinaryExpression+binaryExpressionWithOperator original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+              Model.projectionFieldName = (Model.Name "left")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+              Model.projectionFieldName = (Model.Name "right")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the right field of hydra.typescript.syntax.BinaryExpression+binaryExpressionWithRight :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression+binaryExpressionWithRight original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+              Model.projectionFieldName = (Model.Name "operator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+              Model.projectionFieldName = (Model.Name "left")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the add variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorAdd :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorAdd =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "add"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the and variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorAnd :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorAnd =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "and"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.BinaryOperator+binaryOperatorBinaryOperator :: Typed.TypedName Syntax.BinaryOperator+binaryOperatorBinaryOperator = Typed.TypedName (Model.Name "hydra.typescript.syntax.BinaryOperator")++-- | DSL injection for the bitwiseAnd variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorBitwiseAnd :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorBitwiseAnd =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "bitwiseAnd"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the bitwiseOr variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorBitwiseOr :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorBitwiseOr =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "bitwiseOr"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the bitwiseXor variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorBitwiseXor :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorBitwiseXor =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "bitwiseXor"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the divide variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorDivide :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorDivide =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "divide"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the equal variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorEqual =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "equal"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the exponentiate variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorExponentiate :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorExponentiate =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "exponentiate"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the greaterThan variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorGreaterThan :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorGreaterThan =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "greaterThan"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the greaterThanOrEqual variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorGreaterThanOrEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorGreaterThanOrEqual =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "greaterThanOrEqual"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the in variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorIn :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorIn =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "in"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the instanceof variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorInstanceof :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorInstanceof =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "instanceof"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the leftShift variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorLeftShift :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorLeftShift =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "leftShift"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the lessThan variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorLessThan :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorLessThan =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "lessThan"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the lessThanOrEqual variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorLessThanOrEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorLessThanOrEqual =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "lessThanOrEqual"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the modulo variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorModulo :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorModulo =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "modulo"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the multiply variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorMultiply :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorMultiply =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "multiply"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the notEqual variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorNotEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorNotEqual =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "notEqual"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the nullishCoalescing variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorNullishCoalescing :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorNullishCoalescing =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "nullishCoalescing"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the or variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorOr :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorOr =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "or"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the rightShift variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorRightShift :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorRightShift =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "rightShift"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the strictEqual variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorStrictEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorStrictEqual =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "strictEqual"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the strictNotEqual variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorStrictNotEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorStrictNotEqual =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "strictNotEqual"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the subtract variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorSubtract :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorSubtract =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "subtract"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the unsignedRightShift variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorUnsignedRightShift :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorUnsignedRightShift =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "unsignedRightShift"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.typescript.syntax.CallExpression+callExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.CallExpression+callExpression callee arguments optional =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "callee"),+          Model.fieldTerm = (Typed.unTypedTerm callee)},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm arguments)},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Typed.unTypedTerm optional)}]}))++-- | DSL accessor for the arguments field of hydra.typescript.syntax.CallExpression+callExpressionArguments :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm [Syntax.Expression]+callExpressionArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+        Model.projectionFieldName = (Model.Name "arguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.CallExpression+callExpressionCallExpression :: Typed.TypedName Syntax.CallExpression+callExpressionCallExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.CallExpression")++-- | DSL accessor for the callee field of hydra.typescript.syntax.CallExpression+callExpressionCallee :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression+callExpressionCallee x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+        Model.projectionFieldName = (Model.Name "callee")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the optional field of hydra.typescript.syntax.CallExpression+callExpressionOptional :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Bool+callExpressionOptional x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+        Model.projectionFieldName = (Model.Name "optional")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the arguments field of hydra.typescript.syntax.CallExpression+callExpressionWithArguments :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.CallExpression+callExpressionWithArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "callee"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+              Model.projectionFieldName = (Model.Name "callee")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+              Model.projectionFieldName = (Model.Name "optional")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the callee field of hydra.typescript.syntax.CallExpression+callExpressionWithCallee :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.CallExpression+callExpressionWithCallee original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "callee"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+              Model.projectionFieldName = (Model.Name "optional")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the optional field of hydra.typescript.syntax.CallExpression+callExpressionWithOptional :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.CallExpression+callExpressionWithOptional original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "callee"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+              Model.projectionFieldName = (Model.Name "callee")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.CatchClause+catchClause :: Typed.TypedTerm (Maybe Syntax.Pattern) -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.CatchClause+catchClause param body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "param"),+          Model.fieldTerm = (Typed.unTypedTerm param)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.CatchClause+catchClauseBody :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.BlockStatement+catchClauseBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.CatchClause+catchClauseCatchClause :: Typed.TypedName Syntax.CatchClause+catchClauseCatchClause = Typed.TypedName (Model.Name "hydra.typescript.syntax.CatchClause")++-- | DSL accessor for the param field of hydra.typescript.syntax.CatchClause+catchClauseParam :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.Pattern)+catchClauseParam x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+        Model.projectionFieldName = (Model.Name "param")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.CatchClause+catchClauseWithBody :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.CatchClause+catchClauseWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "param"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+              Model.projectionFieldName = (Model.Name "param")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the param field of hydra.typescript.syntax.CatchClause+catchClauseWithParam :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.Pattern) -> Typed.TypedTerm Syntax.CatchClause+catchClauseWithParam original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "param"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.ClassDeclaration+classDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclaration id superClass body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm id)},+        Model.Field {+          Model.fieldName = (Model.Name "superClass"),+          Model.fieldTerm = (Typed.unTypedTerm superClass)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ClassDeclaration+classDeclarationBody :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassBody+classDeclarationBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ClassDeclaration+classDeclarationClassDeclaration :: Typed.TypedName Syntax.ClassDeclaration+classDeclarationClassDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.ClassDeclaration")++-- | DSL accessor for the id field of hydra.typescript.syntax.ClassDeclaration+classDeclarationId :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Identifier+classDeclarationId x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+        Model.projectionFieldName = (Model.Name "id")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the superClass field of hydra.typescript.syntax.ClassDeclaration+classDeclarationSuperClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.Expression)+classDeclarationSuperClass x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+        Model.projectionFieldName = (Model.Name "superClass")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.ClassDeclaration+classDeclarationWithBody :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclarationWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "superClass"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+              Model.projectionFieldName = (Model.Name "superClass")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithComments :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ClassDeclarationWithComments+classDeclarationWithComments body comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithCommentsBody :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclarationWithCommentsBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithCommentsClassDeclarationWithComments :: Typed.TypedName Syntax.ClassDeclarationWithComments+classDeclarationWithCommentsClassDeclarationWithComments =+    Typed.TypedName (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments")++-- | DSL accessor for the comments field of hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)+classDeclarationWithCommentsComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithCommentsWithBody :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassDeclarationWithComments+classDeclarationWithCommentsWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the comments field of hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ClassDeclarationWithComments+classDeclarationWithCommentsWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the id field of hydra.typescript.syntax.ClassDeclaration+classDeclarationWithId :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclarationWithId original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "superClass"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+              Model.projectionFieldName = (Model.Name "superClass")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the superClass field of hydra.typescript.syntax.ClassDeclaration+classDeclarationWithSuperClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclarationWithSuperClass original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "superClass"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the block variant of hydra.typescript.syntax.Comment+commentBlock :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Comment+commentBlock x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Comment"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "block"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.Comment+commentComment :: Typed.TypedName Syntax.Comment+commentComment = Typed.TypedName (Model.Name "hydra.typescript.syntax.Comment")++-- | DSL injection for the documentation variant of hydra.typescript.syntax.Comment+commentDocumentation :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm Syntax.Comment+commentDocumentation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Comment"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "documentation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the line variant of hydra.typescript.syntax.Comment+commentLine :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Comment+commentLine x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Comment"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "line"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ConditionalExpression+conditionalExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpression test consequent alternate =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm test)},+        Model.Field {+          Model.fieldName = (Model.Name "consequent"),+          Model.fieldTerm = (Typed.unTypedTerm consequent)},+        Model.Field {+          Model.fieldName = (Model.Name "alternate"),+          Model.fieldTerm = (Typed.unTypedTerm alternate)}]}))++-- | DSL accessor for the alternate field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionAlternate :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression+conditionalExpressionAlternate x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+        Model.projectionFieldName = (Model.Name "alternate")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ConditionalExpression+conditionalExpressionConditionalExpression :: Typed.TypedName Syntax.ConditionalExpression+conditionalExpressionConditionalExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.ConditionalExpression")++-- | DSL accessor for the consequent field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionConsequent :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression+conditionalExpressionConsequent x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+        Model.projectionFieldName = (Model.Name "consequent")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the test field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionTest :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression+conditionalExpressionTest x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+        Model.projectionFieldName = (Model.Name "test")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the alternate field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionWithAlternate :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpressionWithAlternate original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+              Model.projectionFieldName = (Model.Name "test")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "consequent"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+              Model.projectionFieldName = (Model.Name "consequent")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "alternate"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the consequent field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionWithConsequent :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpressionWithConsequent original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+              Model.projectionFieldName = (Model.Name "test")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "consequent"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "alternate"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+              Model.projectionFieldName = (Model.Name "alternate")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionWithTest :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpressionWithTest original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "consequent"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+              Model.projectionFieldName = (Model.Name "consequent")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "alternate"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+              Model.projectionFieldName = (Model.Name "alternate")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.DoWhileStatement+doWhileStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoWhileStatement+doWhileStatement body test =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)},+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm test)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.DoWhileStatement+doWhileStatementBody :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement+doWhileStatementBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.DoWhileStatement+doWhileStatementDoWhileStatement :: Typed.TypedName Syntax.DoWhileStatement+doWhileStatementDoWhileStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.DoWhileStatement")++-- | DSL accessor for the test field of hydra.typescript.syntax.DoWhileStatement+doWhileStatementTest :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Expression+doWhileStatementTest x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+        Model.projectionFieldName = (Model.Name "test")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.DoWhileStatement+doWhileStatementWithBody :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.DoWhileStatement+doWhileStatementWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+              Model.projectionFieldName = (Model.Name "test")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.DoWhileStatement+doWhileStatementWithTest :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoWhileStatement+doWhileStatementWithTest original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.DocumentationComment+documentationComment :: Typed.TypedTerm String -> Typed.TypedTerm [Syntax.DocumentationTag] -> Typed.TypedTerm Syntax.DocumentationComment+documentationComment description tags =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "description"),+          Model.fieldTerm = (Typed.unTypedTerm description)},+        Model.Field {+          Model.fieldName = (Model.Name "tags"),+          Model.fieldTerm = (Typed.unTypedTerm tags)}]}))++-- | DSL accessor for the description field of hydra.typescript.syntax.DocumentationComment+documentationCommentDescription :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm String+documentationCommentDescription x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+        Model.projectionFieldName = (Model.Name "description")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.DocumentationComment+documentationCommentDocumentationComment :: Typed.TypedName Syntax.DocumentationComment+documentationCommentDocumentationComment = Typed.TypedName (Model.Name "hydra.typescript.syntax.DocumentationComment")++-- | DSL accessor for the tags field of hydra.typescript.syntax.DocumentationComment+documentationCommentTags :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm [Syntax.DocumentationTag]+documentationCommentTags x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+        Model.projectionFieldName = (Model.Name "tags")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the description field of hydra.typescript.syntax.DocumentationComment+documentationCommentWithDescription :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationComment+documentationCommentWithDescription original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "description"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "tags"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+              Model.projectionFieldName = (Model.Name "tags")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the tags field of hydra.typescript.syntax.DocumentationComment+documentationCommentWithTags :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm [Syntax.DocumentationTag] -> Typed.TypedTerm Syntax.DocumentationComment+documentationCommentWithTags original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "description"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+              Model.projectionFieldName = (Model.Name "description")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "tags"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.DocumentationTag+documentationTag :: Typed.TypedTerm String -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag+documentationTag name type_ paramName description =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "paramName"),+          Model.fieldTerm = (Typed.unTypedTerm paramName)},+        Model.Field {+          Model.fieldName = (Model.Name "description"),+          Model.fieldTerm = (Typed.unTypedTerm description)}]}))++-- | DSL accessor for the description field of hydra.typescript.syntax.DocumentationTag+documentationTagDescription :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String+documentationTagDescription x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+        Model.projectionFieldName = (Model.Name "description")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.DocumentationTag+documentationTagDocumentationTag :: Typed.TypedName Syntax.DocumentationTag+documentationTagDocumentationTag = Typed.TypedName (Model.Name "hydra.typescript.syntax.DocumentationTag")++-- | DSL accessor for the name field of hydra.typescript.syntax.DocumentationTag+documentationTagName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String+documentationTagName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the paramName field of hydra.typescript.syntax.DocumentationTag+documentationTagParamName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.Identifier)+documentationTagParamName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+        Model.projectionFieldName = (Model.Name "paramName")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.typescript.syntax.DocumentationTag+documentationTagType :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.TypeExpression)+documentationTagType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the description field of hydra.typescript.syntax.DocumentationTag+documentationTagWithDescription :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag+documentationTagWithDescription original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "paramName"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "paramName")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "description"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.typescript.syntax.DocumentationTag+documentationTagWithName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag+documentationTagWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "paramName"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "paramName")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "description"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "description")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the paramName field of hydra.typescript.syntax.DocumentationTag+documentationTagWithParamName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.DocumentationTag+documentationTagWithParamName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "paramName"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "description"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "description")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.typescript.syntax.DocumentationTag+documentationTagWithType :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.DocumentationTag+documentationTagWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "paramName"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "paramName")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "description"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+              Model.projectionFieldName = (Model.Name "description")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclaration :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ExportAllDeclaration+exportAllDeclaration exported source =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "exported"),+          Model.fieldTerm = (Typed.unTypedTerm exported)},+        Model.Field {+          Model.fieldName = (Model.Name "source"),+          Model.fieldTerm = (Typed.unTypedTerm source)}]}))++-- | DSL name token for hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclarationExportAllDeclaration :: Typed.TypedName Syntax.ExportAllDeclaration+exportAllDeclarationExportAllDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.ExportAllDeclaration")++-- | DSL accessor for the exported field of hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclarationExported :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm (Maybe Syntax.Identifier)+exportAllDeclarationExported x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+        Model.projectionFieldName = (Model.Name "exported")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the source field of hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclarationSource :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.StringLiteral+exportAllDeclarationSource x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+        Model.projectionFieldName = (Model.Name "source")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the exported field of hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclarationWithExported :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.ExportAllDeclaration+exportAllDeclarationWithExported original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "exported"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "source"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+              Model.projectionFieldName = (Model.Name "source")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the source field of hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclarationWithSource :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ExportAllDeclaration+exportAllDeclarationWithSource original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "exported"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+              Model.projectionFieldName = (Model.Name "exported")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "source"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the all variant of hydra.typescript.syntax.ExportDeclaration+exportDeclarationAll :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.ExportDeclaration+exportDeclarationAll x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ExportDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "all"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the declaration variant of hydra.typescript.syntax.ExportDeclaration+exportDeclarationDeclaration :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ExportDeclaration+exportDeclarationDeclaration x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ExportDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "declaration"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the default variant of hydra.typescript.syntax.ExportDeclaration+exportDeclarationDefault :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ExportDeclaration+exportDeclarationDefault x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ExportDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "default"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.ExportDeclaration+exportDeclarationExportDeclaration :: Typed.TypedName Syntax.ExportDeclaration+exportDeclarationExportDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.ExportDeclaration")++-- | DSL injection for the named variant of hydra.typescript.syntax.ExportDeclaration+exportDeclarationNamed :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm Syntax.ExportDeclaration+exportDeclarationNamed x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ExportDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "named"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ExportSpecifier+exportSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier+exportSpecifier local exported =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "local"),+          Model.fieldTerm = (Typed.unTypedTerm local)},+        Model.Field {+          Model.fieldName = (Model.Name "exported"),+          Model.fieldTerm = (Typed.unTypedTerm exported)}]}))++-- | DSL name token for hydra.typescript.syntax.ExportSpecifier+exportSpecifierExportSpecifier :: Typed.TypedName Syntax.ExportSpecifier+exportSpecifierExportSpecifier = Typed.TypedName (Model.Name "hydra.typescript.syntax.ExportSpecifier")++-- | DSL accessor for the exported field of hydra.typescript.syntax.ExportSpecifier+exportSpecifierExported :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier+exportSpecifierExported x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+        Model.projectionFieldName = (Model.Name "exported")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the local field of hydra.typescript.syntax.ExportSpecifier+exportSpecifierLocal :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier+exportSpecifierLocal x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+        Model.projectionFieldName = (Model.Name "local")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the exported field of hydra.typescript.syntax.ExportSpecifier+exportSpecifierWithExported :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier+exportSpecifierWithExported original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "local"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+              Model.projectionFieldName = (Model.Name "local")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "exported"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the local field of hydra.typescript.syntax.ExportSpecifier+exportSpecifierWithLocal :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier+exportSpecifierWithLocal original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "local"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "exported"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+              Model.projectionFieldName = (Model.Name "exported")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the array variant of hydra.typescript.syntax.Expression+expressionArray :: Typed.TypedTerm Syntax.ArrayExpression -> Typed.TypedTerm Syntax.Expression+expressionArray x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "array"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the arrow variant of hydra.typescript.syntax.Expression+expressionArrow :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.Expression+expressionArrow x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "arrow"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the asExpression variant of hydra.typescript.syntax.Expression+expressionAsExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression+expressionAsExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "asExpression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the assignment variant of hydra.typescript.syntax.Expression+expressionAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression+expressionAssignment x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "assignment"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the await variant of hydra.typescript.syntax.Expression+expressionAwait :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression+expressionAwait x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "await"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the binary variant of hydra.typescript.syntax.Expression+expressionBinary :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression+expressionBinary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "binary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the call variant of hydra.typescript.syntax.Expression+expressionCall :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression+expressionCall x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "call"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the conditional variant of hydra.typescript.syntax.Expression+expressionConditional :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression+expressionConditional x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "conditional"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.Expression+expressionExpression :: Typed.TypedName Syntax.Expression+expressionExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.Expression")++-- | DSL injection for the function variant of hydra.typescript.syntax.Expression+expressionFunction :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.Expression+expressionFunction x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "function"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the identifier variant of hydra.typescript.syntax.Expression+expressionIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Expression+expressionIdentifier x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "identifier"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the literal variant of hydra.typescript.syntax.Expression+expressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Expression+expressionLiteral x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "literal"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the member variant of hydra.typescript.syntax.Expression+expressionMember :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression+expressionMember x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "member"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the new variant of hydra.typescript.syntax.Expression+expressionNew :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression+expressionNew x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "new"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the object variant of hydra.typescript.syntax.Expression+expressionObject :: Typed.TypedTerm Syntax.ObjectExpression -> Typed.TypedTerm Syntax.Expression+expressionObject x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "object"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the parenthesized variant of hydra.typescript.syntax.Expression+expressionParenthesized :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression+expressionParenthesized x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "parenthesized"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the sequence variant of hydra.typescript.syntax.Expression+expressionSequence :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression+expressionSequence x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "sequence"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the spread variant of hydra.typescript.syntax.Expression+expressionSpread :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.Expression+expressionSpread x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "spread"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the this variant of hydra.typescript.syntax.Expression+expressionThis :: Typed.TypedTerm Syntax.Expression+expressionThis =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "this"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the unary variant of hydra.typescript.syntax.Expression+expressionUnary :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression+expressionUnary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "unary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the yield variant of hydra.typescript.syntax.Expression+expressionYield :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.Expression+expressionYield x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "yield"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.ForInLeft+forInLeftForInLeft :: Typed.TypedName Syntax.ForInLeft+forInLeftForInLeft = Typed.TypedName (Model.Name "hydra.typescript.syntax.ForInLeft")++-- | DSL injection for the pattern variant of hydra.typescript.syntax.ForInLeft+forInLeftPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.ForInLeft+forInLeftPattern x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ForInLeft"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "pattern"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the variable variant of hydra.typescript.syntax.ForInLeft+forInLeftVariable :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.ForInLeft+forInLeftVariable x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ForInLeft"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variable"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ForInStatement+forInStatement :: Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForInStatement+forInStatement left right body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Typed.unTypedTerm left)},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Typed.unTypedTerm right)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ForInStatement+forInStatementBody :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement+forInStatementBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ForInStatement+forInStatementForInStatement :: Typed.TypedName Syntax.ForInStatement+forInStatementForInStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.ForInStatement")++-- | DSL accessor for the left field of hydra.typescript.syntax.ForInStatement+forInStatementLeft :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.ForInLeft+forInStatementLeft x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+        Model.projectionFieldName = (Model.Name "left")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the right field of hydra.typescript.syntax.ForInStatement+forInStatementRight :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Expression+forInStatementRight x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+        Model.projectionFieldName = (Model.Name "right")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.ForInStatement+forInStatementWithBody :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForInStatement+forInStatementWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+              Model.projectionFieldName = (Model.Name "left")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+              Model.projectionFieldName = (Model.Name "right")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the left field of hydra.typescript.syntax.ForInStatement+forInStatementWithLeft :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.ForInStatement+forInStatementWithLeft original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+              Model.projectionFieldName = (Model.Name "right")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the right field of hydra.typescript.syntax.ForInStatement+forInStatementWithRight :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForInStatement+forInStatementWithRight original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+              Model.projectionFieldName = (Model.Name "left")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the expression variant of hydra.typescript.syntax.ForInit+forInitExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForInit+forInitExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ForInit"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.ForInit+forInitForInit :: Typed.TypedName Syntax.ForInit+forInitForInit = Typed.TypedName (Model.Name "hydra.typescript.syntax.ForInit")++-- | DSL injection for the variable variant of hydra.typescript.syntax.ForInit+forInitVariable :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.ForInit+forInitVariable x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ForInit"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variable"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ForOfStatement+forOfStatement :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForOfStatement+forOfStatement await left right body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "await"),+          Model.fieldTerm = (Typed.unTypedTerm await)},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Typed.unTypedTerm left)},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Typed.unTypedTerm right)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the await field of hydra.typescript.syntax.ForOfStatement+forOfStatementAwait :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Bool+forOfStatementAwait x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+        Model.projectionFieldName = (Model.Name "await")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ForOfStatement+forOfStatementBody :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement+forOfStatementBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ForOfStatement+forOfStatementForOfStatement :: Typed.TypedName Syntax.ForOfStatement+forOfStatementForOfStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.ForOfStatement")++-- | DSL accessor for the left field of hydra.typescript.syntax.ForOfStatement+forOfStatementLeft :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.ForInLeft+forOfStatementLeft x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+        Model.projectionFieldName = (Model.Name "left")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the right field of hydra.typescript.syntax.ForOfStatement+forOfStatementRight :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Expression+forOfStatementRight x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+        Model.projectionFieldName = (Model.Name "right")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the await field of hydra.typescript.syntax.ForOfStatement+forOfStatementWithAwait :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForOfStatement+forOfStatementWithAwait original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "await"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "left")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "right")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the body field of hydra.typescript.syntax.ForOfStatement+forOfStatementWithBody :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForOfStatement+forOfStatementWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "await"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "await")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "left")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "right")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the left field of hydra.typescript.syntax.ForOfStatement+forOfStatementWithLeft :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.ForOfStatement+forOfStatementWithLeft original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "await"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "await")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "right")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the right field of hydra.typescript.syntax.ForOfStatement+forOfStatementWithRight :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForOfStatement+forOfStatementWithRight original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "await"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "await")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "left"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "left")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "right"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.ForStatement+forStatement :: Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForStatement+forStatement init test update body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "init"),+          Model.fieldTerm = (Typed.unTypedTerm init)},+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm test)},+        Model.Field {+          Model.fieldName = (Model.Name "update"),+          Model.fieldTerm = (Typed.unTypedTerm update)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ForStatement+forStatementBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement+forStatementBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ForStatement+forStatementForStatement :: Typed.TypedName Syntax.ForStatement+forStatementForStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.ForStatement")++-- | DSL accessor for the init field of hydra.typescript.syntax.ForStatement+forStatementInit :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.ForInit)+forStatementInit x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+        Model.projectionFieldName = (Model.Name "init")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the test field of hydra.typescript.syntax.ForStatement+forStatementTest :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression)+forStatementTest x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+        Model.projectionFieldName = (Model.Name "test")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the update field of hydra.typescript.syntax.ForStatement+forStatementUpdate :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression)+forStatementUpdate x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+        Model.projectionFieldName = (Model.Name "update")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.ForStatement+forStatementWithBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForStatement+forStatementWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "init"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "init")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "test")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "update"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "update")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the init field of hydra.typescript.syntax.ForStatement+forStatementWithInit :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm Syntax.ForStatement+forStatementWithInit original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "init"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "test")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "update"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "update")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.ForStatement+forStatementWithTest :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ForStatement+forStatementWithTest original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "init"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "init")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "update"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "update")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the update field of hydra.typescript.syntax.ForStatement+forStatementWithUpdate :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ForStatement+forStatementWithUpdate original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "init"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "init")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "test")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "update"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.FunctionDeclaration+functionDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclaration id params body async generator =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm id)},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Typed.unTypedTerm params)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Typed.unTypedTerm async)},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Typed.unTypedTerm generator)}]}))++-- | DSL accessor for the async field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationAsync :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool+functionDeclarationAsync x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+        Model.projectionFieldName = (Model.Name "async")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationBody :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.BlockStatement+functionDeclarationBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.FunctionDeclaration+functionDeclarationFunctionDeclaration :: Typed.TypedName Syntax.FunctionDeclaration+functionDeclarationFunctionDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.FunctionDeclaration")++-- | DSL accessor for the generator field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationGenerator :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool+functionDeclarationGenerator x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+        Model.projectionFieldName = (Model.Name "generator")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the id field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationId :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Identifier+functionDeclarationId x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+        Model.projectionFieldName = (Model.Name "id")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the params field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationParams :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm [Syntax.Pattern]+functionDeclarationParams x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+        Model.projectionFieldName = (Model.Name "params")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the async field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationWithAsync :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithAsync original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "params")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "generator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the body field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationWithBody :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "params")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "async")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "generator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithComments :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments+functionDeclarationWithComments body comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsBody :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithCommentsBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the comments field of hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)+functionDeclarationWithCommentsComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsFunctionDeclarationWithComments :: Typed.TypedName Syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsFunctionDeclarationWithComments =+    Typed.TypedName (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments")++-- | DSL updater for the body field of hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsWithBody :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the comments field of hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the generator field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationWithGenerator :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithGenerator original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "params")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "async")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the id field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationWithId :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithId original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "params")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "async")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "generator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the params field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationWithParams :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithParams original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "async")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+              Model.projectionFieldName = (Model.Name "generator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.FunctionExpression+functionExpression :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression+functionExpression id params body async generator =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm id)},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Typed.unTypedTerm params)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Typed.unTypedTerm async)},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Typed.unTypedTerm generator)}]}))++-- | DSL accessor for the async field of hydra.typescript.syntax.FunctionExpression+functionExpressionAsync :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool+functionExpressionAsync x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+        Model.projectionFieldName = (Model.Name "async")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body field of hydra.typescript.syntax.FunctionExpression+functionExpressionBody :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.BlockStatement+functionExpressionBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.FunctionExpression+functionExpressionFunctionExpression :: Typed.TypedName Syntax.FunctionExpression+functionExpressionFunctionExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.FunctionExpression")++-- | DSL accessor for the generator field of hydra.typescript.syntax.FunctionExpression+functionExpressionGenerator :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool+functionExpressionGenerator x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+        Model.projectionFieldName = (Model.Name "generator")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the id field of hydra.typescript.syntax.FunctionExpression+functionExpressionId :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm (Maybe Syntax.Identifier)+functionExpressionId x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+        Model.projectionFieldName = (Model.Name "id")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the params field of hydra.typescript.syntax.FunctionExpression+functionExpressionParams :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm [Syntax.Pattern]+functionExpressionParams x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+        Model.projectionFieldName = (Model.Name "params")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the async field of hydra.typescript.syntax.FunctionExpression+functionExpressionWithAsync :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression+functionExpressionWithAsync original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "params")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "generator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the body field of hydra.typescript.syntax.FunctionExpression+functionExpressionWithBody :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.FunctionExpression+functionExpressionWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "params")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "async")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "generator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the generator field of hydra.typescript.syntax.FunctionExpression+functionExpressionWithGenerator :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression+functionExpressionWithGenerator original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "params")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "async")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the id field of hydra.typescript.syntax.FunctionExpression+functionExpressionWithId :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.FunctionExpression+functionExpressionWithId original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "params")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "async")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "generator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the params field of hydra.typescript.syntax.FunctionExpression+functionExpressionWithParams :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.FunctionExpression+functionExpressionWithParams original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "params"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "async"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "async")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "generator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+              Model.projectionFieldName = (Model.Name "generator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpression :: Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.FunctionTypeExpression+functionTypeExpression typeParameters parameters returnType =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Typed.unTypedTerm typeParameters)},+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Typed.unTypedTerm parameters)},+        Model.Field {+          Model.fieldName = (Model.Name "returnType"),+          Model.fieldTerm = (Typed.unTypedTerm returnType)}]}))++-- | DSL name token for hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionFunctionTypeExpression :: Typed.TypedName Syntax.FunctionTypeExpression+functionTypeExpressionFunctionTypeExpression =+    Typed.TypedName (Model.Name "hydra.typescript.syntax.FunctionTypeExpression")++-- | DSL accessor for the parameters field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression]+functionTypeExpressionParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+        Model.projectionFieldName = (Model.Name "parameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the returnType field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionReturnType :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+functionTypeExpressionReturnType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+        Model.projectionFieldName = (Model.Name "returnType")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeParameters field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionTypeParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeParameter]+functionTypeExpressionTypeParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+        Model.projectionFieldName = (Model.Name "typeParameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the parameters field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionWithParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.FunctionTypeExpression+functionTypeExpressionWithParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+              Model.projectionFieldName = (Model.Name "typeParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "returnType"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+              Model.projectionFieldName = (Model.Name "returnType")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the returnType field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionWithReturnType :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.FunctionTypeExpression+functionTypeExpressionWithReturnType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+              Model.projectionFieldName = (Model.Name "typeParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "returnType"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the typeParameters field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionWithTypeParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.FunctionTypeExpression+functionTypeExpressionWithTypeParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "returnType"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+              Model.projectionFieldName = (Model.Name "returnType")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.typescript.syntax.Identifier wrapper+identifier :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Identifier+identifier x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.Identifier"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.Identifier+identifierIdentifier :: Typed.TypedName Syntax.Identifier+identifierIdentifier = Typed.TypedName (Model.Name "hydra.typescript.syntax.Identifier")++-- | DSL constructor for hydra.typescript.syntax.IfStatement+ifStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm (Maybe Syntax.Statement) -> Typed.TypedTerm Syntax.IfStatement+ifStatement test consequent alternate =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm test)},+        Model.Field {+          Model.fieldName = (Model.Name "consequent"),+          Model.fieldTerm = (Typed.unTypedTerm consequent)},+        Model.Field {+          Model.fieldName = (Model.Name "alternate"),+          Model.fieldTerm = (Typed.unTypedTerm alternate)}]}))++-- | DSL accessor for the alternate field of hydra.typescript.syntax.IfStatement+ifStatementAlternate :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.Statement)+ifStatementAlternate x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+        Model.projectionFieldName = (Model.Name "alternate")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the consequent field of hydra.typescript.syntax.IfStatement+ifStatementConsequent :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement+ifStatementConsequent x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+        Model.projectionFieldName = (Model.Name "consequent")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.IfStatement+ifStatementIfStatement :: Typed.TypedName Syntax.IfStatement+ifStatementIfStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.IfStatement")++-- | DSL accessor for the test field of hydra.typescript.syntax.IfStatement+ifStatementTest :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Expression+ifStatementTest x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+        Model.projectionFieldName = (Model.Name "test")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the alternate field of hydra.typescript.syntax.IfStatement+ifStatementWithAlternate :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.Statement) -> Typed.TypedTerm Syntax.IfStatement+ifStatementWithAlternate original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+              Model.projectionFieldName = (Model.Name "test")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "consequent"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+              Model.projectionFieldName = (Model.Name "consequent")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "alternate"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the consequent field of hydra.typescript.syntax.IfStatement+ifStatementWithConsequent :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfStatement+ifStatementWithConsequent original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+              Model.projectionFieldName = (Model.Name "test")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "consequent"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "alternate"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+              Model.projectionFieldName = (Model.Name "alternate")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.IfStatement+ifStatementWithTest :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfStatement+ifStatementWithTest original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "consequent"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+              Model.projectionFieldName = (Model.Name "consequent")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "alternate"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+              Model.projectionFieldName = (Model.Name "alternate")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the default variant of hydra.typescript.syntax.ImportClause+importClauseDefault :: Typed.TypedTerm Syntax.ImportDefaultSpecifier -> Typed.TypedTerm Syntax.ImportClause+importClauseDefault x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ImportClause"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "default"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.ImportClause+importClauseImportClause :: Typed.TypedName Syntax.ImportClause+importClauseImportClause = Typed.TypedName (Model.Name "hydra.typescript.syntax.ImportClause")++-- | DSL injection for the named variant of hydra.typescript.syntax.ImportClause+importClauseNamed :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.ImportClause+importClauseNamed x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ImportClause"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "named"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the namespace variant of hydra.typescript.syntax.ImportClause+importClauseNamespace :: Typed.TypedTerm Syntax.ImportNamespaceSpecifier -> Typed.TypedTerm Syntax.ImportClause+importClauseNamespace x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ImportClause"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "namespace"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ImportDeclaration+importDeclaration :: Typed.TypedTerm [Syntax.ImportClause] -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ImportDeclaration+importDeclaration specifiers source =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "specifiers"),+          Model.fieldTerm = (Typed.unTypedTerm specifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "source"),+          Model.fieldTerm = (Typed.unTypedTerm source)}]}))++-- | DSL name token for hydra.typescript.syntax.ImportDeclaration+importDeclarationImportDeclaration :: Typed.TypedName Syntax.ImportDeclaration+importDeclarationImportDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.ImportDeclaration")++-- | DSL accessor for the source field of hydra.typescript.syntax.ImportDeclaration+importDeclarationSource :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.StringLiteral+importDeclarationSource x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+        Model.projectionFieldName = (Model.Name "source")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the specifiers field of hydra.typescript.syntax.ImportDeclaration+importDeclarationSpecifiers :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm [Syntax.ImportClause]+importDeclarationSpecifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+        Model.projectionFieldName = (Model.Name "specifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the source field of hydra.typescript.syntax.ImportDeclaration+importDeclarationWithSource :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ImportDeclaration+importDeclarationWithSource original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "specifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+              Model.projectionFieldName = (Model.Name "specifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "source"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the specifiers field of hydra.typescript.syntax.ImportDeclaration+importDeclarationWithSpecifiers :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm [Syntax.ImportClause] -> Typed.TypedTerm Syntax.ImportDeclaration+importDeclarationWithSpecifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "specifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "source"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+              Model.projectionFieldName = (Model.Name "source")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.typescript.syntax.ImportDefaultSpecifier wrapper+importDefaultSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportDefaultSpecifier+importDefaultSpecifier x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.ImportDefaultSpecifier"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ImportDefaultSpecifier+importDefaultSpecifierImportDefaultSpecifier :: Typed.TypedName Syntax.ImportDefaultSpecifier+importDefaultSpecifierImportDefaultSpecifier =+    Typed.TypedName (Model.Name "hydra.typescript.syntax.ImportDefaultSpecifier")++-- | DSL constructor for the hydra.typescript.syntax.ImportNamespaceSpecifier wrapper+importNamespaceSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportNamespaceSpecifier+importNamespaceSpecifier x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.ImportNamespaceSpecifier"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ImportNamespaceSpecifier+importNamespaceSpecifierImportNamespaceSpecifier :: Typed.TypedName Syntax.ImportNamespaceSpecifier+importNamespaceSpecifierImportNamespaceSpecifier =+    Typed.TypedName (Model.Name "hydra.typescript.syntax.ImportNamespaceSpecifier")++-- | DSL constructor for hydra.typescript.syntax.ImportSpecifier+importSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier+importSpecifier imported local =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "imported"),+          Model.fieldTerm = (Typed.unTypedTerm imported)},+        Model.Field {+          Model.fieldName = (Model.Name "local"),+          Model.fieldTerm = (Typed.unTypedTerm local)}]}))++-- | DSL name token for hydra.typescript.syntax.ImportSpecifier+importSpecifierImportSpecifier :: Typed.TypedName Syntax.ImportSpecifier+importSpecifierImportSpecifier = Typed.TypedName (Model.Name "hydra.typescript.syntax.ImportSpecifier")++-- | DSL accessor for the imported field of hydra.typescript.syntax.ImportSpecifier+importSpecifierImported :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier+importSpecifierImported x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+        Model.projectionFieldName = (Model.Name "imported")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the local field of hydra.typescript.syntax.ImportSpecifier+importSpecifierLocal :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier+importSpecifierLocal x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+        Model.projectionFieldName = (Model.Name "local")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the imported field of hydra.typescript.syntax.ImportSpecifier+importSpecifierWithImported :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier+importSpecifierWithImported original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "imported"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "local"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+              Model.projectionFieldName = (Model.Name "local")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the local field of hydra.typescript.syntax.ImportSpecifier+importSpecifierWithLocal :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier+importSpecifierWithLocal original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "imported"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+              Model.projectionFieldName = (Model.Name "imported")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "local"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm [Syntax.PropertySignature] -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclaration name typeParameters extends members =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Typed.unTypedTerm typeParameters)},+        Model.Field {+          Model.fieldName = (Model.Name "extends"),+          Model.fieldTerm = (Typed.unTypedTerm extends)},+        Model.Field {+          Model.fieldName = (Model.Name "members"),+          Model.fieldTerm = (Typed.unTypedTerm members)}]}))++-- | DSL accessor for the extends field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationExtends :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeExpression]+interfaceDeclarationExtends x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "extends")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationInterfaceDeclaration :: Typed.TypedName Syntax.InterfaceDeclaration+interfaceDeclarationInterfaceDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.InterfaceDeclaration")++-- | DSL accessor for the members field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationMembers :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.PropertySignature]+interfaceDeclarationMembers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "members")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationName :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.Identifier+interfaceDeclarationName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeParameters field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationTypeParameters :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]+interfaceDeclarationTypeParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "typeParameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the extends field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationWithExtends :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclarationWithExtends original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "typeParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "extends"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "members"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "members")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the members field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationWithMembers :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.PropertySignature] -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclarationWithMembers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "typeParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "extends"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "members"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationWithName :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclarationWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "typeParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "extends"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "members"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "members")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the typeParameters field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationWithTypeParameters :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclarationWithTypeParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "extends"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "members"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "members")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.LabeledStatement+labeledStatement :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement+labeledStatement label body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "label"),+          Model.fieldTerm = (Typed.unTypedTerm label)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.LabeledStatement+labeledStatementBody :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement+labeledStatementBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the label field of hydra.typescript.syntax.LabeledStatement+labeledStatementLabel :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier+labeledStatementLabel x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+        Model.projectionFieldName = (Model.Name "label")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.LabeledStatement+labeledStatementLabeledStatement :: Typed.TypedName Syntax.LabeledStatement+labeledStatementLabeledStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.LabeledStatement")++-- | DSL updater for the body field of hydra.typescript.syntax.LabeledStatement+labeledStatementWithBody :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement+labeledStatementWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "label"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+              Model.projectionFieldName = (Model.Name "label")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the label field of hydra.typescript.syntax.LabeledStatement+labeledStatementWithLabel :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.LabeledStatement+labeledStatementWithLabel original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "label"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the bigInt variant of hydra.typescript.syntax.Literal+literalBigInt :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.Literal+literalBigInt x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "bigInt"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the boolean variant of hydra.typescript.syntax.Literal+literalBoolean :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Literal+literalBoolean x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "boolean"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.Literal+literalLiteral :: Typed.TypedName Syntax.Literal+literalLiteral = Typed.TypedName (Model.Name "hydra.typescript.syntax.Literal")++-- | DSL injection for the null variant of hydra.typescript.syntax.Literal+literalNull :: Typed.TypedTerm Syntax.Literal+literalNull =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "null"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the number variant of hydra.typescript.syntax.Literal+literalNumber :: Typed.TypedTerm Syntax.NumericLiteral -> Typed.TypedTerm Syntax.Literal+literalNumber x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "number"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the string variant of hydra.typescript.syntax.Literal+literalString :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.Literal+literalString x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "string"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the template variant of hydra.typescript.syntax.Literal+literalTemplate :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm Syntax.Literal+literalTemplate x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "template"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the undefined variant of hydra.typescript.syntax.Literal+literalUndefined :: Typed.TypedTerm Syntax.Literal+literalUndefined =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "undefined"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.typescript.syntax.MemberExpression+memberExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression+memberExpression object property computed optional =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "object"),+          Model.fieldTerm = (Typed.unTypedTerm object)},+        Model.Field {+          Model.fieldName = (Model.Name "property"),+          Model.fieldTerm = (Typed.unTypedTerm property)},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Typed.unTypedTerm computed)},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Typed.unTypedTerm optional)}]}))++-- | DSL accessor for the computed field of hydra.typescript.syntax.MemberExpression+memberExpressionComputed :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool+memberExpressionComputed x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+        Model.projectionFieldName = (Model.Name "computed")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.MemberExpression+memberExpressionMemberExpression :: Typed.TypedName Syntax.MemberExpression+memberExpressionMemberExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.MemberExpression")++-- | DSL accessor for the object field of hydra.typescript.syntax.MemberExpression+memberExpressionObject :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression+memberExpressionObject x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+        Model.projectionFieldName = (Model.Name "object")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the optional field of hydra.typescript.syntax.MemberExpression+memberExpressionOptional :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool+memberExpressionOptional x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+        Model.projectionFieldName = (Model.Name "optional")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the property field of hydra.typescript.syntax.MemberExpression+memberExpressionProperty :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression+memberExpressionProperty x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+        Model.projectionFieldName = (Model.Name "property")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the computed field of hydra.typescript.syntax.MemberExpression+memberExpressionWithComputed :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression+memberExpressionWithComputed original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "object"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "object")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "property"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "property")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "optional")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the object field of hydra.typescript.syntax.MemberExpression+memberExpressionWithObject :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MemberExpression+memberExpressionWithObject original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "object"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "property"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "property")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "computed")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "optional")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the optional field of hydra.typescript.syntax.MemberExpression+memberExpressionWithOptional :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression+memberExpressionWithOptional original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "object"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "object")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "property"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "property")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "computed")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the property field of hydra.typescript.syntax.MemberExpression+memberExpressionWithProperty :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MemberExpression+memberExpressionWithProperty original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "object"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "object")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "property"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "computed")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+              Model.projectionFieldName = (Model.Name "optional")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.MethodDefinition+methodDefinition :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.MethodKind -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinition key value kind computed static =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Typed.unTypedTerm key)},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm value)},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Typed.unTypedTerm kind)},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Typed.unTypedTerm computed)},+        Model.Field {+          Model.fieldName = (Model.Name "static"),+          Model.fieldTerm = (Typed.unTypedTerm static)}]}))++-- | DSL accessor for the computed field of hydra.typescript.syntax.MethodDefinition+methodDefinitionComputed :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool+methodDefinitionComputed x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+        Model.projectionFieldName = (Model.Name "computed")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the key field of hydra.typescript.syntax.MethodDefinition+methodDefinitionKey :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.Expression+methodDefinitionKey x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+        Model.projectionFieldName = (Model.Name "key")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the kind field of hydra.typescript.syntax.MethodDefinition+methodDefinitionKind :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.MethodKind+methodDefinitionKind x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+        Model.projectionFieldName = (Model.Name "kind")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.MethodDefinition+methodDefinitionMethodDefinition :: Typed.TypedName Syntax.MethodDefinition+methodDefinitionMethodDefinition = Typed.TypedName (Model.Name "hydra.typescript.syntax.MethodDefinition")++-- | DSL accessor for the static field of hydra.typescript.syntax.MethodDefinition+methodDefinitionStatic :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool+methodDefinitionStatic x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+        Model.projectionFieldName = (Model.Name "static")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the value field of hydra.typescript.syntax.MethodDefinition+methodDefinitionValue :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.FunctionExpression+methodDefinitionValue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+        Model.projectionFieldName = (Model.Name "value")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the computed field of hydra.typescript.syntax.MethodDefinition+methodDefinitionWithComputed :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinitionWithComputed original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "key")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "kind")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "static"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "static")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the key field of hydra.typescript.syntax.MethodDefinition+methodDefinitionWithKey :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinitionWithKey original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "kind")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "computed")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "static"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "static")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the kind field of hydra.typescript.syntax.MethodDefinition+methodDefinitionWithKind :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.MethodKind -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinitionWithKind original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "key")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "computed")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "static"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "static")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the static field of hydra.typescript.syntax.MethodDefinition+methodDefinitionWithStatic :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinitionWithStatic original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "key")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "kind")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "computed")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "static"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the value field of hydra.typescript.syntax.MethodDefinition+methodDefinitionWithValue :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinitionWithValue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "key")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "kind")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "computed")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "static"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+              Model.projectionFieldName = (Model.Name "static")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the constructor variant of hydra.typescript.syntax.MethodKind+methodKindConstructor :: Typed.TypedTerm Syntax.MethodKind+methodKindConstructor =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.MethodKind"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "constructor"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the get variant of hydra.typescript.syntax.MethodKind+methodKindGet :: Typed.TypedTerm Syntax.MethodKind+methodKindGet =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.MethodKind"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "get"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the method variant of hydra.typescript.syntax.MethodKind+methodKindMethod :: Typed.TypedTerm Syntax.MethodKind+methodKindMethod =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.MethodKind"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "method"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.MethodKind+methodKindMethodKind :: Typed.TypedName Syntax.MethodKind+methodKindMethodKind = Typed.TypedName (Model.Name "hydra.typescript.syntax.MethodKind")++-- | DSL injection for the set variant of hydra.typescript.syntax.MethodKind+methodKindSet :: Typed.TypedTerm Syntax.MethodKind+methodKindSet =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.MethodKind"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "set"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the export variant of hydra.typescript.syntax.ModuleItem+moduleItemExport :: Typed.TypedTerm Syntax.ExportDeclaration -> Typed.TypedTerm Syntax.ModuleItem+moduleItemExport x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItem"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "export"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the import variant of hydra.typescript.syntax.ModuleItem+moduleItemImport :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.ModuleItem+moduleItemImport x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItem"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "import"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the interface variant of hydra.typescript.syntax.ModuleItem+moduleItemInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.ModuleItem+moduleItemInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItem"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "interface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.ModuleItem+moduleItemModuleItem :: Typed.TypedName Syntax.ModuleItem+moduleItemModuleItem = Typed.TypedName (Model.Name "hydra.typescript.syntax.ModuleItem")++-- | DSL injection for the statement variant of hydra.typescript.syntax.ModuleItem+moduleItemStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ModuleItem+moduleItemStatement x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItem"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "statement"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the typeAlias variant of hydra.typescript.syntax.ModuleItem+moduleItemTypeAlias :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.ModuleItem+moduleItemTypeAlias x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItem"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "typeAlias"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithComments :: Typed.TypedTerm Syntax.ModuleItem -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ModuleItemWithComments+moduleItemWithComments body comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithCommentsBody :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm Syntax.ModuleItem+moduleItemWithCommentsBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the comments field of hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithCommentsComments :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)+moduleItemWithCommentsComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithCommentsModuleItemWithComments :: Typed.TypedName Syntax.ModuleItemWithComments+moduleItemWithCommentsModuleItemWithComments =+    Typed.TypedName (Model.Name "hydra.typescript.syntax.ModuleItemWithComments")++-- | DSL updater for the body field of hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithCommentsWithBody :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm Syntax.ModuleItem -> Typed.TypedTerm Syntax.ModuleItemWithComments+moduleItemWithCommentsWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the comments field of hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithCommentsWithComments :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ModuleItemWithComments+moduleItemWithCommentsWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.NamedExport+namedExport :: Typed.TypedTerm [Syntax.ExportSpecifier] -> Typed.TypedTerm (Maybe Syntax.StringLiteral) -> Typed.TypedTerm Syntax.NamedExport+namedExport specifiers source =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "specifiers"),+          Model.fieldTerm = (Typed.unTypedTerm specifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "source"),+          Model.fieldTerm = (Typed.unTypedTerm source)}]}))++-- | DSL name token for hydra.typescript.syntax.NamedExport+namedExportNamedExport :: Typed.TypedName Syntax.NamedExport+namedExportNamedExport = Typed.TypedName (Model.Name "hydra.typescript.syntax.NamedExport")++-- | DSL accessor for the source field of hydra.typescript.syntax.NamedExport+namedExportSource :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm (Maybe Syntax.StringLiteral)+namedExportSource x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+        Model.projectionFieldName = (Model.Name "source")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the specifiers field of hydra.typescript.syntax.NamedExport+namedExportSpecifiers :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm [Syntax.ExportSpecifier]+namedExportSpecifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+        Model.projectionFieldName = (Model.Name "specifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the source field of hydra.typescript.syntax.NamedExport+namedExportWithSource :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm (Maybe Syntax.StringLiteral) -> Typed.TypedTerm Syntax.NamedExport+namedExportWithSource original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "specifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+              Model.projectionFieldName = (Model.Name "specifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "source"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the specifiers field of hydra.typescript.syntax.NamedExport+namedExportWithSpecifiers :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm [Syntax.ExportSpecifier] -> Typed.TypedTerm Syntax.NamedExport+namedExportWithSpecifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "specifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "source"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+              Model.projectionFieldName = (Model.Name "source")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the float variant of hydra.typescript.syntax.NumericLiteral+numericLiteralFloat :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.NumericLiteral+numericLiteralFloat x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.NumericLiteral"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "float"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the integer variant of hydra.typescript.syntax.NumericLiteral+numericLiteralInteger :: Typed.TypedTerm I.Int64 -> Typed.TypedTerm Syntax.NumericLiteral+numericLiteralInteger x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.NumericLiteral"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "integer"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.NumericLiteral+numericLiteralNumericLiteral :: Typed.TypedName Syntax.NumericLiteral+numericLiteralNumericLiteral = Typed.TypedName (Model.Name "hydra.typescript.syntax.NumericLiteral")++-- | DSL constructor for hydra.typescript.syntax.ObjectPattern+objectPattern :: Typed.TypedTerm [Syntax.ObjectPatternProperty] -> Typed.TypedTerm Syntax.ObjectPattern+objectPattern properties =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ObjectPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "properties"),+          Model.fieldTerm = (Typed.unTypedTerm properties)}]}))++-- | DSL name token for hydra.typescript.syntax.ObjectPattern+objectPatternObjectPattern :: Typed.TypedName Syntax.ObjectPattern+objectPatternObjectPattern = Typed.TypedName (Model.Name "hydra.typescript.syntax.ObjectPattern")++-- | DSL accessor for the properties field of hydra.typescript.syntax.ObjectPattern+objectPatternProperties :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm [Syntax.ObjectPatternProperty]+objectPatternProperties x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ObjectPattern"),+        Model.projectionFieldName = (Model.Name "properties")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ObjectPatternProperty+objectPatternPropertyObjectPatternProperty :: Typed.TypedName Syntax.ObjectPatternProperty+objectPatternPropertyObjectPatternProperty = Typed.TypedName (Model.Name "hydra.typescript.syntax.ObjectPatternProperty")++-- | DSL injection for the property variant of hydra.typescript.syntax.ObjectPatternProperty+objectPatternPropertyProperty :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.ObjectPatternProperty+objectPatternPropertyProperty x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ObjectPatternProperty"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "property"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the rest variant of hydra.typescript.syntax.ObjectPatternProperty+objectPatternPropertyRest :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.ObjectPatternProperty+objectPatternPropertyRest x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ObjectPatternProperty"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "rest"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL updater for the properties field of hydra.typescript.syntax.ObjectPattern+objectPatternWithProperties :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm [Syntax.ObjectPatternProperty] -> Typed.TypedTerm Syntax.ObjectPattern+objectPatternWithProperties original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ObjectPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "properties"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpression :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.ParameterizedTypeExpression+parameterizedTypeExpression base arguments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "base"),+          Model.fieldTerm = (Typed.unTypedTerm base)},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm arguments)}]}))++-- | DSL accessor for the arguments field of hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpressionArguments :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression]+parameterizedTypeExpressionArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+        Model.projectionFieldName = (Model.Name "arguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the base field of hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpressionBase :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+parameterizedTypeExpressionBase x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+        Model.projectionFieldName = (Model.Name "base")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpressionParameterizedTypeExpression :: Typed.TypedName Syntax.ParameterizedTypeExpression+parameterizedTypeExpressionParameterizedTypeExpression =+    Typed.TypedName (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression")++-- | DSL updater for the arguments field of hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpressionWithArguments :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.ParameterizedTypeExpression+parameterizedTypeExpressionWithArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "base"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+              Model.projectionFieldName = (Model.Name "base")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the base field of hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpressionWithBase :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.ParameterizedTypeExpression+parameterizedTypeExpressionWithBase original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "base"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the array variant of hydra.typescript.syntax.Pattern+patternArray :: Typed.TypedTerm Syntax.ArrayPattern -> Typed.TypedTerm Syntax.Pattern+patternArray x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "array"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the assignment variant of hydra.typescript.syntax.Pattern+patternAssignment :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern+patternAssignment x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "assignment"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the identifier variant of hydra.typescript.syntax.Pattern+patternIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Pattern+patternIdentifier x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "identifier"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the object variant of hydra.typescript.syntax.Pattern+patternObject :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm Syntax.Pattern+patternObject x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "object"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.Pattern+patternPattern :: Typed.TypedName Syntax.Pattern+patternPattern = Typed.TypedName (Model.Name "hydra.typescript.syntax.Pattern")++-- | DSL injection for the rest variant of hydra.typescript.syntax.Pattern+patternRest :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.Pattern+patternRest x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "rest"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the typed variant of hydra.typescript.syntax.Pattern+patternTyped :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern+patternTyped x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "typed"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.Program+program :: Typed.TypedTerm [Syntax.ModuleItem] -> Typed.TypedTerm Syntax.SourceType -> Typed.TypedTerm Syntax.Program+program body sourceType =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Program"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)},+        Model.Field {+          Model.fieldName = (Model.Name "sourceType"),+          Model.fieldTerm = (Typed.unTypedTerm sourceType)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.Program+programBody :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm [Syntax.ModuleItem]+programBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Program"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.Program+programProgram :: Typed.TypedName Syntax.Program+programProgram = Typed.TypedName (Model.Name "hydra.typescript.syntax.Program")++-- | DSL accessor for the sourceType field of hydra.typescript.syntax.Program+programSourceType :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm Syntax.SourceType+programSourceType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Program"),+        Model.projectionFieldName = (Model.Name "sourceType")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.Program+programWithBody :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm [Syntax.ModuleItem] -> Typed.TypedTerm Syntax.Program+programWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Program"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "sourceType"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Program"),+              Model.projectionFieldName = (Model.Name "sourceType")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the sourceType field of hydra.typescript.syntax.Program+programWithSourceType :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm Syntax.SourceType -> Typed.TypedTerm Syntax.Program+programWithSourceType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Program"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Program"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "sourceType"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.Property+property :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.PropertyKind -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property+property key value kind computed shorthand =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Typed.unTypedTerm key)},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm value)},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Typed.unTypedTerm kind)},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Typed.unTypedTerm computed)},+        Model.Field {+          Model.fieldName = (Model.Name "shorthand"),+          Model.fieldTerm = (Typed.unTypedTerm shorthand)}]}))++-- | DSL accessor for the computed field of hydra.typescript.syntax.Property+propertyComputed :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool+propertyComputed x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+        Model.projectionFieldName = (Model.Name "computed")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the key field of hydra.typescript.syntax.Property+propertyKey :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression+propertyKey x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+        Model.projectionFieldName = (Model.Name "key")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the kind field of hydra.typescript.syntax.Property+propertyKind :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.PropertyKind+propertyKind x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+        Model.projectionFieldName = (Model.Name "kind")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL injection for the get variant of hydra.typescript.syntax.PropertyKind+propertyKindGet :: Typed.TypedTerm Syntax.PropertyKind+propertyKindGet =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.PropertyKind"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "get"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the init variant of hydra.typescript.syntax.PropertyKind+propertyKindInit :: Typed.TypedTerm Syntax.PropertyKind+propertyKindInit =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.PropertyKind"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "init"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.PropertyKind+propertyKindPropertyKind :: Typed.TypedName Syntax.PropertyKind+propertyKindPropertyKind = Typed.TypedName (Model.Name "hydra.typescript.syntax.PropertyKind")++-- | DSL injection for the set variant of hydra.typescript.syntax.PropertyKind+propertyKindSet :: Typed.TypedTerm Syntax.PropertyKind+propertyKindSet =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.PropertyKind"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "set"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.Property+propertyProperty :: Typed.TypedName Syntax.Property+propertyProperty = Typed.TypedName (Model.Name "hydra.typescript.syntax.Property")++-- | DSL accessor for the shorthand field of hydra.typescript.syntax.Property+propertyShorthand :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool+propertyShorthand x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+        Model.projectionFieldName = (Model.Name "shorthand")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for hydra.typescript.syntax.PropertySignature+propertySignature :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.PropertySignature+propertySignature name type_ optional readonly comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Typed.unTypedTerm optional)},+        Model.Field {+          Model.fieldName = (Model.Name "readonly"),+          Model.fieldTerm = (Typed.unTypedTerm readonly)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the comments field of hydra.typescript.syntax.PropertySignature+propertySignatureComments :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)+propertySignatureComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.typescript.syntax.PropertySignature+propertySignatureName :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.Identifier+propertySignatureName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the optional field of hydra.typescript.syntax.PropertySignature+propertySignatureOptional :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool+propertySignatureOptional x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+        Model.projectionFieldName = (Model.Name "optional")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.PropertySignature+propertySignaturePropertySignature :: Typed.TypedName Syntax.PropertySignature+propertySignaturePropertySignature = Typed.TypedName (Model.Name "hydra.typescript.syntax.PropertySignature")++-- | DSL accessor for the readonly field of hydra.typescript.syntax.PropertySignature+propertySignatureReadonly :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool+propertySignatureReadonly x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+        Model.projectionFieldName = (Model.Name "readonly")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.typescript.syntax.PropertySignature+propertySignatureType :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.TypeExpression+propertySignatureType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the comments field of hydra.typescript.syntax.PropertySignature+propertySignatureWithComments :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.PropertySignature+propertySignatureWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "optional")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "readonly"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "readonly")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.typescript.syntax.PropertySignature+propertySignatureWithName :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.PropertySignature+propertySignatureWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "optional")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "readonly"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "readonly")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the optional field of hydra.typescript.syntax.PropertySignature+propertySignatureWithOptional :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.PropertySignature+propertySignatureWithOptional original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "readonly"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "readonly")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the readonly field of hydra.typescript.syntax.PropertySignature+propertySignatureWithReadonly :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.PropertySignature+propertySignatureWithReadonly original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "optional")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "readonly"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.typescript.syntax.PropertySignature+propertySignatureWithType :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.PropertySignature+propertySignatureWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "optional"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "optional")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "readonly"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "readonly")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL accessor for the value field of hydra.typescript.syntax.Property+propertyValue :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression+propertyValue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+        Model.projectionFieldName = (Model.Name "value")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the computed field of hydra.typescript.syntax.Property+propertyWithComputed :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property+propertyWithComputed original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "key")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "kind")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "shorthand"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "shorthand")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the key field of hydra.typescript.syntax.Property+propertyWithKey :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Property+propertyWithKey original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "kind")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "computed")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "shorthand"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "shorthand")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the kind field of hydra.typescript.syntax.Property+propertyWithKind :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.PropertyKind -> Typed.TypedTerm Syntax.Property+propertyWithKind original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "key")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "computed")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "shorthand"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "shorthand")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the shorthand field of hydra.typescript.syntax.Property+propertyWithShorthand :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property+propertyWithShorthand original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "key")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "kind")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "computed")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "shorthand"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the value field of hydra.typescript.syntax.Property+propertyWithValue :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Property+propertyWithValue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "key")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "kind")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "computed"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "computed")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "shorthand"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+              Model.projectionFieldName = (Model.Name "shorthand")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.typescript.syntax.RestElement wrapper+restElement :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.RestElement+restElement x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.RestElement"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.RestElement+restElementRestElement :: Typed.TypedName Syntax.RestElement+restElementRestElement = Typed.TypedName (Model.Name "hydra.typescript.syntax.RestElement")++-- | DSL injection for the module variant of hydra.typescript.syntax.SourceType+sourceTypeModule :: Typed.TypedTerm Syntax.SourceType+sourceTypeModule =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.SourceType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "module"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the script variant of hydra.typescript.syntax.SourceType+sourceTypeScript :: Typed.TypedTerm Syntax.SourceType+sourceTypeScript =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.SourceType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "script"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.SourceType+sourceTypeSourceType :: Typed.TypedName Syntax.SourceType+sourceTypeSourceType = Typed.TypedName (Model.Name "hydra.typescript.syntax.SourceType")++-- | DSL constructor for the hydra.typescript.syntax.SpreadElement wrapper+spreadElement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SpreadElement+spreadElement x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.SpreadElement"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.SpreadElement+spreadElementSpreadElement :: Typed.TypedName Syntax.SpreadElement+spreadElementSpreadElement = Typed.TypedName (Model.Name "hydra.typescript.syntax.SpreadElement")++-- | DSL injection for the block variant of hydra.typescript.syntax.Statement+statementBlock :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.Statement+statementBlock x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "block"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the break variant of hydra.typescript.syntax.Statement+statementBreak :: Typed.TypedTerm Syntax.BreakStatement -> Typed.TypedTerm Syntax.Statement+statementBreak x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "break"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the classDeclaration variant of hydra.typescript.syntax.Statement+statementClassDeclaration :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Statement+statementClassDeclaration x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "classDeclaration"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the continue variant of hydra.typescript.syntax.Statement+statementContinue :: Typed.TypedTerm Syntax.ContinueStatement -> Typed.TypedTerm Syntax.Statement+statementContinue x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "continue"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the debugger variant of hydra.typescript.syntax.Statement+statementDebugger :: Typed.TypedTerm Syntax.Statement+statementDebugger =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "debugger"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the doWhile variant of hydra.typescript.syntax.Statement+statementDoWhile :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement+statementDoWhile x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "doWhile"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the empty variant of hydra.typescript.syntax.Statement+statementEmpty :: Typed.TypedTerm Syntax.Statement+statementEmpty =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "empty"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the expression variant of hydra.typescript.syntax.Statement+statementExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement+statementExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the for variant of hydra.typescript.syntax.Statement+statementFor :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement+statementFor x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "for"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the forIn variant of hydra.typescript.syntax.Statement+statementForIn :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement+statementForIn x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "forIn"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the forOf variant of hydra.typescript.syntax.Statement+statementForOf :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement+statementForOf x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "forOf"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the functionDeclaration variant of hydra.typescript.syntax.Statement+statementFunctionDeclaration :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Statement+statementFunctionDeclaration x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "functionDeclaration"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the if variant of hydra.typescript.syntax.Statement+statementIf :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement+statementIf x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "if"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the labeled variant of hydra.typescript.syntax.Statement+statementLabeled :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement+statementLabeled x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "labeled"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the return variant of hydra.typescript.syntax.Statement+statementReturn :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm Syntax.Statement+statementReturn x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "return"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.Statement+statementStatement :: Typed.TypedName Syntax.Statement+statementStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.Statement")++-- | DSL injection for the switch variant of hydra.typescript.syntax.Statement+statementSwitch :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Statement+statementSwitch x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "switch"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the throw variant of hydra.typescript.syntax.Statement+statementThrow :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.Statement+statementThrow x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "throw"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the try variant of hydra.typescript.syntax.Statement+statementTry :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.Statement+statementTry x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "try"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the variableDeclaration variant of hydra.typescript.syntax.Statement+statementVariableDeclaration :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.Statement+statementVariableDeclaration x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variableDeclaration"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the while variant of hydra.typescript.syntax.Statement+statementWhile :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement+statementWhile x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "while"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.StatementWithComments+statementWithComments :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.StatementWithComments+statementWithComments body comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.StatementWithComments+statementWithCommentsBody :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm Syntax.Statement+statementWithCommentsBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the comments field of hydra.typescript.syntax.StatementWithComments+statementWithCommentsComments :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)+statementWithCommentsComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.StatementWithComments+statementWithCommentsStatementWithComments :: Typed.TypedName Syntax.StatementWithComments+statementWithCommentsStatementWithComments = Typed.TypedName (Model.Name "hydra.typescript.syntax.StatementWithComments")++-- | DSL updater for the body field of hydra.typescript.syntax.StatementWithComments+statementWithCommentsWithBody :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.StatementWithComments+statementWithCommentsWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the comments field of hydra.typescript.syntax.StatementWithComments+statementWithCommentsWithComments :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.StatementWithComments+statementWithCommentsWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.StringLiteral+stringLiteral :: Typed.TypedTerm String -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.StringLiteral+stringLiteral value singleQuote =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm value)},+        Model.Field {+          Model.fieldName = (Model.Name "singleQuote"),+          Model.fieldTerm = (Typed.unTypedTerm singleQuote)}]}))++-- | DSL accessor for the singleQuote field of hydra.typescript.syntax.StringLiteral+stringLiteralSingleQuote :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Bool+stringLiteralSingleQuote x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+        Model.projectionFieldName = (Model.Name "singleQuote")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.StringLiteral+stringLiteralStringLiteral :: Typed.TypedName Syntax.StringLiteral+stringLiteralStringLiteral = Typed.TypedName (Model.Name "hydra.typescript.syntax.StringLiteral")++-- | DSL accessor for the value field of hydra.typescript.syntax.StringLiteral+stringLiteralValue :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm String+stringLiteralValue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+        Model.projectionFieldName = (Model.Name "value")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the singleQuote field of hydra.typescript.syntax.StringLiteral+stringLiteralWithSingleQuote :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.StringLiteral+stringLiteralWithSingleQuote original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "singleQuote"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the value field of hydra.typescript.syntax.StringLiteral+stringLiteralWithValue :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.StringLiteral+stringLiteralWithValue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "singleQuote"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+              Model.projectionFieldName = (Model.Name "singleQuote")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.SwitchCase+switchCase :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.SwitchCase+switchCase test consequent =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm test)},+        Model.Field {+          Model.fieldName = (Model.Name "consequent"),+          Model.fieldTerm = (Typed.unTypedTerm consequent)}]}))++-- | DSL accessor for the consequent field of hydra.typescript.syntax.SwitchCase+switchCaseConsequent :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm [Syntax.Statement]+switchCaseConsequent x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+        Model.projectionFieldName = (Model.Name "consequent")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.SwitchCase+switchCaseSwitchCase :: Typed.TypedName Syntax.SwitchCase+switchCaseSwitchCase = Typed.TypedName (Model.Name "hydra.typescript.syntax.SwitchCase")++-- | DSL accessor for the test field of hydra.typescript.syntax.SwitchCase+switchCaseTest :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm (Maybe Syntax.Expression)+switchCaseTest x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+        Model.projectionFieldName = (Model.Name "test")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the consequent field of hydra.typescript.syntax.SwitchCase+switchCaseWithConsequent :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.SwitchCase+switchCaseWithConsequent original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+              Model.projectionFieldName = (Model.Name "test")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "consequent"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.SwitchCase+switchCaseWithTest :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SwitchCase+switchCaseWithTest original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "consequent"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+              Model.projectionFieldName = (Model.Name "consequent")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.SwitchStatement+switchStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.SwitchCase] -> Typed.TypedTerm Syntax.SwitchStatement+switchStatement discriminant cases =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "discriminant"),+          Model.fieldTerm = (Typed.unTypedTerm discriminant)},+        Model.Field {+          Model.fieldName = (Model.Name "cases"),+          Model.fieldTerm = (Typed.unTypedTerm cases)}]}))++-- | DSL accessor for the cases field of hydra.typescript.syntax.SwitchStatement+switchStatementCases :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm [Syntax.SwitchCase]+switchStatementCases x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+        Model.projectionFieldName = (Model.Name "cases")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the discriminant field of hydra.typescript.syntax.SwitchStatement+switchStatementDiscriminant :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression+switchStatementDiscriminant x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+        Model.projectionFieldName = (Model.Name "discriminant")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.SwitchStatement+switchStatementSwitchStatement :: Typed.TypedName Syntax.SwitchStatement+switchStatementSwitchStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.SwitchStatement")++-- | DSL updater for the cases field of hydra.typescript.syntax.SwitchStatement+switchStatementWithCases :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm [Syntax.SwitchCase] -> Typed.TypedTerm Syntax.SwitchStatement+switchStatementWithCases original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "discriminant"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+              Model.projectionFieldName = (Model.Name "discriminant")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "cases"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the discriminant field of hydra.typescript.syntax.SwitchStatement+switchStatementWithDiscriminant :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchStatement+switchStatementWithDiscriminant original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "discriminant"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "cases"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+              Model.projectionFieldName = (Model.Name "cases")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.TemplateElement+templateElement :: Typed.TypedTerm String -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.TemplateElement+templateElement value tail =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm value)},+        Model.Field {+          Model.fieldName = (Model.Name "tail"),+          Model.fieldTerm = (Typed.unTypedTerm tail)}]}))++-- | DSL accessor for the tail field of hydra.typescript.syntax.TemplateElement+templateElementTail :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm Bool+templateElementTail x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+        Model.projectionFieldName = (Model.Name "tail")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TemplateElement+templateElementTemplateElement :: Typed.TypedName Syntax.TemplateElement+templateElementTemplateElement = Typed.TypedName (Model.Name "hydra.typescript.syntax.TemplateElement")++-- | DSL accessor for the value field of hydra.typescript.syntax.TemplateElement+templateElementValue :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm String+templateElementValue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+        Model.projectionFieldName = (Model.Name "value")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the tail field of hydra.typescript.syntax.TemplateElement+templateElementWithTail :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.TemplateElement+templateElementWithTail original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "tail"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the value field of hydra.typescript.syntax.TemplateElement+templateElementWithValue :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.TemplateElement+templateElementWithValue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "tail"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+              Model.projectionFieldName = (Model.Name "tail")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.TemplateLiteral+templateLiteral :: Typed.TypedTerm [Syntax.TemplateElement] -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.TemplateLiteral+templateLiteral quasis expressions =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "quasis"),+          Model.fieldTerm = (Typed.unTypedTerm quasis)},+        Model.Field {+          Model.fieldName = (Model.Name "expressions"),+          Model.fieldTerm = (Typed.unTypedTerm expressions)}]}))++-- | DSL accessor for the expressions field of hydra.typescript.syntax.TemplateLiteral+templateLiteralExpressions :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.Expression]+templateLiteralExpressions x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+        Model.projectionFieldName = (Model.Name "expressions")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the quasis field of hydra.typescript.syntax.TemplateLiteral+templateLiteralQuasis :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.TemplateElement]+templateLiteralQuasis x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+        Model.projectionFieldName = (Model.Name "quasis")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TemplateLiteral+templateLiteralTemplateLiteral :: Typed.TypedName Syntax.TemplateLiteral+templateLiteralTemplateLiteral = Typed.TypedName (Model.Name "hydra.typescript.syntax.TemplateLiteral")++-- | DSL updater for the expressions field of hydra.typescript.syntax.TemplateLiteral+templateLiteralWithExpressions :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.TemplateLiteral+templateLiteralWithExpressions original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "quasis"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+              Model.projectionFieldName = (Model.Name "quasis")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expressions"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the quasis field of hydra.typescript.syntax.TemplateLiteral+templateLiteralWithQuasis :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.TemplateElement] -> Typed.TypedTerm Syntax.TemplateLiteral+templateLiteralWithQuasis original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "quasis"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "expressions"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+              Model.projectionFieldName = (Model.Name "expressions")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.typescript.syntax.ThrowStatement wrapper+throwStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ThrowStatement+throwStatement x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.ThrowStatement"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ThrowStatement+throwStatementThrowStatement :: Typed.TypedName Syntax.ThrowStatement+throwStatementThrowStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.ThrowStatement")++-- | DSL constructor for hydra.typescript.syntax.TryStatement+tryStatement :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause) -> Typed.TypedTerm (Maybe Syntax.BlockStatement) -> Typed.TypedTerm Syntax.TryStatement+tryStatement block handler finalizer =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm block)},+        Model.Field {+          Model.fieldName = (Model.Name "handler"),+          Model.fieldTerm = (Typed.unTypedTerm handler)},+        Model.Field {+          Model.fieldName = (Model.Name "finalizer"),+          Model.fieldTerm = (Typed.unTypedTerm finalizer)}]}))++-- | DSL accessor for the block field of hydra.typescript.syntax.TryStatement+tryStatementBlock :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.BlockStatement+tryStatementBlock x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+        Model.projectionFieldName = (Model.Name "block")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the finalizer field of hydra.typescript.syntax.TryStatement+tryStatementFinalizer :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.BlockStatement)+tryStatementFinalizer x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+        Model.projectionFieldName = (Model.Name "finalizer")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the handler field of hydra.typescript.syntax.TryStatement+tryStatementHandler :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause)+tryStatementHandler x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+        Model.projectionFieldName = (Model.Name "handler")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TryStatement+tryStatementTryStatement :: Typed.TypedName Syntax.TryStatement+tryStatementTryStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.TryStatement")++-- | DSL updater for the block field of hydra.typescript.syntax.TryStatement+tryStatementWithBlock :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.TryStatement+tryStatementWithBlock original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "handler"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+              Model.projectionFieldName = (Model.Name "handler")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "finalizer"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+              Model.projectionFieldName = (Model.Name "finalizer")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the finalizer field of hydra.typescript.syntax.TryStatement+tryStatementWithFinalizer :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.BlockStatement) -> Typed.TypedTerm Syntax.TryStatement+tryStatementWithFinalizer original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "handler"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+              Model.projectionFieldName = (Model.Name "handler")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "finalizer"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the handler field of hydra.typescript.syntax.TryStatement+tryStatementWithHandler :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause) -> Typed.TypedTerm Syntax.TryStatement+tryStatementWithHandler original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "handler"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "finalizer"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+              Model.projectionFieldName = (Model.Name "finalizer")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAliasDeclaration+typeAliasDeclaration name typeParameters type_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Typed.unTypedTerm typeParameters)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL accessor for the name field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationName :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.Identifier+typeAliasDeclarationName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationType :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.TypeExpression+typeAliasDeclarationType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationTypeAliasDeclaration :: Typed.TypedName Syntax.TypeAliasDeclaration+typeAliasDeclarationTypeAliasDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration")++-- | DSL accessor for the typeParameters field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationTypeParameters :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]+typeAliasDeclarationTypeParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+        Model.projectionFieldName = (Model.Name "typeParameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the name field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationWithName :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeAliasDeclaration+typeAliasDeclarationWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+              Model.projectionFieldName = (Model.Name "typeParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationWithType :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAliasDeclaration+typeAliasDeclarationWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+              Model.projectionFieldName = (Model.Name "typeParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the typeParameters field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationWithTypeParameters :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.TypeAliasDeclaration+typeAliasDeclarationWithTypeParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeParameters"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.typescript.syntax.TypeAnnotation wrapper+typeAnnotation :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAnnotation+typeAnnotation x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.TypeAnnotation"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TypeAnnotation+typeAnnotationTypeAnnotation :: Typed.TypedName Syntax.TypeAnnotation+typeAnnotationTypeAnnotation = Typed.TypedName (Model.Name "hydra.typescript.syntax.TypeAnnotation")++-- | DSL injection for the any variant of hydra.typescript.syntax.TypeExpression+typeExpressionAny :: Typed.TypedTerm Syntax.TypeExpression+typeExpressionAny =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "any"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the array variant of hydra.typescript.syntax.TypeExpression+typeExpressionArray :: Typed.TypedTerm Syntax.ArrayTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionArray x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "array"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the function variant of hydra.typescript.syntax.TypeExpression+typeExpressionFunction :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionFunction x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "function"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the identifier variant of hydra.typescript.syntax.TypeExpression+typeExpressionIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionIdentifier x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "identifier"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the intersection variant of hydra.typescript.syntax.TypeExpression+typeExpressionIntersection :: Typed.TypedTerm Syntax.IntersectionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionIntersection x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "intersection"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the literal variant of hydra.typescript.syntax.TypeExpression+typeExpressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionLiteral x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "literal"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the never variant of hydra.typescript.syntax.TypeExpression+typeExpressionNever :: Typed.TypedTerm Syntax.TypeExpression+typeExpressionNever =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "never"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the object variant of hydra.typescript.syntax.TypeExpression+typeExpressionObject :: Typed.TypedTerm Syntax.ObjectTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionObject x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "object"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the optional variant of hydra.typescript.syntax.TypeExpression+typeExpressionOptional :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionOptional x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "optional"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the parameterized variant of hydra.typescript.syntax.TypeExpression+typeExpressionParameterized :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionParameterized x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "parameterized"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the readonly variant of hydra.typescript.syntax.TypeExpression+typeExpressionReadonly :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionReadonly x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "readonly"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the tuple variant of hydra.typescript.syntax.TypeExpression+typeExpressionTuple :: Typed.TypedTerm Syntax.TupleTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionTuple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "tuple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.TypeExpression+typeExpressionTypeExpression :: Typed.TypedName Syntax.TypeExpression+typeExpressionTypeExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.TypeExpression")++-- | DSL injection for the union variant of hydra.typescript.syntax.TypeExpression+typeExpressionUnion :: Typed.TypedTerm Syntax.UnionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionUnion x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "union"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the unknown variant of hydra.typescript.syntax.TypeExpression+typeExpressionUnknown :: Typed.TypedTerm Syntax.TypeExpression+typeExpressionUnknown =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "unknown"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the void variant of hydra.typescript.syntax.TypeExpression+typeExpressionVoid :: Typed.TypedTerm Syntax.TypeExpression+typeExpressionVoid =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "void"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.typescript.syntax.TypeParameter+typeParameter :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter+typeParameter name constraint default_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "constraint"),+          Model.fieldTerm = (Typed.unTypedTerm constraint)},+        Model.Field {+          Model.fieldName = (Model.Name "default"),+          Model.fieldTerm = (Typed.unTypedTerm default_)}]}))++-- | DSL accessor for the constraint field of hydra.typescript.syntax.TypeParameter+typeParameterConstraint :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression)+typeParameterConstraint x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+        Model.projectionFieldName = (Model.Name "constraint")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the default field of hydra.typescript.syntax.TypeParameter+typeParameterDefault :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression)+typeParameterDefault x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+        Model.projectionFieldName = (Model.Name "default")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.typescript.syntax.TypeParameter+typeParameterName :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.Identifier+typeParameterName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TypeParameter+typeParameterTypeParameter :: Typed.TypedName Syntax.TypeParameter+typeParameterTypeParameter = Typed.TypedName (Model.Name "hydra.typescript.syntax.TypeParameter")++-- | DSL updater for the constraint field of hydra.typescript.syntax.TypeParameter+typeParameterWithConstraint :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter+typeParameterWithConstraint original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "constraint"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "default"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "default")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the default field of hydra.typescript.syntax.TypeParameter+typeParameterWithDefault :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter+typeParameterWithDefault original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "constraint"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "constraint")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "default"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.typescript.syntax.TypeParameter+typeParameterWithName :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeParameter+typeParameterWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "constraint"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "constraint")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "default"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "default")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.TypedPattern+typedPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypedPattern+typedPattern pattern type_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Typed.unTypedTerm pattern)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL accessor for the pattern field of hydra.typescript.syntax.TypedPattern+typedPatternPattern :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern+typedPatternPattern x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+        Model.projectionFieldName = (Model.Name "pattern")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.typescript.syntax.TypedPattern+typedPatternType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.TypeExpression+typedPatternType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TypedPattern+typedPatternTypedPattern :: Typed.TypedName Syntax.TypedPattern+typedPatternTypedPattern = Typed.TypedName (Model.Name "hydra.typescript.syntax.TypedPattern")++-- | DSL updater for the pattern field of hydra.typescript.syntax.TypedPattern+typedPatternWithPattern :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.TypedPattern+typedPatternWithPattern original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.typescript.syntax.TypedPattern+typedPatternWithType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypedPattern+typedPatternWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+              Model.projectionFieldName = (Model.Name "pattern")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL accessor for the body of hydra.typescript.syntax.ArrayTypeExpression+unArrayTypeExpression :: Typed.TypedTerm Syntax.ArrayTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+unArrayTypeExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.ArrayTypeExpression")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.Identifier+unIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm String+unIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.Identifier")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.ImportDefaultSpecifier+unImportDefaultSpecifier :: Typed.TypedTerm Syntax.ImportDefaultSpecifier -> Typed.TypedTerm Syntax.Identifier+unImportDefaultSpecifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.ImportDefaultSpecifier")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.ImportNamespaceSpecifier+unImportNamespaceSpecifier :: Typed.TypedTerm Syntax.ImportNamespaceSpecifier -> Typed.TypedTerm Syntax.Identifier+unImportNamespaceSpecifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.ImportNamespaceSpecifier")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.RestElement+unRestElement :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.Pattern+unRestElement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.RestElement")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.SpreadElement+unSpreadElement :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.Expression+unSpreadElement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.SpreadElement")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.ThrowStatement+unThrowStatement :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.Expression+unThrowStatement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.ThrowStatement")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.TypeAnnotation+unTypeAnnotation :: Typed.TypedTerm Syntax.TypeAnnotation -> Typed.TypedTerm Syntax.TypeExpression+unTypeAnnotation x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.TypeAnnotation")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for hydra.typescript.syntax.UnaryExpression+unaryExpression :: Typed.TypedTerm Syntax.UnaryOperator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpression operator argument prefix =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm operator)},+        Model.Field {+          Model.fieldName = (Model.Name "argument"),+          Model.fieldTerm = (Typed.unTypedTerm argument)},+        Model.Field {+          Model.fieldName = (Model.Name "prefix"),+          Model.fieldTerm = (Typed.unTypedTerm prefix)}]}))++-- | DSL accessor for the argument field of hydra.typescript.syntax.UnaryExpression+unaryExpressionArgument :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression+unaryExpressionArgument x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+        Model.projectionFieldName = (Model.Name "argument")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the operator field of hydra.typescript.syntax.UnaryExpression+unaryExpressionOperator :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryOperator+unaryExpressionOperator x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+        Model.projectionFieldName = (Model.Name "operator")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the prefix field of hydra.typescript.syntax.UnaryExpression+unaryExpressionPrefix :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Bool+unaryExpressionPrefix x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+        Model.projectionFieldName = (Model.Name "prefix")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.UnaryExpression+unaryExpressionUnaryExpression :: Typed.TypedName Syntax.UnaryExpression+unaryExpressionUnaryExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.UnaryExpression")++-- | DSL updater for the argument field of hydra.typescript.syntax.UnaryExpression+unaryExpressionWithArgument :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpressionWithArgument original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+              Model.projectionFieldName = (Model.Name "operator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "argument"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "prefix"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+              Model.projectionFieldName = (Model.Name "prefix")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the operator field of hydra.typescript.syntax.UnaryExpression+unaryExpressionWithOperator :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryOperator -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpressionWithOperator original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "argument"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+              Model.projectionFieldName = (Model.Name "argument")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "prefix"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+              Model.projectionFieldName = (Model.Name "prefix")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the prefix field of hydra.typescript.syntax.UnaryExpression+unaryExpressionWithPrefix :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpressionWithPrefix original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "operator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+              Model.projectionFieldName = (Model.Name "operator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "argument"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+              Model.projectionFieldName = (Model.Name "argument")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "prefix"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the bitwiseNot variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorBitwiseNot :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorBitwiseNot =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "bitwiseNot"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the decrement variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorDecrement :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorDecrement =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "decrement"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the delete variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorDelete :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorDelete =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "delete"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the increment variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorIncrement :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorIncrement =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "increment"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the negate variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorNegate :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorNegate =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "negate"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the not variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorNot :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorNot =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "not"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the plus variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorPlus :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorPlus =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "plus"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the typeof variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorTypeof :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorTypeof =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "typeof"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.UnaryOperator+unaryOperatorUnaryOperator :: Typed.TypedName Syntax.UnaryOperator+unaryOperatorUnaryOperator = Typed.TypedName (Model.Name "hydra.typescript.syntax.UnaryOperator")++-- | DSL injection for the void variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorVoid :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorVoid =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "void"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.typescript.syntax.VariableDeclaration+variableDeclaration :: Typed.TypedTerm Syntax.VariableKind -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.VariableDeclaration+variableDeclaration kind declarations =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Typed.unTypedTerm kind)},+        Model.Field {+          Model.fieldName = (Model.Name "declarations"),+          Model.fieldTerm = (Typed.unTypedTerm declarations)}]}))++-- | DSL accessor for the declarations field of hydra.typescript.syntax.VariableDeclaration+variableDeclarationDeclarations :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator]+variableDeclarationDeclarations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+        Model.projectionFieldName = (Model.Name "declarations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the kind field of hydra.typescript.syntax.VariableDeclaration+variableDeclarationKind :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.VariableKind+variableDeclarationKind x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+        Model.projectionFieldName = (Model.Name "kind")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.VariableDeclaration+variableDeclarationVariableDeclaration :: Typed.TypedName Syntax.VariableDeclaration+variableDeclarationVariableDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.VariableDeclaration")++-- | DSL updater for the declarations field of hydra.typescript.syntax.VariableDeclaration+variableDeclarationWithDeclarations :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.VariableDeclaration+variableDeclarationWithDeclarations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+              Model.projectionFieldName = (Model.Name "kind")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "declarations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the kind field of hydra.typescript.syntax.VariableDeclaration+variableDeclarationWithKind :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.VariableKind -> Typed.TypedTerm Syntax.VariableDeclaration+variableDeclarationWithKind original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "kind"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "declarations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+              Model.projectionFieldName = (Model.Name "declarations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.VariableDeclarator+variableDeclarator :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.VariableDeclarator+variableDeclarator id init =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm id)},+        Model.Field {+          Model.fieldName = (Model.Name "init"),+          Model.fieldTerm = (Typed.unTypedTerm init)}]}))++-- | DSL accessor for the id field of hydra.typescript.syntax.VariableDeclarator+variableDeclaratorId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.Pattern+variableDeclaratorId x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+        Model.projectionFieldName = (Model.Name "id")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the init field of hydra.typescript.syntax.VariableDeclarator+variableDeclaratorInit :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.Expression)+variableDeclaratorInit x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+        Model.projectionFieldName = (Model.Name "init")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.VariableDeclarator+variableDeclaratorVariableDeclarator :: Typed.TypedName Syntax.VariableDeclarator+variableDeclaratorVariableDeclarator = Typed.TypedName (Model.Name "hydra.typescript.syntax.VariableDeclarator")++-- | DSL updater for the id field of hydra.typescript.syntax.VariableDeclarator+variableDeclaratorWithId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.VariableDeclarator+variableDeclaratorWithId original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "init"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+              Model.projectionFieldName = (Model.Name "init")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the init field of hydra.typescript.syntax.VariableDeclarator+variableDeclaratorWithInit :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.VariableDeclarator+variableDeclaratorWithInit original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "init"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the const variant of hydra.typescript.syntax.VariableKind+variableKindConst :: Typed.TypedTerm Syntax.VariableKind+variableKindConst =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.VariableKind"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "const"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the let variant of hydra.typescript.syntax.VariableKind+variableKindLet :: Typed.TypedTerm Syntax.VariableKind+variableKindLet =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.VariableKind"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "let"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the var variant of hydra.typescript.syntax.VariableKind+variableKindVar :: Typed.TypedTerm Syntax.VariableKind+variableKindVar =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.VariableKind"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "var"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.VariableKind+variableKindVariableKind :: Typed.TypedName Syntax.VariableKind+variableKindVariableKind = Typed.TypedName (Model.Name "hydra.typescript.syntax.VariableKind")++-- | DSL constructor for hydra.typescript.syntax.WhileStatement+whileStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.WhileStatement+whileStatement test body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm test)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.WhileStatement+whileStatementBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement+whileStatementBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the test field of hydra.typescript.syntax.WhileStatement+whileStatementTest :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Expression+whileStatementTest x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+        Model.projectionFieldName = (Model.Name "test")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.WhileStatement+whileStatementWhileStatement :: Typed.TypedName Syntax.WhileStatement+whileStatementWhileStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.WhileStatement")++-- | DSL updater for the body field of hydra.typescript.syntax.WhileStatement+whileStatementWithBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.WhileStatement+whileStatementWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+              Model.projectionFieldName = (Model.Name "test")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.WhileStatement+whileStatementWithTest :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.WhileStatement+whileStatementWithTest original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "test"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+ src/main/haskell/Hydra/Typescript/Language.hs view
@@ -0,0 +1,303 @@+-- Note: this is an automatically generated file. Do not edit.++-- | Language constraints and reserved words for TypeScript 5.x (ECMAScript 2024 base)++module Hydra.Typescript.Language where++import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Lexical as Lexical+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void+import qualified Data.Set as S++-- | Language constraints for TypeScript 5.x+typeScriptLanguage :: Coders.Language+typeScriptLanguage =+    Coders.Language {+      Coders.languageName = (Coders.LanguageName "hydra.typeScript"),+      Coders.languageConstraints = Coders.LanguageConstraints {+        Coders.languageConstraintsLiteralVariants = literalVariants,+        Coders.languageConstraintsFloatTypes = floatTypes,+        Coders.languageConstraintsIntegerTypes = integerTypes,+        Coders.languageConstraintsTermVariants = termVariants,+        Coders.languageConstraintsTypeVariants = typeVariants,+        Coders.languageConstraintsTypes = typePredicate},+      Coders.languageSupportedFeatures = (Sets.fromList [+        Coders.LanguageFeatureNestedPolymorphicLetBindings]),+      Coders.languageCaseConventions = Coders.CaseConventions {+        Coders.caseConventionsConstant = Util.CaseConventionUpperSnake,+        Coders.caseConventionsDirectory = Util.CaseConventionLowerSnake,+        Coders.caseConventionsEnumValue = Util.CaseConventionPascal,+        Coders.caseConventionsField = Util.CaseConventionCamel,+        Coders.caseConventionsFile = Util.CaseConventionLowerSnake,+        Coders.caseConventionsModule = Util.CaseConventionLowerSnake,+        Coders.caseConventionsTerm = Util.CaseConventionCamel,+        Coders.caseConventionsTermVariable = Util.CaseConventionCamel,+        Coders.caseConventionsType = Util.CaseConventionPascal,+        Coders.caseConventionsTypeVariable = Util.CaseConventionPascal},+      Coders.languageDefaultFileExtension = (File.FileExtension "ts")}+  where+    literalVariants =+        Sets.fromList [+          Variants.LiteralVariantBinary,+          Variants.LiteralVariantBoolean,+          Variants.LiteralVariantDecimal,+          Variants.LiteralVariantFloat,+          Variants.LiteralVariantInteger,+          Variants.LiteralVariantString]+    floatTypes = Sets.fromList [+      Model.FloatTypeFloat64]+    integerTypes =+        Sets.fromList [+          Model.IntegerTypeInt32,+          Model.IntegerTypeBigint]+    termVariants =+        Sets.fromList [+          Variants.TermVariantAnnotated,+          Variants.TermVariantApplication,+          Variants.TermVariantEither,+          Variants.TermVariantCases,+          Variants.TermVariantLambda,+          Variants.TermVariantProject,+          Variants.TermVariantUnwrap,+          Variants.TermVariantLet,+          Variants.TermVariantList,+          Variants.TermVariantLiteral,+          Variants.TermVariantMap,+          Variants.TermVariantOptional,+          Variants.TermVariantPair,+          Variants.TermVariantRecord,+          Variants.TermVariantSet,+          Variants.TermVariantTypeApplication,+          Variants.TermVariantTypeLambda,+          Variants.TermVariantInject,+          Variants.TermVariantUnit,+          Variants.TermVariantVariable,+          Variants.TermVariantWrap]+    typeVariants =+        Sets.fromList [+          Variants.TypeVariantAnnotated,+          Variants.TypeVariantApplication,+          Variants.TypeVariantEither,+          Variants.TypeVariantFunction,+          Variants.TypeVariantForall,+          Variants.TypeVariantList,+          Variants.TypeVariantLiteral,+          Variants.TypeVariantMap,+          Variants.TypeVariantOptional,+          Variants.TypeVariantPair,+          Variants.TypeVariantRecord,+          Variants.TypeVariantSet,+          Variants.TypeVariantUnion,+          Variants.TypeVariantUnit,+          Variants.TypeVariantVariable,+          Variants.TypeVariantVoid,+          Variants.TypeVariantWrap]+    typePredicate = \_ -> True++-- | A set of reserved words in TypeScript+typeScriptReservedWords :: S.Set String+typeScriptReservedWords =+    Sets.fromList (Lists.concat [+      keywords,+      futureReserved,+      strictModeReserved,+      typeScriptKeywords,+      builtIns,+      hydraTypeScriptKeywords])+  where+    keywords =+        [+          "await",+          "break",+          "case",+          "catch",+          "class",+          "const",+          "continue",+          "debugger",+          "default",+          "delete",+          "do",+          "else",+          "enum",+          "export",+          "extends",+          "false",+          "finally",+          "for",+          "function",+          "if",+          "import",+          "in",+          "instanceof",+          "let",+          "new",+          "null",+          "return",+          "super",+          "switch",+          "this",+          "throw",+          "true",+          "try",+          "typeof",+          "undefined",+          "var",+          "void",+          "while",+          "with",+          "yield"]+    futureReserved =+        [+          "implements",+          "interface",+          "package",+          "private",+          "protected",+          "public"]+    strictModeReserved =+        [+          "arguments",+          "eval",+          "static",+          "yield"]+    typeScriptKeywords =+        [+          "abstract",+          "as",+          "asserts",+          "assert",+          "any",+          "boolean",+          "constructor",+          "declare",+          "from",+          "get",+          "global",+          "infer",+          "intrinsic",+          "is",+          "keyof",+          "module",+          "namespace",+          "never",+          "object",+          "of",+          "out",+          "override",+          "readonly",+          "require",+          "satisfies",+          "set",+          "string",+          "symbol",+          "type",+          "unique",+          "unknown",+          "using"]+    builtIns =+        [+          "Array",+          "ArrayBuffer",+          "BigInt",+          "Boolean",+          "DataView",+          "Date",+          "Error",+          "Float32Array",+          "Float64Array",+          "Function",+          "Int8Array",+          "Int16Array",+          "Int32Array",+          "JSON",+          "Map",+          "Math",+          "Number",+          "Object",+          "Promise",+          "Proxy",+          "Reflect",+          "RegExp",+          "Set",+          "String",+          "Symbol",+          "Uint8Array",+          "Uint8ClampedArray",+          "Uint16Array",+          "Uint32Array",+          "WeakMap",+          "WeakSet",+          "decodeURI",+          "decodeURIComponent",+          "encodeURI",+          "encodeURIComponent",+          "eval",+          "isFinite",+          "isNaN",+          "parseFloat",+          "parseInt",+          "console",+          "document",+          "global",+          "globalThis",+          "module",+          "process",+          "require",+          "window"]+    hydraTypeScriptKeywords =+        [+          "Name",+          "FrozenMap",+          "TERM_ANNOTATED",+          "TERM_APPLICATION",+          "TERM_EITHER",+          "TERM_FUNCTION",+          "TERM_LET",+          "TERM_LIST",+          "TERM_LITERAL",+          "TERM_MAP",+          "TERM_MAYBE",+          "TERM_PAIR",+          "TERM_RECORD",+          "TERM_SET",+          "TERM_TYPE_APPLICATION",+          "TERM_TYPE_LAMBDA",+          "TERM_UNION",+          "TERM_UNIT",+          "TERM_VARIABLE",+          "TERM_WRAP"]
+ src/main/haskell/Hydra/Typescript/Operators.hs view
@@ -0,0 +1,198 @@+-- Note: this is an automatically generated file. Do not edit.++-- | AST operators for TypeScript with precedence and associativity++module Hydra.Typescript.Operators where++import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void++-- | Addition operator (+)+addOp :: Ast.Op+addOp = Serialization.op "+" 14 Ast.AssociativityLeft++-- | Function application (whitespace)+appOp :: Ast.Op+appOp =+    Ast.Op {+      Ast.opSymbol = (Ast.Symbol ""),+      Ast.opPadding = Ast.Padding {+        Ast.paddingLeft = Ast.WsNone,+        Ast.paddingRight = Ast.WsNone},+      Ast.opPrecedence = (Ast.Precedence 20),+      Ast.opAssociativity = Ast.AssociativityLeft}++-- | Arrow function operator (=>)+arrowOp :: Ast.Op+arrowOp = Serialization.op "=>" 2 Ast.AssociativityRight++-- | Assignment operator (=)+assignOp :: Ast.Op+assignOp = Serialization.op "=" 2 Ast.AssociativityRight++-- | Bitwise AND operator (&)+bitwiseAndOp :: Ast.Op+bitwiseAndOp = Serialization.op "&" 10 Ast.AssociativityLeft++-- | Bitwise OR operator (|)+bitwiseOrOp :: Ast.Op+bitwiseOrOp = Serialization.op "|" 8 Ast.AssociativityLeft++-- | Bitwise XOR operator (^)+bitwiseXorOp :: Ast.Op+bitwiseXorOp = Serialization.op "^" 9 Ast.AssociativityLeft++-- | Type annotation colon (:)+colonOp :: Ast.Op+colonOp = Serialization.op ":" 0 Ast.AssociativityNone++-- | Comma operator (,)+commaOp :: Ast.Op+commaOp = Serialization.op "," 1 Ast.AssociativityLeft++-- | Definition operator (= in const x = ...)+defineOp :: Ast.Op+defineOp = Serialization.op "=" 0 Ast.AssociativityNone++-- | Division operator (/)+divideOp :: Ast.Op+divideOp = Serialization.op "/" 15 Ast.AssociativityLeft++-- | Equality operator (==)+equalOp :: Ast.Op+equalOp = Serialization.op "==" 11 Ast.AssociativityLeft++-- | Exponentiation operator (**)+exponentiateOp :: Ast.Op+exponentiateOp = Serialization.op "**" 16 Ast.AssociativityRight++-- | Greater than operator (>)+greaterThanOp :: Ast.Op+greaterThanOp = Serialization.op ">" 12 Ast.AssociativityLeft++-- | Greater than or equal operator (>=)+greaterThanOrEqualOp :: Ast.Op+greaterThanOrEqualOp = Serialization.op ">=" 12 Ast.AssociativityLeft++-- | In operator (in)+inOp :: Ast.Op+inOp = Serialization.op "in" 12 Ast.AssociativityLeft++-- | Instance of operator (instanceof)+instanceOfOp :: Ast.Op+instanceOfOp = Serialization.op "instanceof" 12 Ast.AssociativityLeft++-- | Left shift operator (<<)+leftShiftOp :: Ast.Op+leftShiftOp = Serialization.op "<<" 13 Ast.AssociativityLeft++-- | Less than operator (<)+lessThanOp :: Ast.Op+lessThanOp = Serialization.op "<" 12 Ast.AssociativityLeft++-- | Less than or equal operator (<=)+lessThanOrEqualOp :: Ast.Op+lessThanOrEqualOp = Serialization.op "<=" 12 Ast.AssociativityLeft++-- | Logical AND operator (&&)+logicalAndOp :: Ast.Op+logicalAndOp = Serialization.op "&&" 6 Ast.AssociativityLeft++-- | Logical OR operator (||)+logicalOrOp :: Ast.Op+logicalOrOp = Serialization.op "||" 5 Ast.AssociativityLeft++-- | Member access operator (.)+memberOp :: Ast.Op+memberOp =+    Ast.Op {+      Ast.opSymbol = (Ast.Symbol "."),+      Ast.opPadding = Ast.Padding {+        Ast.paddingLeft = Ast.WsNone,+        Ast.paddingRight = Ast.WsNone},+      Ast.opPrecedence = (Ast.Precedence 20),+      Ast.opAssociativity = Ast.AssociativityLeft}++-- | Modulo operator (%)+moduloOp :: Ast.Op+moduloOp = Serialization.op "%" 15 Ast.AssociativityLeft++-- | Multiplication operator (*)+multiplyOp :: Ast.Op+multiplyOp = Serialization.op "*" 15 Ast.AssociativityLeft++-- | Inequality operator (!=)+notEqualOp :: Ast.Op+notEqualOp = Serialization.op "!=" 11 Ast.AssociativityLeft++-- | Nullish coalescing operator (??)+nullishCoalescingOp :: Ast.Op+nullishCoalescingOp = Serialization.op "??" 4 Ast.AssociativityLeft++-- | Optional chaining operator (?.)+optionalChainOp :: Ast.Op+optionalChainOp =+    Ast.Op {+      Ast.opSymbol = (Ast.Symbol "?."),+      Ast.opPadding = Ast.Padding {+        Ast.paddingLeft = Ast.WsNone,+        Ast.paddingRight = Ast.WsNone},+      Ast.opPrecedence = (Ast.Precedence 20),+      Ast.opAssociativity = Ast.AssociativityLeft}++-- | Right shift operator (>>)+rightShiftOp :: Ast.Op+rightShiftOp = Serialization.op ">>" 13 Ast.AssociativityLeft++-- | Strict equality operator (===)+strictEqualOp :: Ast.Op+strictEqualOp = Serialization.op "===" 11 Ast.AssociativityLeft++-- | Strict inequality operator (!==)+strictNotEqualOp :: Ast.Op+strictNotEqualOp = Serialization.op "!==" 11 Ast.AssociativityLeft++-- | Subtraction operator (-)+subtractOp :: Ast.Op+subtractOp = Serialization.op "-" 14 Ast.AssociativityLeft++-- | Ternary operator (?:) - represents the ? part+ternaryOp :: Ast.Op+ternaryOp = Serialization.op "?" 3 Ast.AssociativityRight++-- | Unsigned right shift operator (>>>)+unsignedRightShiftOp :: Ast.Op+unsignedRightShiftOp = Serialization.op ">>>" 13 Ast.AssociativityLeft
+ src/main/haskell/Hydra/Typescript/Overlay/Haskell/Dsl/TypeScript/Helpers.hs view
@@ -0,0 +1,623 @@+-- | A DSL for constructing TypeScript syntax trees in Haskell.+module Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers where++import Hydra.Typescript.Syntax+import qualified Data.Int as I+++-- * Identifiers++-- | Create an identifier+-- Example: ident "foo"+ident :: String -> Identifier+ident = Identifier++-- | Create a qualified name from a list of strings+-- Example: qualifiedName ["module", "submodule", "name"]+qualifiedName :: [String] -> QualifiedName+qualifiedName = fmap Identifier+++-- * Literals++-- | Create a string literal with double quotes+-- Example: stringLit "hello"+stringLit :: String -> Literal+stringLit s = LiteralString $ StringLiteral s False++-- | Create a string literal with single quotes+-- Example: stringLitSingle "hello"+stringLitSingle :: String -> Literal+stringLitSingle s = LiteralString $ StringLiteral s True++-- | Create an integer literal+-- Example: intLit 42+intLit :: I.Int64 -> Literal+intLit = LiteralNumber . NumericLiteralInteger++-- | Create a floating-point literal+-- Example: floatLit 3.14+floatLit :: Double -> Literal+floatLit = LiteralNumber . NumericLiteralFloat++-- | Create a boolean literal+-- Example: boolLit True+boolLit :: Bool -> Literal+boolLit = LiteralBoolean++-- | The null literal+nullLit :: Literal+nullLit = LiteralNull++-- | The undefined literal+undefinedLit :: Literal+undefinedLit = LiteralUndefined++-- | Create a BigInt literal+-- Example: bigIntLit 123+bigIntLit :: Integer -> Literal+bigIntLit = LiteralBigInt+++-- * Expressions++-- | Create an identifier expression+-- Example: identExpr "foo"+identExpr :: String -> Expression+identExpr = ExpressionIdentifier . ident++-- | Create a literal expression+-- Example: litExpr (stringLit "hello")+litExpr :: Literal -> Expression+litExpr = ExpressionLiteral++-- | Create a string expression+-- Example: stringExpr "hello"+stringExpr :: String -> Expression+stringExpr = litExpr . stringLit++-- | Create an integer expression+-- Example: intExpr 42+intExpr :: I.Int64 -> Expression+intExpr = litExpr . intLit++-- | Create a floating-point expression+-- Example: floatExpr 3.14+floatExpr :: Double -> Expression+floatExpr = litExpr . floatLit++-- | Create a boolean expression+-- Example: boolExpr True+boolExpr :: Bool -> Expression+boolExpr = litExpr . boolLit++-- | The null expression+nullExpr :: Expression+nullExpr = litExpr nullLit++-- | The undefined expression+undefinedExpr :: Expression+undefinedExpr = litExpr undefinedLit++-- | Create an array expression+-- Example: arrayExpr [intExpr 1, intExpr 2, intExpr 3]+arrayExpr :: [Expression] -> Expression+arrayExpr = ExpressionArray . fmap ArrayElementExpression++-- | Create an object expression from key-value pairs+-- Example: objectExpr [("name", stringExpr "John"), ("age", intExpr 30)]+objectExpr :: [(String, Expression)] -> Expression+objectExpr pairs = ExpressionObject $ fmap toProperty pairs+  where+    toProperty (k, v) = Property (identExpr k) v PropertyKindInit False False++-- | Create a function call expression+-- Example: callExpr (identExpr "foo") [intExpr 1, intExpr 2]+callExpr :: Expression -> [Expression] -> Expression+callExpr callee args = ExpressionCall $ CallExpression callee args False++-- | Create an optional chaining call expression+-- Example: optionalCallExpr (identExpr "foo") [intExpr 1]+optionalCallExpr :: Expression -> [Expression] -> Expression+optionalCallExpr callee args = ExpressionCall $ CallExpression callee args True++-- | Create a member access expression (obj.prop)+-- Example: memberExpr (identExpr "obj") "prop"+memberExpr :: Expression -> String -> Expression+memberExpr obj prop = ExpressionMember $ MemberExpression obj (identExpr prop) False False++-- | Create a computed member access expression (obj[expr])+-- Example: computedMemberExpr (identExpr "arr") (intExpr 0)+computedMemberExpr :: Expression -> Expression -> Expression+computedMemberExpr obj prop = ExpressionMember $ MemberExpression obj prop True False++-- | Create an optional chaining member expression (obj?.prop)+-- Example: optionalMemberExpr (identExpr "obj") "prop"+optionalMemberExpr :: Expression -> String -> Expression+optionalMemberExpr obj prop = ExpressionMember $ MemberExpression obj (identExpr prop) False True++-- | Create a conditional (ternary) expression+-- Example: condExpr (identExpr "x") (intExpr 1) (intExpr 0)+condExpr :: Expression -> Expression -> Expression -> Expression+condExpr test consequent alternate = ExpressionConditional $+  ConditionalExpression test consequent alternate++-- | Create a binary expression+-- Example: binaryExpr BinaryOperatorAdd (intExpr 1) (intExpr 2)+binaryExpr :: BinaryOperator -> Expression -> Expression -> Expression+binaryExpr op left right = ExpressionBinary $ BinaryExpression op left right++-- | Create an addition expression+-- Example: addExpr (intExpr 1) (intExpr 2)+addExpr :: Expression -> Expression -> Expression+addExpr = binaryExpr BinaryOperatorAdd++-- | Create a subtraction expression+-- Example: subExpr (intExpr 5) (intExpr 3)+subExpr :: Expression -> Expression -> Expression+subExpr = binaryExpr BinaryOperatorSubtract++-- | Create a multiplication expression+-- Example: mulExpr (intExpr 3) (intExpr 4)+mulExpr :: Expression -> Expression -> Expression+mulExpr = binaryExpr BinaryOperatorMultiply++-- | Create a division expression+-- Example: divExpr (intExpr 10) (intExpr 2)+divExpr :: Expression -> Expression -> Expression+divExpr = binaryExpr BinaryOperatorDivide++-- | Create a strict equality expression (===)+-- Example: eqExpr (identExpr "x") (intExpr 1)+eqExpr :: Expression -> Expression -> Expression+eqExpr = binaryExpr BinaryOperatorStrictEqual++-- | Create a strict inequality expression (!==)+-- Example: neqExpr (identExpr "x") (intExpr 1)+neqExpr :: Expression -> Expression -> Expression+neqExpr = binaryExpr BinaryOperatorStrictNotEqual++-- | Create a logical AND expression+-- Example: andExpr (identExpr "a") (identExpr "b")+andExpr :: Expression -> Expression -> Expression+andExpr = binaryExpr BinaryOperatorAnd++-- | Create a logical OR expression+-- Example: orExpr (identExpr "a") (identExpr "b")+orExpr :: Expression -> Expression -> Expression+orExpr = binaryExpr BinaryOperatorOr++-- | Create a unary expression+-- Example: unaryExpr UnaryOperatorNot (identExpr "x")+unaryExpr :: UnaryOperator -> Expression -> Expression+unaryExpr op arg = ExpressionUnary $ UnaryExpression op arg True++-- | Create a logical NOT expression+-- Example: notExpr (identExpr "x")+notExpr :: Expression -> Expression+notExpr = unaryExpr UnaryOperatorNot++-- | Create a negation expression+-- Example: negateExpr (identExpr "x")+negateExpr :: Expression -> Expression+negateExpr = unaryExpr UnaryOperatorNegate++-- | Create an assignment expression+-- Example: assignExpr (identPattern "x") (intExpr 42)+assignExpr :: Pattern -> Expression -> Expression+assignExpr left right = ExpressionAssignment $+  AssignmentExpression AssignmentOperatorAssign left right++-- | The 'this' expression+thisExpr :: Expression+thisExpr = ExpressionThis++-- | Create a 'new' expression+-- Example: newExpr (identExpr "Date") []+newExpr :: Expression -> [Expression] -> Expression+newExpr callee args = ExpressionNew $ CallExpression callee args False++-- | Create an await expression+-- Example: awaitExpr (callExpr (identExpr "fetch") [stringExpr "url"])+awaitExpr :: Expression -> Expression+awaitExpr = ExpressionAwait++-- | Create a yield expression+-- Example: yieldExpr (Just (intExpr 1))+yieldExpr :: Maybe Expression -> Expression+yieldExpr = ExpressionYield++-- | Create a spread expression+-- Example: spreadExpr (identExpr "arr")+spreadExpr :: Expression -> Expression+spreadExpr = ExpressionSpread . SpreadElement++-- | Create a parenthesized expression+-- Example: parenExpr (addExpr (intExpr 1) (intExpr 2))+parenExpr :: Expression -> Expression+parenExpr = ExpressionParenthesized+++-- * Arrow Functions++-- | Create an arrow function with an expression body+-- Example: arrowExpr ["x", "y"] (addExpr (identExpr "x") (identExpr "y"))+arrowExpr :: [String] -> Expression -> Expression+arrowExpr params body = ExpressionArrow $ ArrowFunctionExpression+  (fmap identPattern params)+  (ArrowFunctionBodyExpression body)+  False++-- | Create an async arrow function with an expression body+-- Example: asyncArrowExpr ["x"] (awaitExpr (callExpr (identExpr "fetch") [identExpr "x"]))+asyncArrowExpr :: [String] -> Expression -> Expression+asyncArrowExpr params body = ExpressionArrow $ ArrowFunctionExpression+  (fmap identPattern params)+  (ArrowFunctionBodyExpression body)+  True++-- | Create an arrow function with a block body+-- Example: arrowBlockExpr ["x"] [returnStmt (Just (identExpr "x"))]+arrowBlockExpr :: [String] -> [Statement] -> Expression+arrowBlockExpr params body = ExpressionArrow $ ArrowFunctionExpression+  (fmap identPattern params)+  (ArrowFunctionBodyBlock body)+  False+++-- * Patterns++-- | Create an identifier pattern+-- Example: identPattern "x"+identPattern :: String -> Pattern+identPattern = PatternIdentifier . ident++-- | Create an object destructuring pattern+-- Example: objectPattern [identPattern "a", identPattern "b"]+objectPattern :: [Pattern] -> Pattern+objectPattern ps = PatternObject $ ObjectPattern $ fmap toProperty ps+  where+    toProperty p = case p of+      PatternIdentifier i -> ObjectPatternPropertyProperty $+        Property (ExpressionIdentifier i) (ExpressionIdentifier i) PropertyKindInit False True+      _ -> ObjectPatternPropertyProperty $+        Property nullExpr (patternToExpr p) PropertyKindInit False False+    patternToExpr (PatternIdentifier i) = ExpressionIdentifier i+    patternToExpr _ = nullExpr++-- | Create an array destructuring pattern+-- Example: arrayPattern [Just (identPattern "a"), Nothing, Just (identPattern "b")]+arrayPattern :: [Maybe Pattern] -> Pattern+arrayPattern = PatternArray++-- | Create a rest pattern+-- Example: restPattern "args"+restPattern :: String -> Pattern+restPattern = PatternRest . RestElement . identPattern++-- | Create a pattern with a default value+-- Example: defaultPattern "x" (intExpr 0)+defaultPattern :: String -> Expression -> Pattern+defaultPattern name def = PatternAssignment $+  AssignmentPattern (identPattern name) def+++-- * Statements++-- | Create an expression statement+-- Example: exprStmt (callExpr (identExpr "console.log") [stringExpr "hello"])+exprStmt :: Expression -> Statement+exprStmt = StatementExpression++-- | Create a block statement+-- Example: blockStmt [exprStmt (intExpr 1), exprStmt (intExpr 2)]+blockStmt :: [Statement] -> Statement+blockStmt = StatementBlock++-- | Create a return statement+-- Example: returnStmt (Just (intExpr 42))+returnStmt :: Maybe Expression -> Statement+returnStmt = StatementReturn++-- | Create a throw statement+-- Example: throwStmt (newExpr (identExpr "Error") [stringExpr "oops"])+throwStmt :: Expression -> Statement+throwStmt = StatementThrow . ThrowStatement++-- | Create a break statement+-- Example: breakStmt Nothing+breakStmt :: Maybe String -> Statement+breakStmt = StatementBreak . fmap ident++-- | Create a continue statement+-- Example: continueStmt Nothing+continueStmt :: Maybe String -> Statement+continueStmt = StatementContinue . fmap ident++-- | Create an if statement+-- Example: ifStmt (identExpr "x") (returnStmt (Just (intExpr 1))) Nothing+ifStmt :: Expression -> Statement -> Maybe Statement -> Statement+ifStmt test consequent alternate = StatementIf $ IfStatement test consequent alternate++-- | Create a while statement+-- Example: whileStmt (boolExpr True) (blockStmt [breakStmt Nothing])+whileStmt :: Expression -> Statement -> Statement+whileStmt test body = StatementWhile $ WhileStatement test body++-- | Create a for statement+-- Example: forStmt (Just (ForInitVariable (constDecl "i" (intExpr 0)))) (Just (binaryExpr BinaryOperatorLessThan (identExpr "i") (intExpr 10))) (Just (unaryExpr UnaryOperatorIncrement (identExpr "i"))) (blockStmt [])+forStmt :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> Statement+forStmt init test update body = StatementFor $ ForStatement init test update body++-- | Create a for-of statement+-- Example: forOfStmt False (ForInLeftVariable (constDecl "item" Nothing)) (identExpr "items") (blockStmt [])+forOfStmt :: Bool -> ForInLeft -> Expression -> Statement -> Statement+forOfStmt await left right body = StatementForOf $ ForOfStatement await left right body++-- | Create a try statement+-- Example: tryStmt [exprStmt (callExpr (identExpr "riskyOp") [])] (Just (catchClause (Just (identPattern "e")) [throwStmt (identExpr "e")])) Nothing+tryStmt :: [Statement] -> Maybe CatchClause -> Maybe [Statement] -> Statement+tryStmt block handler finalizer = StatementTry $ TryStatement block handler finalizer++-- | Create a catch clause+-- Example: catchClause (Just (identPattern "e")) [throwStmt (identExpr "e")]+catchClause :: Maybe Pattern -> [Statement] -> CatchClause+catchClause = CatchClause++-- | Create a switch statement+-- Example: switchStmt (identExpr "x") [switchCase (Just (intExpr 1)) [returnStmt (Just (stringExpr "one"))], switchCase Nothing [returnStmt (Just (stringExpr "default"))]]+switchStmt :: Expression -> [SwitchCase] -> Statement+switchStmt discriminant cases = StatementSwitch $ SwitchStatement discriminant cases++-- | Create a switch case+-- Example: switchCase (Just (intExpr 1)) [returnStmt (Just (stringExpr "one"))]+switchCase :: Maybe Expression -> [Statement] -> SwitchCase+switchCase = SwitchCase++-- | An empty statement+emptyStmt :: Statement+emptyStmt = StatementEmpty++-- | A debugger statement+debuggerStmt :: Statement+debuggerStmt = StatementDebugger+++-- * Variable Declarations++-- | Create a const declaration+-- Example: constDecl "x" (Just (intExpr 42))+constDecl :: String -> Maybe Expression -> VariableDeclaration+constDecl name init = VariableDeclaration VariableKindConst+  [VariableDeclarator (identPattern name) init]++-- | Create a let declaration+-- Example: letDecl "x" (Just (intExpr 42))+letDecl :: String -> Maybe Expression -> VariableDeclaration+letDecl name init = VariableDeclaration VariableKindLet+  [VariableDeclarator (identPattern name) init]++-- | Create a var declaration+-- Example: varDecl "x" (Just (intExpr 42))+varDecl :: String -> Maybe Expression -> VariableDeclaration+varDecl name init = VariableDeclaration VariableKindVar+  [VariableDeclarator (identPattern name) init]++-- | Create a variable declaration statement+-- Example: varDeclStmt (constDecl "x" (Just (intExpr 42)))+varDeclStmt :: VariableDeclaration -> Statement+varDeclStmt = StatementVariableDeclaration+++-- * Function Declarations++-- | Create a function declaration+-- Example: funcDecl "add" ["x", "y"] [returnStmt (Just (addExpr (identExpr "x") (identExpr "y")))]+funcDecl :: String -> [String] -> [Statement] -> FunctionDeclaration+funcDecl name params body = FunctionDeclaration+  (ident name)+  (fmap identPattern params)+  body+  False+  False++-- | Create an async function declaration+-- Example: asyncFuncDecl "fetchData" ["url"] [returnStmt (Just (awaitExpr (callExpr (identExpr "fetch") [identExpr "url"])))]+asyncFuncDecl :: String -> [String] -> [Statement] -> FunctionDeclaration+asyncFuncDecl name params body = FunctionDeclaration+  (ident name)+  (fmap identPattern params)+  body+  True+  False++-- | Create a function declaration statement+-- Example: funcDeclStmt (funcDecl "add" ["x", "y"] [returnStmt (Just (addExpr (identExpr "x") (identExpr "y")))])+funcDeclStmt :: FunctionDeclaration -> Statement+funcDeclStmt = StatementFunctionDeclaration+++-- * Class Declarations++-- | Create a class declaration+-- Example: classDecl "Person" Nothing [methodDef "greet" [] [returnStmt (Just (stringExpr "hello"))]]+classDecl :: String -> Maybe Expression -> [MethodDefinition] -> ClassDeclaration+classDecl name superClass body = ClassDeclaration (ident name) superClass body++-- | Create a method definition+-- Example: methodDef "greet" [] [returnStmt (Just (stringExpr "hello"))]+methodDef :: String -> [String] -> [Statement] -> MethodDefinition+methodDef name params body = MethodDefinition+  (identExpr name)+  (FunctionExpression Nothing (fmap identPattern params) body False False)+  MethodKindMethod+  False+  False++-- | Create a constructor definition+-- Example: constructorDef ["name"] [exprStmt (assignExpr (PatternIdentifier (ident "this.name")) (identExpr "name"))]+constructorDef :: [String] -> [Statement] -> MethodDefinition+constructorDef params body = MethodDefinition+  (identExpr "constructor")+  (FunctionExpression Nothing (fmap identPattern params) body False False)+  MethodKindConstructor+  False+  False++-- | Create a static method definition+-- Example: staticMethodDef "create" [] [returnStmt (Just (newExpr (identExpr "Person") []))]+staticMethodDef :: String -> [String] -> [Statement] -> MethodDefinition+staticMethodDef name params body = MethodDefinition+  (identExpr name)+  (FunctionExpression Nothing (fmap identPattern params) body False False)+  MethodKindMethod+  False+  True++-- | Create a class declaration statement+-- Example: classDeclStmt (classDecl "Person" Nothing [])+classDeclStmt :: ClassDeclaration -> Statement+classDeclStmt = StatementClassDeclaration+++-- * Module Items++-- | Create a statement module item+-- Example: stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))+stmtItem :: Statement -> ModuleItem+stmtItem = ModuleItemStatement++-- | Create an import declaration+-- Example: importDecl [importNamed "foo" "foo"] "./module.js"+importDecl :: [ImportClause] -> String -> ImportDeclaration+importDecl specifiers source = ImportDeclaration specifiers (StringLiteral source False)++-- | Create a named import+-- Example: importNamed "foo" "bar"  -- import { foo as bar }+importNamed :: String -> String -> ImportClause+importNamed imported local = ImportClauseNamed $+  ImportSpecifier (ident imported) (ident local)++-- | Create a default import+-- Example: importDefault "foo"  -- import foo from ...+importDefault :: String -> ImportClause+importDefault = ImportClauseDefault . ImportDefaultSpecifier . ident++-- | Create a namespace import+-- Example: importNamespace "foo"  -- import * as foo from ...+importNamespace :: String -> ImportClause+importNamespace = ImportClauseNamespace . ImportNamespaceSpecifier . ident++-- | Create an import module item+-- Example: importItem (importDecl [importDefault "React"] "react")+importItem :: ImportDeclaration -> ModuleItem+importItem = ModuleItemImport++-- | Create a named export declaration+-- Example: namedExportDecl [("foo", "foo")] Nothing+namedExportDecl :: [(String, String)] -> Maybe String -> ExportDeclaration+namedExportDecl specifiers source = ExportDeclarationNamed $ NamedExport+  (fmap (\(local, exported) -> ExportSpecifier (ident local) (ident exported)) specifiers)+  (fmap (\s -> StringLiteral s False) source)++-- | Create a default export declaration+-- Example: defaultExportDecl (identExpr "foo")+defaultExportDecl :: Expression -> ExportDeclaration+defaultExportDecl = ExportDeclarationDefault++-- | Create an export declaration for a statement+-- Example: exportDeclStmt (varDeclStmt (constDecl "x" (Just (intExpr 42))))+exportDeclStmt :: Statement -> ExportDeclaration+exportDeclStmt = ExportDeclarationDeclaration++-- | Create an export module item+-- Example: exportItem (defaultExportDecl (identExpr "foo"))+exportItem :: ExportDeclaration -> ModuleItem+exportItem = ModuleItemExport+++-- * Programs++-- | Create a module program+-- Example: moduleProgram [importItem (importDecl [importDefault "foo"] "./foo.js"), stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))]+moduleProgram :: [ModuleItem] -> Program+moduleProgram body = Program body SourceTypeModule++-- | Create a script program+-- Example: scriptProgram [stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))]+scriptProgram :: [ModuleItem] -> Program+scriptProgram body = Program body SourceTypeScript+++-- * Type Expressions++-- | Create an identifier type expression+-- Example: identType "string"+identType :: String -> TypeExpression+identType = TypeExpressionIdentifier . ident++-- | Create an array type expression+-- Example: arrayType (identType "number")+arrayType :: TypeExpression -> TypeExpression+arrayType = TypeExpressionArray . ArrayTypeExpression++-- | Create a union type expression+-- Example: unionType [identType "string", identType "number"]+unionType :: [TypeExpression] -> TypeExpression+unionType = TypeExpressionUnion++-- | Create an optional type expression+-- Example: optionalType (identType "string")+optionalType :: TypeExpression -> TypeExpression+optionalType = TypeExpressionOptional++-- | Create a parameterized type expression+-- Example: paramType (identType "Array") [identType "string"]+paramType :: TypeExpression -> [TypeExpression] -> TypeExpression+paramType base args = TypeExpressionParameterized $+  ParameterizedTypeExpression base args++-- | The 'any' type+anyType :: TypeExpression+anyType = TypeExpressionAny++-- | The 'void' type+voidType :: TypeExpression+voidType = TypeExpressionVoid++-- | The 'never' type+neverType :: TypeExpression+neverType = TypeExpressionNever+++-- * Comments and Documentation++-- | Create a line comment+-- Example: lineComment "This is a comment"+lineComment :: String -> Comment+lineComment = CommentLine++-- | Create a block comment+-- Example: blockComment "This is a\nmultiline comment"+blockComment :: String -> Comment+blockComment = CommentBlock++-- | Create a documentation comment+-- Example: docComment "Description of the function" [paramTag "x" (Just (identType "number")) "The input value"]+docComment :: String -> [DocumentationTag] -> Comment+docComment desc tags = CommentDocumentation $ DocumentationComment desc tags++-- | Create a @param documentation tag+-- Example: paramTag "x" (Just (identType "number")) "The input value"+paramTag :: String -> Maybe TypeExpression -> String -> DocumentationTag+paramTag name typ desc = DocumentationTag "param" typ (Just $ ident name) desc++-- | Create a @returns documentation tag+-- Example: returnsTag (Just (identType "number")) "The result"+returnsTag :: Maybe TypeExpression -> String -> DocumentationTag+returnsTag typ desc = DocumentationTag "returns" typ Nothing desc++-- | Create a @type documentation tag+-- Example: typeTag (identType "number")+typeTag :: TypeExpression -> DocumentationTag+typeTag typ = DocumentationTag "type" (Just typ) Nothing ""
+ src/main/haskell/Hydra/Typescript/Serde.hs view
@@ -0,0 +1,1083 @@+-- Note: this is an automatically generated file. Do not edit.++-- | Serialization functions for converting TypeScript AST to abstract expressions++module Hydra.Typescript.Serde where++import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Constants as Constants+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering+import qualified Hydra.Core.Overlay.Haskell.Lib.Pairs as Pairs+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants+import qualified Hydra.Typescript.Operators as Operators+import qualified Hydra.Typescript.Syntax as Syntax+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void++-- | True iff every codepoint is an ASCII digit 0-9, and the list is non-empty+allDigits :: [Int] -> Bool+allDigits cps =+    Logic.and (Ordering.gt (Lists.length cps) 0) (Lists.foldl (\acc -> \c -> Logic.and acc (Logic.and (Ordering.gte c 48) (Ordering.lte c 57))) True cps)++-- | Convert an array element to an AST expression+arrayElementToExpr :: Syntax.ArrayElement -> Ast.Expr+arrayElementToExpr elem =+    case elem of+      Syntax.ArrayElementExpression v0 -> expressionToExpr v0+      Syntax.ArrayElementSpread v0 -> Serialization.prefix "..." (expressionToExpr (Syntax.unSpreadElement v0))+      Syntax.ArrayElementHole -> Serialization.cst ""++-- | Convert an array expression to an AST expression+arrayExpressionToExpr :: [Syntax.ArrayElement] -> Ast.Expr+arrayExpressionToExpr arr = Serialization.bracketList Serialization.inlineStyle (Lists.map arrayElementToExpr arr)++-- | Convert an array pattern to an AST expression+arrayPatternToExpr :: [Maybe Syntax.Pattern] -> Ast.Expr+arrayPatternToExpr arr =+    Serialization.bracketList Serialization.inlineStyle (Lists.map (\maybeP -> Optionals.match maybeP (Serialization.cst "") patternToExpr) arr)++-- | Convert an arrow function expression to an AST expression+arrowFunctionExpressionToExpr :: Syntax.ArrowFunctionExpression -> Ast.Expr+arrowFunctionExpressionToExpr arrow =++      let params = Syntax.arrowFunctionExpressionParams arrow+          body = Syntax.arrowFunctionExpressionBody arrow+          async = Syntax.arrowFunctionExpressionAsync arrow+          asyncKw = Logic.ifElse async [+                Serialization.cst "async"] []+          paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)+          bodyExpr =+                  case body of+                    Syntax.ArrowFunctionBodyExpression v0 -> case v0 of+                      Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr v0)+                      Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr v0)+                      _ -> expressionToExpr v0+                    Syntax.ArrowFunctionBodyBlock v0 -> blockStatementToExpr v0+      in (Serialization.spaceSep (Lists.concat [+        asyncKw,+        [+          Serialization.ifx Operators.arrowOp paramsExpr bodyExpr]]))++-- | Convert an assignment expression to an AST expression+assignmentExpressionToExpr :: Syntax.AssignmentExpression -> Ast.Expr+assignmentExpressionToExpr assign =++      let op = Syntax.assignmentExpressionOperator assign+          left = Syntax.assignmentExpressionLeft assign+          right = Syntax.assignmentExpressionRight assign+          opStr = assignmentOperatorToString op+      in (Serialization.spaceSep [+        patternToExpr left,+        (Serialization.cst opStr),+        (expressionToExpr right)])++-- | Convert an assignment operator to a string+assignmentOperatorToString :: Syntax.AssignmentOperator -> String+assignmentOperatorToString op =+    case op of+      Syntax.AssignmentOperatorAssign -> "="+      Syntax.AssignmentOperatorAddAssign -> "+="+      Syntax.AssignmentOperatorSubtractAssign -> "-="+      Syntax.AssignmentOperatorMultiplyAssign -> "*="+      Syntax.AssignmentOperatorDivideAssign -> "/="+      Syntax.AssignmentOperatorModuloAssign -> "%="+      Syntax.AssignmentOperatorExponentiateAssign -> "**="+      Syntax.AssignmentOperatorLeftShiftAssign -> "<<="+      Syntax.AssignmentOperatorRightShiftAssign -> ">>="+      Syntax.AssignmentOperatorUnsignedRightShiftAssign -> ">>>="+      Syntax.AssignmentOperatorBitwiseAndAssign -> "&="+      Syntax.AssignmentOperatorBitwiseOrAssign -> "|="+      Syntax.AssignmentOperatorBitwiseXorAssign -> "^="+      Syntax.AssignmentOperatorAndAssign -> "&&="+      Syntax.AssignmentOperatorOrAssign -> "||="+      Syntax.AssignmentOperatorNullishAssign -> "??="++-- | Convert an assignment pattern to an AST expression+assignmentPatternToExpr :: Syntax.AssignmentPattern -> Ast.Expr+assignmentPatternToExpr assign =++      let left = Syntax.assignmentPatternLeft assign+          right = Syntax.assignmentPatternRight assign+      in (Serialization.ifx Operators.defineOp (patternToExpr left) (expressionToExpr right))++-- | Convert a binary expression to an AST expression+binaryExpressionToExpr :: Syntax.BinaryExpression -> Ast.Expr+binaryExpressionToExpr bin =++      let op = Syntax.binaryExpressionOperator bin+          left = Syntax.binaryExpressionLeft bin+          right = Syntax.binaryExpressionRight bin+      in (Serialization.ifx (binaryOperatorToExpr op) (expressionToExpr left) (expressionToExpr right))++-- | Convert a binary operator to an Op+binaryOperatorToExpr :: Syntax.BinaryOperator -> Ast.Op+binaryOperatorToExpr op =+    case op of+      Syntax.BinaryOperatorAdd -> Operators.addOp+      Syntax.BinaryOperatorSubtract -> Operators.subtractOp+      Syntax.BinaryOperatorMultiply -> Operators.multiplyOp+      Syntax.BinaryOperatorDivide -> Operators.divideOp+      Syntax.BinaryOperatorModulo -> Operators.moduloOp+      Syntax.BinaryOperatorExponentiate -> Operators.exponentiateOp+      Syntax.BinaryOperatorEqual -> Operators.equalOp+      Syntax.BinaryOperatorNotEqual -> Operators.notEqualOp+      Syntax.BinaryOperatorStrictEqual -> Operators.strictEqualOp+      Syntax.BinaryOperatorStrictNotEqual -> Operators.strictNotEqualOp+      Syntax.BinaryOperatorLessThan -> Operators.lessThanOp+      Syntax.BinaryOperatorLessThanOrEqual -> Operators.lessThanOrEqualOp+      Syntax.BinaryOperatorGreaterThan -> Operators.greaterThanOp+      Syntax.BinaryOperatorGreaterThanOrEqual -> Operators.greaterThanOrEqualOp+      Syntax.BinaryOperatorAnd -> Operators.logicalAndOp+      Syntax.BinaryOperatorOr -> Operators.logicalOrOp+      Syntax.BinaryOperatorNullishCoalescing -> Operators.nullishCoalescingOp+      Syntax.BinaryOperatorBitwiseAnd -> Operators.bitwiseAndOp+      Syntax.BinaryOperatorBitwiseOr -> Operators.bitwiseOrOp+      Syntax.BinaryOperatorBitwiseXor -> Operators.bitwiseXorOp+      Syntax.BinaryOperatorLeftShift -> Operators.leftShiftOp+      Syntax.BinaryOperatorRightShift -> Operators.rightShiftOp+      Syntax.BinaryOperatorUnsignedRightShift -> Operators.unsignedRightShiftOp+      Syntax.BinaryOperatorIn -> Operators.inOp+      Syntax.BinaryOperatorInstanceof -> Operators.instanceOfOp++-- | Convert a block statement to an AST expression. Renders as `{ stmt1\n stmt2\n ... }` using curlyBlock + newlineSep: statements are separated by newlines, NOT by commas (which curlyBracesList's default would insert and which TypeScript rejects between block statements).+blockStatementToExpr :: [Syntax.Statement] -> Ast.Expr+blockStatementToExpr block =+    Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map statementToExpr block))++-- | Convert a break statement to an AST expression+breakStatementToExpr :: Maybe Syntax.Identifier -> Ast.Expr+breakStatementToExpr b =+    Optionals.match b (Serialization.cst "break;") (\label -> Serialization.suffix ";" (Serialization.spaceSep [+      Serialization.cst "break",+      (identifierToExpr label)]))++-- | Convert a call expression to an AST expression+callExpressionToExpr :: Syntax.CallExpression -> Ast.Expr+callExpressionToExpr call =++      let callee = Syntax.callExpressionCallee call+          args = Syntax.callExpressionArguments call+          optional = Syntax.callExpressionOptional call+          calleeExpr =+                  case callee of+                    Syntax.ExpressionArrow _ -> Serialization.parens (expressionToExpr callee)+                    Syntax.ExpressionConditional _ -> Serialization.parens (expressionToExpr callee)+                    Syntax.ExpressionBinary _ -> Serialization.parens (expressionToExpr callee)+                    Syntax.ExpressionUnary _ -> Serialization.parens (expressionToExpr callee)+                    Syntax.ExpressionAssignment _ -> Serialization.parens (expressionToExpr callee)+                    Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr callee)+                    Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr callee)+                    Syntax.ExpressionFunction _ -> Serialization.parens (expressionToExpr callee)+                    _ -> expressionToExpr callee+          argsExpr = Serialization.parenListAdaptive (Lists.map expressionToExpr args)+          optionalDot = Logic.ifElse optional "?." ""+      in (Serialization.spaceSep [+        calleeExpr,+        (Serialization.cst optionalDot),+        argsExpr])++-- | Convert a catch clause to an AST expression+catchClauseToExpr :: Syntax.CatchClause -> Ast.Expr+catchClauseToExpr c =++      let param = Syntax.catchClauseParam c+          body = Syntax.catchClauseBody c+          catchKw =+                  Optionals.match param (Serialization.cst "catch") (\p -> Serialization.spaceSep [+                    Serialization.cst "catch",+                    (Serialization.parens (patternToExpr p))])+      in (Serialization.spaceSep [+        catchKw,+        (blockStatementToExpr body)])++-- | Convert a class declaration to an AST expression+classDeclarationToExpr :: Syntax.ClassDeclaration -> Ast.Expr+classDeclarationToExpr cls =++      let id = Syntax.classDeclarationId cls+          superClass = Syntax.classDeclarationSuperClass cls+          body = Syntax.classDeclarationBody cls+          extendsClause =+                  Optionals.match superClass [] (\s -> [+                    Serialization.cst "extends",+                    (expressionToExpr s)])+          bodyExpr =+                  Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map methodDefinitionToExpr body))+      in (Serialization.spaceSep (Lists.concat [+        [+          Serialization.cst "class",+          (identifierToExpr id)],+        extendsClause,+        [+          bodyExpr]]))++-- | Convert a class declaration with comments to an AST expression+classDeclarationWithCommentsToExpr :: Syntax.ClassDeclarationWithComments -> Ast.Expr+classDeclarationWithCommentsToExpr cdwc =++      let body = Syntax.classDeclarationWithCommentsBody cdwc+          mc = Syntax.classDeclarationWithCommentsComments cdwc+      in (Optionals.match mc (classDeclarationToExpr body) (\c -> Serialization.newlineSep [+        documentationCommentToExpr c,+        (classDeclarationToExpr body)]))++-- | Convert a conditional expression to an AST expression+conditionalExpressionToExpr :: Syntax.ConditionalExpression -> Ast.Expr+conditionalExpressionToExpr cond =++      let test = Syntax.conditionalExpressionTest cond+          consequent = Syntax.conditionalExpressionConsequent cond+          alternate = Syntax.conditionalExpressionAlternate cond+          consExpr =+                  case consequent of+                    Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr consequent)+                    Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr consequent)+                    _ -> expressionToExpr consequent+          altExpr =+                  case alternate of+                    Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr alternate)+                    Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr alternate)+                    _ -> expressionToExpr alternate+      in (Serialization.spaceSep [+        expressionToExpr test,+        (Serialization.cst "?"),+        consExpr,+        (Serialization.cst ":"),+        altExpr])++-- | Convert a continue statement to an AST expression+continueStatementToExpr :: Maybe Syntax.Identifier -> Ast.Expr+continueStatementToExpr c =+    Optionals.match c (Serialization.cst "continue;") (\label -> Serialization.suffix ";" (Serialization.spaceSep [+      Serialization.cst "continue",+      (identifierToExpr label)]))++-- | Convert a do-while statement to an AST expression+doWhileStatementToExpr :: Syntax.DoWhileStatement -> Ast.Expr+doWhileStatementToExpr d =++      let body = Syntax.doWhileStatementBody d+          test = Syntax.doWhileStatementTest d+      in (Serialization.suffix ";" (Serialization.spaceSep [+        Serialization.cst "do",+        (statementToExpr body),+        (Serialization.cst "while"),+        (Serialization.parens (expressionToExpr test))]))++-- | Convert a documentation comment to an AST expression+documentationCommentToExpr :: Syntax.DocumentationComment -> Ast.Expr+documentationCommentToExpr doc =++      let description = Syntax.documentationCommentDescription doc+          tags = Syntax.documentationCommentTags doc+      in (Serialization.cst (toTypeScriptComments description tags))++-- | Convert a documentation tag to a JSDoc line. Built by joining non-empty parts with spaces so that absent type/param/description components don't introduce trailing whitespace.+documentationTagToLine :: Syntax.DocumentationTag -> String+documentationTagToLine tag =++      let name = Syntax.documentationTagName tag+          mtype = Syntax.documentationTagType tag+          mparamName = Syntax.documentationTagParamName tag+          description = Syntax.documentationTagDescription tag+          typePart =+                  Optionals.match mtype "" (\t -> Strings.concat [+                    "{",+                    (typeExpressionToString t),+                    "}"])+          paramPart = Optionals.match mparamName "" (\p -> Syntax.unIdentifier p)+          parts =+                  [+                    Strings.concat2 "@" name,+                    typePart,+                    paramPart,+                    description]+          nonEmpty = Lists.filter (\p -> Logic.not (Equality.equal p "")) parts+      in (Strings.concat2 " * " (Strings.join " " nonEmpty))++-- | Escape special characters in a string for TypeScript+escapeString :: String -> Bool -> String+escapeString s singleQuote =++      let replace = \old -> \new_ -> \str -> Strings.join new_ (Strings.splitOn old str)+          s1 = replace "\\" "\\\\" s+          s2 = replace "\n" "\\n" s1+          s3 = replace "\r" "\\r" s2+          s4 = replace "\t" "\\t" s3+      in (Logic.ifElse singleQuote (replace "'" "\\'" s4) (replace "\"" "\\\"" s4))++-- | Convert an export all declaration to an AST expression+exportAllToExpr :: Syntax.ExportAllDeclaration -> Ast.Expr+exportAllToExpr a =++      let exported = Syntax.exportAllDeclarationExported a+          source = Syntax.exportAllDeclarationSource a+          exportedClause =+                  Optionals.match exported (Serialization.cst "*") (\e -> Serialization.spaceSep [+                    Serialization.cst "*",+                    (Serialization.cst "as"),+                    (identifierToExpr e)])+      in (Serialization.suffix ";" (Serialization.spaceSep [+        Serialization.cst "export",+        exportedClause,+        (Serialization.cst "from"),+        (stringLiteralToExpr source)]))++-- | Convert an export declaration to an AST expression+exportDeclarationToExpr :: Syntax.ExportDeclaration -> Ast.Expr+exportDeclarationToExpr exp =+    case exp of+      Syntax.ExportDeclarationNamed v0 -> namedExportToExpr v0+      Syntax.ExportDeclarationDefault v0 -> Serialization.suffix ";" (Serialization.spaceSep [+        Serialization.cst "export",+        (Serialization.cst "default"),+        (expressionToExpr v0)])+      Syntax.ExportDeclarationDeclaration v0 -> Serialization.spaceSep [+        Serialization.cst "export",+        (statementToExpr v0)]+      Syntax.ExportDeclarationAll v0 -> exportAllToExpr v0++-- | Convert an export specifier to an AST expression+exportSpecifierToExpr :: Syntax.ExportSpecifier -> Ast.Expr+exportSpecifierToExpr spec =++      let local = Syntax.exportSpecifierLocal spec+          exported = Syntax.exportSpecifierExported spec+      in (Logic.ifElse (Equality.equal (Syntax.unIdentifier local) (Syntax.unIdentifier exported)) (identifierToExpr local) (Serialization.spaceSep [+        identifierToExpr local,+        (Serialization.cst "as"),+        (identifierToExpr exported)]))++-- | Convert a TypeScript expression to an AST expression+expressionToExpr :: Syntax.Expression -> Ast.Expr+expressionToExpr expr =+    case expr of+      Syntax.ExpressionIdentifier v0 -> identifierToExpr v0+      Syntax.ExpressionLiteral v0 -> literalToExpr v0+      Syntax.ExpressionArray v0 -> arrayExpressionToExpr v0+      Syntax.ExpressionObject v0 -> objectExpressionToExpr v0+      Syntax.ExpressionFunction v0 -> functionExpressionToExpr v0+      Syntax.ExpressionArrow v0 -> arrowFunctionExpressionToExpr v0+      Syntax.ExpressionCall v0 -> callExpressionToExpr v0+      Syntax.ExpressionMember v0 -> memberExpressionToExpr v0+      Syntax.ExpressionConditional v0 -> conditionalExpressionToExpr v0+      Syntax.ExpressionBinary v0 -> binaryExpressionToExpr v0+      Syntax.ExpressionUnary v0 -> unaryExpressionToExpr v0+      Syntax.ExpressionAssignment v0 -> assignmentExpressionToExpr v0+      Syntax.ExpressionSequence v0 -> Serialization.parenListAdaptive (Lists.map expressionToExpr v0)+      Syntax.ExpressionThis -> Serialization.cst "this"+      Syntax.ExpressionNew v0 -> Serialization.spaceSep [+        Serialization.cst "new",+        (callExpressionToExpr v0)]+      Syntax.ExpressionYield v0 -> Optionals.match v0 (Serialization.cst "yield") (\e -> Serialization.spaceSep [+        Serialization.cst "yield",+        (expressionToExpr e)])+      Syntax.ExpressionAwait v0 -> Serialization.spaceSep [+        Serialization.cst "await",+        (expressionToExpr v0)]+      Syntax.ExpressionSpread v0 -> Serialization.prefix "..." (expressionToExpr (Syntax.unSpreadElement v0))+      Syntax.ExpressionParenthesized v0 -> Serialization.parens (expressionToExpr v0)+      Syntax.ExpressionAsExpression v0 ->+        let innerE = Syntax.asExpressionExpression v0+            typ = Syntax.asExpressionType v0+        in (Serialization.parens (Serialization.spaceSep [+          expressionToExpr innerE,+          (Serialization.cst "as"),+          (Serialization.cst (tsTypeExpressionToString typ))]))++-- | Convert a for-in statement to an AST expression+forInStatementToExpr :: Syntax.ForInStatement -> Ast.Expr+forInStatementToExpr f =++      let left = Syntax.forInStatementLeft f+          right = Syntax.forInStatementRight f+          body = Syntax.forInStatementBody f+          leftExpr =+                  case left of+                    Syntax.ForInLeftVariable v0 -> variableDeclarationToExpr v0+                    Syntax.ForInLeftPattern v0 -> patternToExpr v0+      in (Serialization.spaceSep [+        Serialization.cst "for",+        (Serialization.parens (Serialization.spaceSep [+          leftExpr,+          (Serialization.cst "in"),+          (expressionToExpr right)])),+        (statementToExpr body)])++-- | Convert a for-of statement to an AST expression+forOfStatementToExpr :: Syntax.ForOfStatement -> Ast.Expr+forOfStatementToExpr f =++      let await = Syntax.forOfStatementAwait f+          left = Syntax.forOfStatementLeft f+          right = Syntax.forOfStatementRight f+          body = Syntax.forOfStatementBody f+          forKw = Logic.ifElse await (Serialization.cst "for await") (Serialization.cst "for")+          leftExpr =+                  case left of+                    Syntax.ForInLeftVariable v0 -> variableDeclarationToExpr v0+                    Syntax.ForInLeftPattern v0 -> patternToExpr v0+      in (Serialization.spaceSep [+        forKw,+        (Serialization.parens (Serialization.spaceSep [+          leftExpr,+          (Serialization.cst "of"),+          (expressionToExpr right)])),+        (statementToExpr body)])++-- | Convert a for statement to an AST expression+forStatementToExpr :: Syntax.ForStatement -> Ast.Expr+forStatementToExpr f =++      let init = Syntax.forStatementInit f+          test = Syntax.forStatementTest f+          update = Syntax.forStatementUpdate f+          body = Syntax.forStatementBody f+          initExpr =+                  Optionals.match init (Serialization.cst "") (\i -> case i of+                    Syntax.ForInitVariable v0 -> variableDeclarationToExpr v0+                    Syntax.ForInitExpression v0 -> expressionToExpr v0)+          testExpr = Optionals.match test (Serialization.cst "") expressionToExpr+          updateExpr = Optionals.match update (Serialization.cst "") expressionToExpr+      in (Serialization.spaceSep [+        Serialization.cst "for",+        (Serialization.parenListAdaptive [+          initExpr,+          testExpr,+          updateExpr]),+        (statementToExpr body)])++-- | Format import specifiers, handling default vs named imports+formatImportSpecifiers :: [Ast.Expr] -> Ast.Expr+formatImportSpecifiers specs = Serialization.curlyBracesList Nothing Serialization.inlineStyle specs++-- | Convert a function declaration to an AST expression+functionDeclarationToExpr :: Syntax.FunctionDeclaration -> Ast.Expr+functionDeclarationToExpr fn =++      let id = Syntax.functionDeclarationId fn+          params = Syntax.functionDeclarationParams fn+          body = Syntax.functionDeclarationBody fn+          async = Syntax.functionDeclarationAsync fn+          generator = Syntax.functionDeclarationGenerator fn+          asyncKw = Logic.ifElse async [+                Serialization.cst "async"] []+          funcKw = Logic.ifElse generator (Serialization.cst "function*") (Serialization.cst "function")+          paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)+          retAnnot = Serialization.cst ": any"+      in (Serialization.spaceSep (Lists.concat [+        asyncKw,+        [+          funcKw,+          (identifierToExpr id),+          paramsExpr,+          retAnnot,+          (blockStatementToExpr body)]]))++-- | Convert a function declaration with comments to an AST expression+functionDeclarationWithCommentsToExpr :: Syntax.FunctionDeclarationWithComments -> Ast.Expr+functionDeclarationWithCommentsToExpr fdwc =++      let body = Syntax.functionDeclarationWithCommentsBody fdwc+          mc = Syntax.functionDeclarationWithCommentsComments fdwc+      in (Optionals.match mc (functionDeclarationToExpr body) (\c -> Serialization.newlineSep [+        documentationCommentToExpr c,+        (functionDeclarationToExpr body)]))++-- | Convert a function expression to an AST expression+functionExpressionToExpr :: Syntax.FunctionExpression -> Ast.Expr+functionExpressionToExpr fn =++      let mid = Syntax.functionExpressionId fn+          params = Syntax.functionExpressionParams fn+          body = Syntax.functionExpressionBody fn+          async = Syntax.functionExpressionAsync fn+          generator = Syntax.functionExpressionGenerator fn+          asyncKw = Logic.ifElse async [+                Serialization.cst "async"] []+          funcKw = Logic.ifElse generator (Serialization.cst "function*") (Serialization.cst "function")+          nameExpr = Optionals.match mid [] (\id -> [+                identifierToExpr id])+          paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)+      in (Serialization.spaceSep (Lists.concat [+        asyncKw,+        [+          funcKw],+        nameExpr,+        [+          paramsExpr,+          (blockStatementToExpr body)]]))++-- | Convert an identifier to an AST expression+identifierToExpr :: Syntax.Identifier -> Ast.Expr+identifierToExpr id = Serialization.cst (Syntax.unIdentifier id)++-- | Convert an if statement to an AST expression+ifStatementToExpr :: Syntax.IfStatement -> Ast.Expr+ifStatementToExpr ifStmt =++      let test = Syntax.ifStatementTest ifStmt+          consequent = Syntax.ifStatementConsequent ifStmt+          alternate = Syntax.ifStatementAlternate ifStmt+          ifPart =+                  Serialization.spaceSep [+                    Serialization.cst "if",+                    (Serialization.parens (expressionToExpr test)),+                    (statementToExpr consequent)]+      in (Optionals.match alternate ifPart (\alt -> Serialization.spaceSep [+        ifPart,+        (Serialization.cst "else"),+        (statementToExpr alt)]))++-- | Convert an import declaration to an AST expression+importDeclarationToExpr :: Syntax.ImportDeclaration -> Ast.Expr+importDeclarationToExpr imp =++      let specifiers = Syntax.importDeclarationSpecifiers imp+          source = Syntax.importDeclarationSource imp+          sourceExpr = stringLiteralToExpr source+          specExprs = Lists.map importSpecifierToExpr specifiers+      in (Logic.ifElse (Lists.isEmpty specifiers) (Serialization.suffix ";" (Serialization.spaceSep [+        Serialization.cst "import",+        sourceExpr])) (Serialization.suffix ";" (Serialization.spaceSep [+        Serialization.cst "import",+        (formatImportSpecifiers specExprs),+        (Serialization.cst "from"),+        sourceExpr])))++-- | Convert an import specifier to an AST expression+importSpecifierToExpr :: Syntax.ImportClause -> Ast.Expr+importSpecifierToExpr spec =+    case spec of+      Syntax.ImportClauseNamed v0 ->+        let imported = Syntax.importSpecifierImported v0+            local = Syntax.importSpecifierLocal v0+        in (Logic.ifElse (Equality.equal (Syntax.unIdentifier imported) (Syntax.unIdentifier local)) (identifierToExpr local) (Serialization.spaceSep [+          identifierToExpr imported,+          (Serialization.cst "as"),+          (identifierToExpr local)]))+      Syntax.ImportClauseDefault v0 -> identifierToExpr (Syntax.unImportDefaultSpecifier v0)+      Syntax.ImportClauseNamespace v0 -> Serialization.spaceSep [+        Serialization.cst "*",+        (Serialization.cst "as"),+        (identifierToExpr (Syntax.unImportNamespaceSpecifier v0))]++-- | Detect a kernel-synthesized type-variable name like T0 or T12, which is unbound in inline type annotations+isKernelTypeVarName :: String -> Bool+isKernelTypeVarName s =++      let cps = Strings.toList s+          len = Lists.length cps+          first = Optionals.withDefault 0 (Lists.head cps)+          rest = Logic.ifElse (Ordering.gt len 0) (Lists.drop 1 cps) []+      in (Logic.and (Ordering.gt len 1) (Logic.and (Equality.equal first 84) (allDigits rest)))++-- | Convert a labeled statement to an AST expression+labeledStatementToExpr :: Syntax.LabeledStatement -> Ast.Expr+labeledStatementToExpr l =++      let label = Syntax.labeledStatementLabel l+          body = Syntax.labeledStatementBody l+      in (Serialization.spaceSep [+        Serialization.suffix ":" (identifierToExpr label),+        (statementToExpr body)])++-- | Convert a literal to an AST expression+literalToExpr :: Syntax.Literal -> Ast.Expr+literalToExpr lit =+    case lit of+      Syntax.LiteralString v0 -> stringLiteralToExpr v0+      Syntax.LiteralNumber v0 -> numericLiteralToExpr v0+      Syntax.LiteralBoolean v0 -> Serialization.cst (Logic.ifElse v0 "true" "false")+      Syntax.LiteralNull -> Serialization.cst "null"+      Syntax.LiteralUndefined -> Serialization.cst "undefined"+      Syntax.LiteralBigInt v0 -> Serialization.cst (Strings.concat2 (Literals.printBigint v0) "n")+      Syntax.LiteralTemplate v0 -> templateLiteralToExpr v0++-- | Convert a member expression to an AST expression+memberExpressionToExpr :: Syntax.MemberExpression -> Ast.Expr+memberExpressionToExpr mem =++      let obj = Syntax.memberExpressionObject mem+          prop = Syntax.memberExpressionProperty mem+          computed = Syntax.memberExpressionComputed mem+          optional = Syntax.memberExpressionOptional mem+          objExpr =+                  case obj of+                    Syntax.ExpressionArrow _ -> Serialization.parens (expressionToExpr obj)+                    Syntax.ExpressionConditional _ -> Serialization.parens (expressionToExpr obj)+                    Syntax.ExpressionBinary _ -> Serialization.parens (expressionToExpr obj)+                    Syntax.ExpressionUnary _ -> Serialization.parens (expressionToExpr obj)+                    Syntax.ExpressionAssignment _ -> Serialization.parens (expressionToExpr obj)+                    Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr obj)+                    Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr obj)+                    Syntax.ExpressionFunction _ -> Serialization.parens (expressionToExpr obj)+                    _ -> expressionToExpr obj+          propExpr = expressionToExpr prop+      in (Logic.ifElse computed (Serialization.spaceSep [+        objExpr,+        (Logic.ifElse optional (Serialization.cst "?.") (Serialization.cst "")),+        (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle propExpr)]) (Serialization.ifx (Logic.ifElse optional Operators.optionalChainOp Operators.memberOp) objExpr propExpr))++-- | Convert a method definition to an AST expression+methodDefinitionToExpr :: Syntax.MethodDefinition -> Ast.Expr+methodDefinitionToExpr method =++      let key = Syntax.methodDefinitionKey method+          value = Syntax.methodDefinitionValue method+          kind = Syntax.methodDefinitionKind method+          computed = Syntax.methodDefinitionComputed method+          static = Syntax.methodDefinitionStatic method+          staticKw = Logic.ifElse static [+                Serialization.cst "static"] []+          kindKw =+                  case kind of+                    Syntax.MethodKindConstructor -> []+                    Syntax.MethodKindMethod -> []+                    Syntax.MethodKindGet -> [+                      Serialization.cst "get"]+                    Syntax.MethodKindSet -> [+                      Serialization.cst "set"]+          keyExpr =+                  Logic.ifElse computed (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle (expressionToExpr key)) (expressionToExpr key)+          params = Syntax.functionExpressionParams value+          body = Syntax.functionExpressionBody value+          paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)+      in (Serialization.spaceSep (Lists.concat [+        staticKw,+        kindKw,+        [+          keyExpr,+          paramsExpr,+          (blockStatementToExpr body)]]))++-- | Convert a module item to an AST expression+moduleItemToExpr :: Syntax.ModuleItem -> Ast.Expr+moduleItemToExpr item =+    case item of+      Syntax.ModuleItemStatement v0 -> statementToExpr v0+      Syntax.ModuleItemImport v0 -> importDeclarationToExpr v0+      Syntax.ModuleItemExport v0 -> exportDeclarationToExpr v0++-- | Convert a module item with comments to an AST expression+moduleItemWithCommentsToExpr :: Syntax.ModuleItemWithComments -> Ast.Expr+moduleItemWithCommentsToExpr miwc =++      let body = Syntax.moduleItemWithCommentsBody miwc+          mc = Syntax.moduleItemWithCommentsComments miwc+      in (Optionals.match mc (moduleItemToExpr body) (\c -> Serialization.newlineSep [+        documentationCommentToExpr c,+        (moduleItemToExpr body)]))++-- | Convert a named export to an AST expression+namedExportToExpr :: Syntax.NamedExport -> Ast.Expr+namedExportToExpr n =++      let specifiers = Syntax.namedExportSpecifiers n+          source = Syntax.namedExportSource n+          specExprs = Lists.map exportSpecifierToExpr specifiers+          fromClause =+                  Optionals.match source [] (\s -> [+                    Serialization.cst "from",+                    (stringLiteralToExpr s)])+      in (Serialization.suffix ";" (Serialization.spaceSep (Lists.concat [+        [+          Serialization.cst "export"],+        [+          Serialization.curlyBracesList Nothing Serialization.inlineStyle specExprs],+        fromClause])))++-- | Convert a numeric literal to an AST expression+numericLiteralToExpr :: Syntax.NumericLiteral -> Ast.Expr+numericLiteralToExpr n =+    case n of+      Syntax.NumericLiteralInteger v0 -> Serialization.cst (Literals.printInt64 v0)+      Syntax.NumericLiteralFloat v0 -> Serialization.cst (Literals.printFloat64 v0)++-- | Convert an object expression to an AST expression+objectExpressionToExpr :: [Syntax.Property] -> Ast.Expr+objectExpressionToExpr obj =+    Serialization.curlyBracesList Nothing Serialization.halfBlockStyle (Lists.map propertyToExpr obj)++-- | Convert an object pattern property to an AST expression+objectPatternPropertyToExpr :: Syntax.ObjectPatternProperty -> Ast.Expr+objectPatternPropertyToExpr prop =+    case prop of+      Syntax.ObjectPatternPropertyProperty v0 -> propertyToExpr v0+      Syntax.ObjectPatternPropertyRest v0 -> Serialization.prefix "..." (patternToExpr (Syntax.unRestElement v0))++-- | Convert an object pattern to an AST expression+objectPatternToExpr :: Syntax.ObjectPattern -> Ast.Expr+objectPatternToExpr obj =++      let props = Syntax.objectPatternProperties obj+      in (Serialization.curlyBracesList Nothing Serialization.inlineStyle (Lists.map objectPatternPropertyToExpr props))++-- | Convert a pattern to an AST expression+patternToExpr :: Syntax.Pattern -> Ast.Expr+patternToExpr pat =+    case pat of+      Syntax.PatternIdentifier v0 -> identifierToExpr v0+      Syntax.PatternObject v0 -> objectPatternToExpr v0+      Syntax.PatternArray v0 -> arrayPatternToExpr v0+      Syntax.PatternAssignment v0 -> assignmentPatternToExpr v0+      Syntax.PatternRest v0 -> Serialization.prefix "..." (patternToExpr (Syntax.unRestElement v0))+      Syntax.PatternTyped v0 -> typedPatternToExpr v0++-- | Render a TS.Pattern as a plain string+patternToString :: Syntax.Pattern -> String+patternToString pat =+    case pat of+      Syntax.PatternIdentifier v0 -> Syntax.unIdentifier v0+      Syntax.PatternRest v0 -> Strings.concat2 "..." (patternToString (Syntax.unRestElement v0))+      Syntax.PatternTyped v0 -> Strings.concat [+        patternToString (Syntax.typedPatternPattern v0),+        ": ",+        (tsTypeExpressionToString (Syntax.typedPatternType v0))]+      _ -> "_"++-- | Convert a TypeScript program to an AST expression+programToExpr :: Syntax.Program -> Ast.Expr+programToExpr prog =++      let body = Syntax.programBody prog+          warning = [+                Serialization.cst (toLineComment Constants.warningAutoGeneratedFile)]+          items = Lists.map moduleItemToExpr body+      in (Serialization.doubleNewlineSep (Lists.concat [+        warning,+        items]))++-- | Convert an object property to an AST expression+propertyToExpr :: Syntax.Property -> Ast.Expr+propertyToExpr prop =++      let key = Syntax.propertyKey prop+          value = Syntax.propertyValue prop+          shorthand = Syntax.propertyShorthand prop+          computed = Syntax.propertyComputed prop+          keyExpr =+                  Logic.ifElse computed (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle (expressionToExpr key)) (expressionToExpr key)+      in (Logic.ifElse shorthand keyExpr (Serialization.ifx Operators.colonOp keyExpr (expressionToExpr value)))++-- | Convert a return statement to an AST expression+returnStatementToExpr :: Maybe Syntax.Expression -> Ast.Expr+returnStatementToExpr r =+    Optionals.match r (Serialization.cst "return;") (\e -> Serialization.suffix ";" (Serialization.spaceSep [+      Serialization.cst "return",+      (expressionToExpr e)]))++-- | Convert a statement to an AST expression+statementToExpr :: Syntax.Statement -> Ast.Expr+statementToExpr stmt =+    case stmt of+      Syntax.StatementExpression v0 -> Serialization.suffix ";" (expressionToExpr v0)+      Syntax.StatementBlock v0 -> blockStatementToExpr v0+      Syntax.StatementEmpty -> Serialization.cst ";"+      Syntax.StatementDebugger -> Serialization.cst "debugger;"+      Syntax.StatementReturn v0 -> returnStatementToExpr v0+      Syntax.StatementBreak v0 -> breakStatementToExpr v0+      Syntax.StatementContinue v0 -> continueStatementToExpr v0+      Syntax.StatementIf v0 -> ifStatementToExpr v0+      Syntax.StatementSwitch v0 -> switchStatementToExpr v0+      Syntax.StatementThrow v0 -> throwStatementToExpr v0+      Syntax.StatementTry v0 -> tryStatementToExpr v0+      Syntax.StatementWhile v0 -> whileStatementToExpr v0+      Syntax.StatementDoWhile v0 -> doWhileStatementToExpr v0+      Syntax.StatementFor v0 -> forStatementToExpr v0+      Syntax.StatementForIn v0 -> forInStatementToExpr v0+      Syntax.StatementForOf v0 -> forOfStatementToExpr v0+      Syntax.StatementVariableDeclaration v0 -> variableDeclarationToExpr v0+      Syntax.StatementFunctionDeclaration v0 -> functionDeclarationToExpr v0+      Syntax.StatementClassDeclaration v0 -> classDeclarationToExpr v0+      Syntax.StatementLabeled v0 -> labeledStatementToExpr v0++-- | Convert a string literal to an AST expression+stringLiteralToExpr :: Syntax.StringLiteral -> Ast.Expr+stringLiteralToExpr s =++      let value = Syntax.stringLiteralValue s+          singleQuote = Syntax.stringLiteralSingleQuote s+          quote = Logic.ifElse singleQuote "'" "\""+          escaped = escapeString value singleQuote+      in (Serialization.cst (Strings.concat [+        quote,+        escaped,+        quote]))++-- | Convert a switch case to an AST expression+switchCaseToExpr :: Syntax.SwitchCase -> Ast.Expr+switchCaseToExpr c =++      let test = Syntax.switchCaseTest c+          consequent = Syntax.switchCaseConsequent c+          caseLabel =+                  Optionals.match test (Serialization.cst "default:") (\t -> Serialization.spaceSep [+                    Serialization.cst "case",+                    (expressionToExpr t),+                    (Serialization.cst ":")])+      in (Serialization.newlineSep (Lists.cons caseLabel (Lists.map statementToExpr consequent)))++-- | Convert a switch statement to an AST expression+switchStatementToExpr :: Syntax.SwitchStatement -> Ast.Expr+switchStatementToExpr switchStmt =++      let discriminant = Syntax.switchStatementDiscriminant switchStmt+          match = Syntax.switchStatementCases switchStmt+      in (Serialization.spaceSep [+        Serialization.cst "switch",+        (Serialization.parens (expressionToExpr discriminant)),+        (Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map switchCaseToExpr match)))])++-- | Convert a template literal to an AST expression+templateLiteralToExpr :: Syntax.TemplateLiteral -> Ast.Expr+templateLiteralToExpr t =++      let quasis = Syntax.templateLiteralQuasis t+          exprs = Syntax.templateLiteralExpressions t+      in (Serialization.cst (Strings.concat [+        "`",+        (Strings.join "" (Lists.map (\q -> Syntax.templateElementValue q) quasis)),+        "`"]))++-- | Convert a throw statement to an AST expression+throwStatementToExpr :: Syntax.ThrowStatement -> Ast.Expr+throwStatementToExpr t =+    Serialization.suffix ";" (Serialization.spaceSep [+      Serialization.cst "throw",+      (expressionToExpr (Syntax.unThrowStatement t))])++-- | Convert a string to a TypeScript line comment. Empty source lines emit `//` (no trailing space).+toLineComment :: String -> String+toLineComment s =+    Strings.join "\n" (Lists.map (\line -> Logic.ifElse (Equality.equal line "") "//" (Strings.concat2 "// " line)) (Formatting.lines s))++-- | Format a description and tags as a JSDoc comment. Empty doc lines emit ` *` (no trailing space) so blank lines don't carry trailing whitespace.+toTypeScriptComments :: String -> [Syntax.DocumentationTag] -> String+toTypeScriptComments desc tags =++      let descLines =+              Logic.ifElse (Equality.equal desc "") [] (Lists.map (\line -> Logic.ifElse (Equality.equal line "") " *" (Strings.concat2 " * " line)) (Formatting.lines desc))+          tagLines = Lists.map documentationTagToLine tags+          allLines =+                  Lists.concat [+                    descLines,+                    tagLines]+      in (Logic.ifElse (Lists.isEmpty allLines) "" (Strings.join "\n" (Lists.concat [+        [+          "/**"],+        allLines,+        [+          " */"]])))++-- | Convert a try statement to an AST expression+tryStatementToExpr :: Syntax.TryStatement -> Ast.Expr+tryStatementToExpr t =++      let block = Syntax.tryStatementBlock t+          handler = Syntax.tryStatementHandler t+          finalizer = Syntax.tryStatementFinalizer t+          tryPart =+                  Serialization.spaceSep [+                    Serialization.cst "try",+                    (blockStatementToExpr block)]+          catchPart = Optionals.match handler [] (\c -> [+                catchClauseToExpr c])+          finallyPart =+                  Optionals.match finalizer [] (\f -> [+                    Serialization.spaceSep [+                      Serialization.cst "finally",+                      (blockStatementToExpr f)]])+      in (Serialization.spaceSep (Lists.concat [+        [+          tryPart],+        catchPart,+        finallyPart]))++-- | Render a TypeScript type expression as a string in TS syntax+tsTypeExpressionToString :: Syntax.TypeExpression -> String+tsTypeExpressionToString t =+    case t of+      Syntax.TypeExpressionIdentifier v0 ->+        let raw = Syntax.unIdentifier v0+        in (Logic.ifElse (isKernelTypeVarName raw) "any" raw)+      Syntax.TypeExpressionAny -> "any"+      Syntax.TypeExpressionVoid -> "void"+      Syntax.TypeExpressionNever -> "never"+      Syntax.TypeExpressionArray v0 -> Strings.concat [+        "ReadonlyArray<",+        (tsTypeExpressionToString (Syntax.unArrayTypeExpression v0)),+        ">"]+      Syntax.TypeExpressionTuple v0 -> Strings.concat [+        "readonly [",+        (Strings.join ", " (Lists.map tsTypeExpressionToString v0)),+        "]"]+      Syntax.TypeExpressionUnion v0 -> Strings.join " | " (Lists.map tsTypeExpressionToString v0)+      Syntax.TypeExpressionIntersection v0 -> Strings.join " & " (Lists.map tsTypeExpressionToString v0)+      Syntax.TypeExpressionParameterized v0 -> Strings.concat [+        tsTypeExpressionToString (Syntax.parameterizedTypeExpressionBase v0),+        "<",+        (Strings.join ", " (Lists.map tsTypeExpressionToString (Syntax.parameterizedTypeExpressionArguments v0))),+        ">"]+      Syntax.TypeExpressionOptional v0 -> Strings.concat [+        tsTypeExpressionToString v0,+        " | undefined"]+      Syntax.TypeExpressionReadonly v0 -> Strings.concat2 "readonly " (tsTypeExpressionToString v0)+      Syntax.TypeExpressionUnknown -> "unknown"+      Syntax.TypeExpressionFunction _ -> "((...args: any[]) => any)"+      _ -> "unknown"++-- | Convert a type expression to a string for JSDoc+typeExpressionToString :: Syntax.TypeExpression -> String+typeExpressionToString typ =+    case typ of+      Syntax.TypeExpressionIdentifier v0 -> Syntax.unIdentifier v0+      Syntax.TypeExpressionAny -> "*"+      Syntax.TypeExpressionVoid -> "void"+      Syntax.TypeExpressionNever -> "never"+      Syntax.TypeExpressionLiteral _ -> "literal"+      Syntax.TypeExpressionArray v0 -> Strings.concat2 (typeExpressionToString (Syntax.unArrayTypeExpression v0)) "[]"+      Syntax.TypeExpressionFunction v0 ->+        let params = Syntax.functionTypeExpressionParameters v0+            rt = Syntax.functionTypeExpressionReturnType v0+            rendered =+                    Pairs.second (Lists.foldl (\acc -> \p ->+                      let i = Pairs.first acc+                          soFar = Pairs.second acc+                          this =+                                  Strings.concat [+                                    "_a",+                                    (Literals.printInt32 i),+                                    ": ",+                                    (typeExpressionToString p)]+                      in (Math.add i 1, (Lists.concat2 soFar (Lists.singleton this)))) (0, []) params)+        in (Strings.concat [+          "(",+          (Strings.join ", " rendered),+          ") => ",+          (typeExpressionToString rt)])+      Syntax.TypeExpressionObject _ -> "Object"+      Syntax.TypeExpressionUnion v0 -> Strings.join "|" (Lists.map typeExpressionToString v0)+      Syntax.TypeExpressionParameterized v0 ->+        let base = Syntax.parameterizedTypeExpressionBase v0+            args = Syntax.parameterizedTypeExpressionArguments v0+        in (Strings.concat [+          typeExpressionToString base,+          "<",+          (Strings.join ", " (Lists.map typeExpressionToString args)),+          ">"])+      Syntax.TypeExpressionOptional v0 -> Strings.concat2 "?" (typeExpressionToString v0)++-- | Render `<pattern>: <type>` (TypeScript parameter / variable type annotation)+typedPatternToExpr :: Syntax.TypedPattern -> Ast.Expr+typedPatternToExpr tp =++      let innerPat = Syntax.typedPatternPattern tp+          typ = Syntax.typedPatternType tp+          innerStr = patternToString innerPat+          typeStr = tsTypeExpressionToString typ+      in (Serialization.cst (Strings.concat [+        innerStr,+        ": ",+        typeStr]))++-- | Convert a unary expression to an AST expression+unaryExpressionToExpr :: Syntax.UnaryExpression -> Ast.Expr+unaryExpressionToExpr un =++      let op = Syntax.unaryExpressionOperator un+          arg = Syntax.unaryExpressionArgument un+          prefix = Syntax.unaryExpressionPrefix un+          opStr = unaryOperatorToString op+          argExpr = expressionToExpr arg+      in (Logic.ifElse prefix (Serialization.prefix opStr argExpr) (Serialization.suffix opStr argExpr))++-- | Convert a unary operator to a string+unaryOperatorToString :: Syntax.UnaryOperator -> String+unaryOperatorToString op =+    case op of+      Syntax.UnaryOperatorNegate -> "-"+      Syntax.UnaryOperatorPlus -> "+"+      Syntax.UnaryOperatorNot -> "!"+      Syntax.UnaryOperatorBitwiseNot -> "~"+      Syntax.UnaryOperatorTypeof -> "typeof "+      Syntax.UnaryOperatorVoid -> "void "+      Syntax.UnaryOperatorDelete -> "delete "+      Syntax.UnaryOperatorIncrement -> "++"+      Syntax.UnaryOperatorDecrement -> "--"++-- | Convert a variable declaration to an AST expression+variableDeclarationToExpr :: Syntax.VariableDeclaration -> Ast.Expr+variableDeclarationToExpr decl =++      let kind = Syntax.variableDeclarationKind decl+          declarations = Syntax.variableDeclarationDeclarations decl+      in (Serialization.suffix ";" (Serialization.spaceSep [+        variableKindToExpr kind,+        (Serialization.commaSep Serialization.inlineStyle (Lists.map variableDeclaratorToExpr declarations))]))++-- | Convert a variable declarator to an AST expression+variableDeclaratorToExpr :: Syntax.VariableDeclarator -> Ast.Expr+variableDeclaratorToExpr decl =++      let id = Syntax.variableDeclaratorId decl+          init = Syntax.variableDeclaratorInit decl+      in (Optionals.match init (patternToExpr id) (\e -> Serialization.ifx Operators.defineOp (patternToExpr id) (expressionToExpr e)))++-- | Convert a variable kind to an AST expression+variableKindToExpr :: Syntax.VariableKind -> Ast.Expr+variableKindToExpr kind =+    case kind of+      Syntax.VariableKindVar -> Serialization.cst "var"+      Syntax.VariableKindLet -> Serialization.cst "let"+      Syntax.VariableKindConst -> Serialization.cst "const"++-- | Convert a while statement to an AST expression+whileStatementToExpr :: Syntax.WhileStatement -> Ast.Expr+whileStatementToExpr w =++      let test = Syntax.whileStatementTest w+          body = Syntax.whileStatementBody w+      in (Serialization.spaceSep [+        Serialization.cst "while",+        (Serialization.parens (expressionToExpr test)),+        (statementToExpr body)])
+ src/main/haskell/Hydra/Typescript/Syntax.hs view
@@ -0,0 +1,1730 @@+-- Note: this is an automatically generated file. Do not edit.++-- | A TypeScript 5.x syntax model for Hydra code generation++module Hydra.Typescript.Syntax where++import qualified Hydra.Core.Model as Model+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void+import qualified Data.Int as I++-- | An element in an array expression+data ArrayElement =+  -- | A regular expression element+  ArrayElementExpression Expression |+  -- | A spread element ...x+  ArrayElementSpread SpreadElement |+  -- | An empty slot (elision)+  ArrayElementHole+  deriving (Eq, Ord, Read, Show)++_ArrayElement = Model.Name "hydra.typescript.syntax.ArrayElement"++_ArrayElement_expression = Model.Name "expression"++_ArrayElement_spread = Model.Name "spread"++_ArrayElement_hole = Model.Name "hole"++-- | An array expression [a, b, c]+type ArrayExpression = [ArrayElement]++_ArrayExpression = Model.Name "hydra.typescript.syntax.ArrayExpression"++-- | An array destructuring pattern [a, b, c]+type ArrayPattern = [Maybe Pattern]++_ArrayPattern = Model.Name "hydra.typescript.syntax.ArrayPattern"++-- | An array type (T[])+newtype ArrayTypeExpression =+  ArrayTypeExpression {+    unArrayTypeExpression :: TypeExpression}+  deriving (Eq, Ord, Read, Show)++_ArrayTypeExpression = Model.Name "hydra.typescript.syntax.ArrayTypeExpression"++-- | The body of an arrow function (expression or block)+data ArrowFunctionBody =+  ArrowFunctionBodyExpression Expression |+  ArrowFunctionBodyBlock BlockStatement+  deriving (Eq, Ord, Read, Show)++_ArrowFunctionBody = Model.Name "hydra.typescript.syntax.ArrowFunctionBody"++_ArrowFunctionBody_expression = Model.Name "expression"++_ArrowFunctionBody_block = Model.Name "block"++-- | An arrow function expression+data ArrowFunctionExpression =+  ArrowFunctionExpression {+    -- | Function parameters+    arrowFunctionExpressionParams :: [Pattern],+    -- | Function body (expression or block)+    arrowFunctionExpressionBody :: ArrowFunctionBody,+    -- | Whether the function is async+    arrowFunctionExpressionAsync :: Bool}+  deriving (Eq, Ord, Read, Show)++_ArrowFunctionExpression = Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"++_ArrowFunctionExpression_params = Model.Name "params"++_ArrowFunctionExpression_body = Model.Name "body"++_ArrowFunctionExpression_async = Model.Name "async"++-- | A TypeScript `<expression> as <type>` cast+data AsExpression =+  AsExpression {+    -- | The expression being cast+    asExpressionExpression :: Expression,+    -- | The target type+    asExpressionType :: TypeExpression}+  deriving (Eq, Ord, Read, Show)++_AsExpression = Model.Name "hydra.typescript.syntax.AsExpression"++_AsExpression_expression = Model.Name "expression"++_AsExpression_type = Model.Name "type"++-- | An assignment expression+data AssignmentExpression =+  AssignmentExpression {+    assignmentExpressionOperator :: AssignmentOperator,+    assignmentExpressionLeft :: Pattern,+    assignmentExpressionRight :: Expression}+  deriving (Eq, Ord, Read, Show)++_AssignmentExpression = Model.Name "hydra.typescript.syntax.AssignmentExpression"++_AssignmentExpression_operator = Model.Name "operator"++_AssignmentExpression_left = Model.Name "left"++_AssignmentExpression_right = Model.Name "right"++-- | An assignment operator+data AssignmentOperator =+  -- | =+  AssignmentOperatorAssign |+  -- | +=+  AssignmentOperatorAddAssign |+  -- | -=+  AssignmentOperatorSubtractAssign |+  -- | *=+  AssignmentOperatorMultiplyAssign |+  -- | /=+  AssignmentOperatorDivideAssign |+  -- | %=+  AssignmentOperatorModuloAssign |+  -- | **=+  AssignmentOperatorExponentiateAssign |+  -- | <<=+  AssignmentOperatorLeftShiftAssign |+  -- | >>=+  AssignmentOperatorRightShiftAssign |+  -- | >>>=+  AssignmentOperatorUnsignedRightShiftAssign |+  -- | &=+  AssignmentOperatorBitwiseAndAssign |+  -- | |=+  AssignmentOperatorBitwiseOrAssign |+  -- | ^=+  AssignmentOperatorBitwiseXorAssign |+  -- | &&=+  AssignmentOperatorAndAssign |+  -- | ||=+  AssignmentOperatorOrAssign |+  -- | ??=+  AssignmentOperatorNullishAssign+  deriving (Eq, Ord, Read, Show)++_AssignmentOperator = Model.Name "hydra.typescript.syntax.AssignmentOperator"++_AssignmentOperator_assign = Model.Name "assign"++_AssignmentOperator_addAssign = Model.Name "addAssign"++_AssignmentOperator_subtractAssign = Model.Name "subtractAssign"++_AssignmentOperator_multiplyAssign = Model.Name "multiplyAssign"++_AssignmentOperator_divideAssign = Model.Name "divideAssign"++_AssignmentOperator_moduloAssign = Model.Name "moduloAssign"++_AssignmentOperator_exponentiateAssign = Model.Name "exponentiateAssign"++_AssignmentOperator_leftShiftAssign = Model.Name "leftShiftAssign"++_AssignmentOperator_rightShiftAssign = Model.Name "rightShiftAssign"++_AssignmentOperator_unsignedRightShiftAssign = Model.Name "unsignedRightShiftAssign"++_AssignmentOperator_bitwiseAndAssign = Model.Name "bitwiseAndAssign"++_AssignmentOperator_bitwiseOrAssign = Model.Name "bitwiseOrAssign"++_AssignmentOperator_bitwiseXorAssign = Model.Name "bitwiseXorAssign"++_AssignmentOperator_andAssign = Model.Name "andAssign"++_AssignmentOperator_orAssign = Model.Name "orAssign"++_AssignmentOperator_nullishAssign = Model.Name "nullishAssign"++-- | A pattern with default value (param = default)+data AssignmentPattern =+  AssignmentPattern {+    assignmentPatternLeft :: Pattern,+    assignmentPatternRight :: Expression}+  deriving (Eq, Ord, Read, Show)++_AssignmentPattern = Model.Name "hydra.typescript.syntax.AssignmentPattern"++_AssignmentPattern_left = Model.Name "left"++_AssignmentPattern_right = Model.Name "right"++-- | A binary operation expression+data BinaryExpression =+  BinaryExpression {+    binaryExpressionOperator :: BinaryOperator,+    binaryExpressionLeft :: Expression,+    binaryExpressionRight :: Expression}+  deriving (Eq, Ord, Read, Show)++_BinaryExpression = Model.Name "hydra.typescript.syntax.BinaryExpression"++_BinaryExpression_operator = Model.Name "operator"++_BinaryExpression_left = Model.Name "left"++_BinaryExpression_right = Model.Name "right"++-- | A binary operator+data BinaryOperator =+  -- | ++  BinaryOperatorAdd |+  -- | -+  BinaryOperatorSubtract |+  -- | *+  BinaryOperatorMultiply |+  -- | /+  BinaryOperatorDivide |+  -- | %+  BinaryOperatorModulo |+  -- | **+  BinaryOperatorExponentiate |+  -- | ==+  BinaryOperatorEqual |+  -- | !=+  BinaryOperatorNotEqual |+  -- | ===+  BinaryOperatorStrictEqual |+  -- | !==+  BinaryOperatorStrictNotEqual |+  -- | <+  BinaryOperatorLessThan |+  -- | <=+  BinaryOperatorLessThanOrEqual |+  -- | >+  BinaryOperatorGreaterThan |+  -- | >=+  BinaryOperatorGreaterThanOrEqual |+  -- | &&+  BinaryOperatorAnd |+  -- | ||+  BinaryOperatorOr |+  -- | ??+  BinaryOperatorNullishCoalescing |+  -- | &+  BinaryOperatorBitwiseAnd |+  -- | |+  BinaryOperatorBitwiseOr |+  -- | ^+  BinaryOperatorBitwiseXor |+  -- | <<+  BinaryOperatorLeftShift |+  -- | >>+  BinaryOperatorRightShift |+  -- | >>>+  BinaryOperatorUnsignedRightShift |+  -- | in+  BinaryOperatorIn |+  -- | instanceof+  BinaryOperatorInstanceof+  deriving (Eq, Ord, Read, Show)++_BinaryOperator = Model.Name "hydra.typescript.syntax.BinaryOperator"++_BinaryOperator_add = Model.Name "add"++_BinaryOperator_subtract = Model.Name "subtract"++_BinaryOperator_multiply = Model.Name "multiply"++_BinaryOperator_divide = Model.Name "divide"++_BinaryOperator_modulo = Model.Name "modulo"++_BinaryOperator_exponentiate = Model.Name "exponentiate"++_BinaryOperator_equal = Model.Name "equal"++_BinaryOperator_notEqual = Model.Name "notEqual"++_BinaryOperator_strictEqual = Model.Name "strictEqual"++_BinaryOperator_strictNotEqual = Model.Name "strictNotEqual"++_BinaryOperator_lessThan = Model.Name "lessThan"++_BinaryOperator_lessThanOrEqual = Model.Name "lessThanOrEqual"++_BinaryOperator_greaterThan = Model.Name "greaterThan"++_BinaryOperator_greaterThanOrEqual = Model.Name "greaterThanOrEqual"++_BinaryOperator_and = Model.Name "and"++_BinaryOperator_or = Model.Name "or"++_BinaryOperator_nullishCoalescing = Model.Name "nullishCoalescing"++_BinaryOperator_bitwiseAnd = Model.Name "bitwiseAnd"++_BinaryOperator_bitwiseOr = Model.Name "bitwiseOr"++_BinaryOperator_bitwiseXor = Model.Name "bitwiseXor"++_BinaryOperator_leftShift = Model.Name "leftShift"++_BinaryOperator_rightShift = Model.Name "rightShift"++_BinaryOperator_unsignedRightShift = Model.Name "unsignedRightShift"++_BinaryOperator_in = Model.Name "in"++_BinaryOperator_instanceof = Model.Name "instanceof"++-- | A block statement { ... }+type BlockStatement = [Statement]++_BlockStatement = Model.Name "hydra.typescript.syntax.BlockStatement"++-- | A break statement+type BreakStatement = (Maybe Identifier)++_BreakStatement = Model.Name "hydra.typescript.syntax.BreakStatement"++-- | A function call expression+data CallExpression =+  CallExpression {+    -- | The function being called+    callExpressionCallee :: Expression,+    -- | The arguments+    callExpressionArguments :: [Expression],+    -- | Whether using optional chaining (?.)+    callExpressionOptional :: Bool}+  deriving (Eq, Ord, Read, Show)++_CallExpression = Model.Name "hydra.typescript.syntax.CallExpression"++_CallExpression_callee = Model.Name "callee"++_CallExpression_arguments = Model.Name "arguments"++_CallExpression_optional = Model.Name "optional"++-- | A catch clause+data CatchClause =+  CatchClause {+    -- | The catch parameter (can be omitted in ES2019+)+    catchClauseParam :: (Maybe Pattern),+    catchClauseBody :: BlockStatement}+  deriving (Eq, Ord, Read, Show)++_CatchClause = Model.Name "hydra.typescript.syntax.CatchClause"++_CatchClause_param = Model.Name "param"++_CatchClause_body = Model.Name "body"++-- | A class body+type ClassBody = [MethodDefinition]++_ClassBody = Model.Name "hydra.typescript.syntax.ClassBody"++-- | A class declaration+data ClassDeclaration =+  ClassDeclaration {+    -- | Class name+    classDeclarationId :: Identifier,+    -- | Optional superclass+    classDeclarationSuperClass :: (Maybe Expression),+    -- | Class body+    classDeclarationBody :: ClassBody}+  deriving (Eq, Ord, Read, Show)++_ClassDeclaration = Model.Name "hydra.typescript.syntax.ClassDeclaration"++_ClassDeclaration_id = Model.Name "id"++_ClassDeclaration_superClass = Model.Name "superClass"++_ClassDeclaration_body = Model.Name "body"++-- | A class declaration with optional JSDoc+data ClassDeclarationWithComments =+  ClassDeclarationWithComments {+    -- | The class declaration+    classDeclarationWithCommentsBody :: ClassDeclaration,+    -- | Optional JSDoc comment+    classDeclarationWithCommentsComments :: (Maybe DocumentationComment)}+  deriving (Eq, Ord, Read, Show)++_ClassDeclarationWithComments = Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"++_ClassDeclarationWithComments_body = Model.Name "body"++_ClassDeclarationWithComments_comments = Model.Name "comments"++-- | A TypeScript comment+data Comment =+  -- | A single-line comment (// ...)+  CommentLine String |+  -- | A block comment, delimited by slash-star and star-slash+  CommentBlock String |+  -- | A documentation comment, delimited by slash-double-star and star-slash (JSDoc)+  CommentDocumentation DocumentationComment+  deriving (Eq, Ord, Read, Show)++_Comment = Model.Name "hydra.typescript.syntax.Comment"++_Comment_line = Model.Name "line"++_Comment_block = Model.Name "block"++_Comment_documentation = Model.Name "documentation"++-- | A conditional (ternary) expression: test ? consequent : alternate+data ConditionalExpression =+  ConditionalExpression {+    conditionalExpressionTest :: Expression,+    conditionalExpressionConsequent :: Expression,+    conditionalExpressionAlternate :: Expression}+  deriving (Eq, Ord, Read, Show)++_ConditionalExpression = Model.Name "hydra.typescript.syntax.ConditionalExpression"++_ConditionalExpression_test = Model.Name "test"++_ConditionalExpression_consequent = Model.Name "consequent"++_ConditionalExpression_alternate = Model.Name "alternate"++-- | A continue statement+type ContinueStatement = (Maybe Identifier)++_ContinueStatement = Model.Name "hydra.typescript.syntax.ContinueStatement"++-- | A do-while statement+data DoWhileStatement =+  DoWhileStatement {+    doWhileStatementBody :: Statement,+    doWhileStatementTest :: Expression}+  deriving (Eq, Ord, Read, Show)++_DoWhileStatement = Model.Name "hydra.typescript.syntax.DoWhileStatement"++_DoWhileStatement_body = Model.Name "body"++_DoWhileStatement_test = Model.Name "test"++-- | A documentation comment (JSDoc) with structured tags+data DocumentationComment =+  DocumentationComment {+    -- | The main description+    documentationCommentDescription :: String,+    -- | Documentation tags (@param, @returns, etc.)+    documentationCommentTags :: [DocumentationTag]}+  deriving (Eq, Ord, Read, Show)++_DocumentationComment = Model.Name "hydra.typescript.syntax.DocumentationComment"++_DocumentationComment_description = Model.Name "description"++_DocumentationComment_tags = Model.Name "tags"++-- | A documentation tag (@param, @returns, @type, etc.)+data DocumentationTag =+  DocumentationTag {+    -- | Tag name (param, returns, type, etc.)+    documentationTagName :: String,+    -- | Optional type expression+    documentationTagType :: (Maybe TypeExpression),+    -- | Optional parameter name (for @param)+    documentationTagParamName :: (Maybe Identifier),+    -- | Tag description+    documentationTagDescription :: String}+  deriving (Eq, Ord, Read, Show)++_DocumentationTag = Model.Name "hydra.typescript.syntax.DocumentationTag"++_DocumentationTag_name = Model.Name "name"++_DocumentationTag_type = Model.Name "type"++_DocumentationTag_paramName = Model.Name "paramName"++_DocumentationTag_description = Model.Name "description"++-- | Export all declaration (export * from ...)+data ExportAllDeclaration =+  ExportAllDeclaration {+    exportAllDeclarationExported :: (Maybe Identifier),+    exportAllDeclarationSource :: StringLiteral}+  deriving (Eq, Ord, Read, Show)++_ExportAllDeclaration = Model.Name "hydra.typescript.syntax.ExportAllDeclaration"++_ExportAllDeclaration_exported = Model.Name "exported"++_ExportAllDeclaration_source = Model.Name "source"++-- | An export declaration+data ExportDeclaration =+  -- | Named exports (export {x, y as z})+  ExportDeclarationNamed NamedExport |+  -- | Default export (export default ...)+  ExportDeclarationDefault Expression |+  -- | Export a declaration (export const x = ...)+  ExportDeclarationDeclaration Statement |+  -- | Export all (export * from ...)+  ExportDeclarationAll ExportAllDeclaration+  deriving (Eq, Ord, Read, Show)++_ExportDeclaration = Model.Name "hydra.typescript.syntax.ExportDeclaration"++_ExportDeclaration_named = Model.Name "named"++_ExportDeclaration_default = Model.Name "default"++_ExportDeclaration_declaration = Model.Name "declaration"++_ExportDeclaration_all = Model.Name "all"++-- | An export specifier (x as y)+data ExportSpecifier =+  ExportSpecifier {+    exportSpecifierLocal :: Identifier,+    exportSpecifierExported :: Identifier}+  deriving (Eq, Ord, Read, Show)++_ExportSpecifier = Model.Name "hydra.typescript.syntax.ExportSpecifier"++_ExportSpecifier_local = Model.Name "local"++_ExportSpecifier_exported = Model.Name "exported"++-- | A TypeScript expression+data Expression =+  -- | A simple identifier+  ExpressionIdentifier Identifier |+  -- | A literal value+  ExpressionLiteral Literal |+  -- | An array expression [a, b, c]+  ExpressionArray ArrayExpression |+  -- | An object expression {a: 1, b: 2}+  ExpressionObject ObjectExpression |+  -- | A function expression+  ExpressionFunction FunctionExpression |+  -- | An arrow function expression+  ExpressionArrow ArrowFunctionExpression |+  -- | A function call expression+  ExpressionCall CallExpression |+  -- | A member access expression (obj.prop or obj[prop])+  ExpressionMember MemberExpression |+  -- | A conditional (ternary) expression+  ExpressionConditional ConditionalExpression |+  -- | A binary operation expression+  ExpressionBinary BinaryExpression |+  -- | A unary operation expression+  ExpressionUnary UnaryExpression |+  -- | An assignment expression+  ExpressionAssignment AssignmentExpression |+  -- | A sequence expression (a, b, c)+  ExpressionSequence [Expression] |+  -- | The 'this' keyword+  ExpressionThis |+  -- | A 'new' expression+  ExpressionNew CallExpression |+  -- | A yield expression+  ExpressionYield (Maybe Expression) |+  -- | An await expression+  ExpressionAwait Expression |+  -- | A spread expression (...x)+  ExpressionSpread SpreadElement |+  -- | A parenthesized expression+  ExpressionParenthesized Expression |+  -- | A TypeScript type assertion `<expr> as <type>`+  ExpressionAsExpression AsExpression+  deriving (Eq, Ord, Read, Show)++_Expression = Model.Name "hydra.typescript.syntax.Expression"++_Expression_identifier = Model.Name "identifier"++_Expression_literal = Model.Name "literal"++_Expression_array = Model.Name "array"++_Expression_object = Model.Name "object"++_Expression_function = Model.Name "function"++_Expression_arrow = Model.Name "arrow"++_Expression_call = Model.Name "call"++_Expression_member = Model.Name "member"++_Expression_conditional = Model.Name "conditional"++_Expression_binary = Model.Name "binary"++_Expression_unary = Model.Name "unary"++_Expression_assignment = Model.Name "assignment"++_Expression_sequence = Model.Name "sequence"++_Expression_this = Model.Name "this"++_Expression_new = Model.Name "new"++_Expression_yield = Model.Name "yield"++_Expression_await = Model.Name "await"++_Expression_spread = Model.Name "spread"++_Expression_parenthesized = Model.Name "parenthesized"++_Expression_asExpression = Model.Name "asExpression"++-- | Left-hand side of a for-in or for-of statement+data ForInLeft =+  ForInLeftVariable VariableDeclaration |+  ForInLeftPattern Pattern+  deriving (Eq, Ord, Read, Show)++_ForInLeft = Model.Name "hydra.typescript.syntax.ForInLeft"++_ForInLeft_variable = Model.Name "variable"++_ForInLeft_pattern = Model.Name "pattern"++-- | A for-in statement+data ForInStatement =+  ForInStatement {+    forInStatementLeft :: ForInLeft,+    forInStatementRight :: Expression,+    forInStatementBody :: Statement}+  deriving (Eq, Ord, Read, Show)++_ForInStatement = Model.Name "hydra.typescript.syntax.ForInStatement"++_ForInStatement_left = Model.Name "left"++_ForInStatement_right = Model.Name "right"++_ForInStatement_body = Model.Name "body"++-- | Initialization clause of a for statement+data ForInit =+  ForInitVariable VariableDeclaration |+  ForInitExpression Expression+  deriving (Eq, Ord, Read, Show)++_ForInit = Model.Name "hydra.typescript.syntax.ForInit"++_ForInit_variable = Model.Name "variable"++_ForInit_expression = Model.Name "expression"++-- | A for-of statement+data ForOfStatement =+  ForOfStatement {+    -- | Whether this is a for-await-of+    forOfStatementAwait :: Bool,+    forOfStatementLeft :: ForInLeft,+    forOfStatementRight :: Expression,+    forOfStatementBody :: Statement}+  deriving (Eq, Ord, Read, Show)++_ForOfStatement = Model.Name "hydra.typescript.syntax.ForOfStatement"++_ForOfStatement_await = Model.Name "await"++_ForOfStatement_left = Model.Name "left"++_ForOfStatement_right = Model.Name "right"++_ForOfStatement_body = Model.Name "body"++-- | A for statement+data ForStatement =+  ForStatement {+    -- | Initialization+    forStatementInit :: (Maybe ForInit),+    -- | Test condition+    forStatementTest :: (Maybe Expression),+    -- | Update expression+    forStatementUpdate :: (Maybe Expression),+    forStatementBody :: Statement}+  deriving (Eq, Ord, Read, Show)++_ForStatement = Model.Name "hydra.typescript.syntax.ForStatement"++_ForStatement_init = Model.Name "init"++_ForStatement_test = Model.Name "test"++_ForStatement_update = Model.Name "update"++_ForStatement_body = Model.Name "body"++-- | A function declaration+data FunctionDeclaration =+  FunctionDeclaration {+    -- | Function name+    functionDeclarationId :: Identifier,+    -- | Function parameters+    functionDeclarationParams :: [Pattern],+    -- | Function body+    functionDeclarationBody :: BlockStatement,+    -- | Whether the function is async+    functionDeclarationAsync :: Bool,+    -- | Whether the function is a generator+    functionDeclarationGenerator :: Bool}+  deriving (Eq, Ord, Read, Show)++_FunctionDeclaration = Model.Name "hydra.typescript.syntax.FunctionDeclaration"++_FunctionDeclaration_id = Model.Name "id"++_FunctionDeclaration_params = Model.Name "params"++_FunctionDeclaration_body = Model.Name "body"++_FunctionDeclaration_async = Model.Name "async"++_FunctionDeclaration_generator = Model.Name "generator"++-- | A function declaration with optional JSDoc+data FunctionDeclarationWithComments =+  FunctionDeclarationWithComments {+    -- | The function declaration+    functionDeclarationWithCommentsBody :: FunctionDeclaration,+    -- | Optional JSDoc comment+    functionDeclarationWithCommentsComments :: (Maybe DocumentationComment)}+  deriving (Eq, Ord, Read, Show)++_FunctionDeclarationWithComments = Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"++_FunctionDeclarationWithComments_body = Model.Name "body"++_FunctionDeclarationWithComments_comments = Model.Name "comments"++-- | A function expression+data FunctionExpression =+  FunctionExpression {+    -- | Optional function name+    functionExpressionId :: (Maybe Identifier),+    -- | Function parameters+    functionExpressionParams :: [Pattern],+    -- | Function body+    functionExpressionBody :: BlockStatement,+    -- | Whether the function is async+    functionExpressionAsync :: Bool,+    -- | Whether the function is a generator+    functionExpressionGenerator :: Bool}+  deriving (Eq, Ord, Read, Show)++_FunctionExpression = Model.Name "hydra.typescript.syntax.FunctionExpression"++_FunctionExpression_id = Model.Name "id"++_FunctionExpression_params = Model.Name "params"++_FunctionExpression_body = Model.Name "body"++_FunctionExpression_async = Model.Name "async"++_FunctionExpression_generator = Model.Name "generator"++-- | A function type expression+data FunctionTypeExpression =+  FunctionTypeExpression {+    -- | Type parameters (generics)+    functionTypeExpressionTypeParameters :: [TypeParameter],+    -- | Parameter types+    functionTypeExpressionParameters :: [TypeExpression],+    -- | Return type+    functionTypeExpressionReturnType :: TypeExpression}+  deriving (Eq, Ord, Read, Show)++_FunctionTypeExpression = Model.Name "hydra.typescript.syntax.FunctionTypeExpression"++_FunctionTypeExpression_typeParameters = Model.Name "typeParameters"++_FunctionTypeExpression_parameters = Model.Name "parameters"++_FunctionTypeExpression_returnType = Model.Name "returnType"++-- | A TypeScript identifier (variable, function, class name, etc.)+newtype Identifier =+  Identifier {+    unIdentifier :: String}+  deriving (Eq, Ord, Read, Show)++_Identifier = Model.Name "hydra.typescript.syntax.Identifier"++-- | An if statement+data IfStatement =+  IfStatement {+    ifStatementTest :: Expression,+    ifStatementConsequent :: Statement,+    ifStatementAlternate :: (Maybe Statement)}+  deriving (Eq, Ord, Read, Show)++_IfStatement = Model.Name "hydra.typescript.syntax.IfStatement"++_IfStatement_test = Model.Name "test"++_IfStatement_consequent = Model.Name "consequent"++_IfStatement_alternate = Model.Name "alternate"++-- | An import clause (named, default, or namespace import)+data ImportClause =+  ImportClauseNamed ImportSpecifier |+  ImportClauseDefault ImportDefaultSpecifier |+  ImportClauseNamespace ImportNamespaceSpecifier+  deriving (Eq, Ord, Read, Show)++_ImportClause = Model.Name "hydra.typescript.syntax.ImportClause"++_ImportClause_named = Model.Name "named"++_ImportClause_default = Model.Name "default"++_ImportClause_namespace = Model.Name "namespace"++-- | An import declaration+data ImportDeclaration =+  ImportDeclaration {+    -- | What to import+    importDeclarationSpecifiers :: [ImportClause],+    -- | The module to import from+    importDeclarationSource :: StringLiteral}+  deriving (Eq, Ord, Read, Show)++_ImportDeclaration = Model.Name "hydra.typescript.syntax.ImportDeclaration"++_ImportDeclaration_specifiers = Model.Name "specifiers"++_ImportDeclaration_source = Model.Name "source"++-- | A default import specifier (import x from ...)+newtype ImportDefaultSpecifier =+  ImportDefaultSpecifier {+    unImportDefaultSpecifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_ImportDefaultSpecifier = Model.Name "hydra.typescript.syntax.ImportDefaultSpecifier"++-- | A namespace import specifier (import * as x from ...)+newtype ImportNamespaceSpecifier =+  ImportNamespaceSpecifier {+    unImportNamespaceSpecifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_ImportNamespaceSpecifier = Model.Name "hydra.typescript.syntax.ImportNamespaceSpecifier"++-- | A named import specifier (import {x as y} from ...)+data ImportSpecifier =+  ImportSpecifier {+    importSpecifierImported :: Identifier,+    importSpecifierLocal :: Identifier}+  deriving (Eq, Ord, Read, Show)++_ImportSpecifier = Model.Name "hydra.typescript.syntax.ImportSpecifier"++_ImportSpecifier_imported = Model.Name "imported"++_ImportSpecifier_local = Model.Name "local"++-- | A TypeScript interface declaration (interface Foo<T> extends Bar { ... })+data InterfaceDeclaration =+  InterfaceDeclaration {+    -- | Interface name+    interfaceDeclarationName :: Identifier,+    -- | Generic parameters+    interfaceDeclarationTypeParameters :: [TypeParameter],+    -- | Interfaces this one extends+    interfaceDeclarationExtends :: [TypeExpression],+    -- | Property signatures (the interface body)+    interfaceDeclarationMembers :: [PropertySignature]}+  deriving (Eq, Ord, Read, Show)++_InterfaceDeclaration = Model.Name "hydra.typescript.syntax.InterfaceDeclaration"++_InterfaceDeclaration_name = Model.Name "name"++_InterfaceDeclaration_typeParameters = Model.Name "typeParameters"++_InterfaceDeclaration_extends = Model.Name "extends"++_InterfaceDeclaration_members = Model.Name "members"++-- | An intersection type (A & B & C)+type IntersectionTypeExpression = [TypeExpression]++_IntersectionTypeExpression = Model.Name "hydra.typescript.syntax.IntersectionTypeExpression"++-- | A labeled statement+data LabeledStatement =+  LabeledStatement {+    labeledStatementLabel :: Identifier,+    labeledStatementBody :: Statement}+  deriving (Eq, Ord, Read, Show)++_LabeledStatement = Model.Name "hydra.typescript.syntax.LabeledStatement"++_LabeledStatement_label = Model.Name "label"++_LabeledStatement_body = Model.Name "body"++-- | A literal value+data Literal =+  -- | A string literal+  LiteralString StringLiteral |+  -- | A numeric literal+  LiteralNumber NumericLiteral |+  -- | A boolean literal (true or false)+  LiteralBoolean Bool |+  -- | The null literal+  LiteralNull |+  -- | The undefined literal+  LiteralUndefined |+  -- | A BigInt literal (e.g., 123n)+  LiteralBigInt Integer |+  -- | A template literal+  LiteralTemplate TemplateLiteral+  deriving (Eq, Ord, Read, Show)++_Literal = Model.Name "hydra.typescript.syntax.Literal"++_Literal_string = Model.Name "string"++_Literal_number = Model.Name "number"++_Literal_boolean = Model.Name "boolean"++_Literal_null = Model.Name "null"++_Literal_undefined = Model.Name "undefined"++_Literal_bigInt = Model.Name "bigInt"++_Literal_template = Model.Name "template"++-- | A member access expression+data MemberExpression =+  MemberExpression {+    -- | The object+    memberExpressionObject :: Expression,+    -- | The property+    memberExpressionProperty :: Expression,+    -- | Whether using bracket notation (obj[prop])+    memberExpressionComputed :: Bool,+    -- | Whether using optional chaining (?.)+    memberExpressionOptional :: Bool}+  deriving (Eq, Ord, Read, Show)++_MemberExpression = Model.Name "hydra.typescript.syntax.MemberExpression"++_MemberExpression_object = Model.Name "object"++_MemberExpression_property = Model.Name "property"++_MemberExpression_computed = Model.Name "computed"++_MemberExpression_optional = Model.Name "optional"++-- | A method definition in a class+data MethodDefinition =+  MethodDefinition {+    -- | Method name+    methodDefinitionKey :: Expression,+    -- | Method function+    methodDefinitionValue :: FunctionExpression,+    -- | Method kind+    methodDefinitionKind :: MethodKind,+    -- | Whether the key is computed+    methodDefinitionComputed :: Bool,+    -- | Whether the method is static+    methodDefinitionStatic :: Bool}+  deriving (Eq, Ord, Read, Show)++_MethodDefinition = Model.Name "hydra.typescript.syntax.MethodDefinition"++_MethodDefinition_key = Model.Name "key"++_MethodDefinition_value = Model.Name "value"++_MethodDefinition_kind = Model.Name "kind"++_MethodDefinition_computed = Model.Name "computed"++_MethodDefinition_static = Model.Name "static"++-- | The kind of a class method+data MethodKind =+  MethodKindConstructor |+  MethodKindMethod |+  MethodKindGet |+  MethodKindSet+  deriving (Eq, Ord, Read, Show)++_MethodKind = Model.Name "hydra.typescript.syntax.MethodKind"++_MethodKind_constructor = Model.Name "constructor"++_MethodKind_method = Model.Name "method"++_MethodKind_get = Model.Name "get"++_MethodKind_set = Model.Name "set"++-- | A top-level item in a module+data ModuleItem =+  ModuleItemStatement Statement |+  ModuleItemImport ImportDeclaration |+  ModuleItemExport ExportDeclaration |+  -- | A top-level interface declaration+  ModuleItemInterface InterfaceDeclaration |+  -- | A top-level type alias declaration+  ModuleItemTypeAlias TypeAliasDeclaration+  deriving (Eq, Ord, Read, Show)++_ModuleItem = Model.Name "hydra.typescript.syntax.ModuleItem"++_ModuleItem_statement = Model.Name "statement"++_ModuleItem_import = Model.Name "import"++_ModuleItem_export = Model.Name "export"++_ModuleItem_interface = Model.Name "interface"++_ModuleItem_typeAlias = Model.Name "typeAlias"++-- | A module item with optional documentation+data ModuleItemWithComments =+  ModuleItemWithComments {+    -- | The module item+    moduleItemWithCommentsBody :: ModuleItem,+    -- | Optional documentation comment+    moduleItemWithCommentsComments :: (Maybe DocumentationComment)}+  deriving (Eq, Ord, Read, Show)++_ModuleItemWithComments = Model.Name "hydra.typescript.syntax.ModuleItemWithComments"++_ModuleItemWithComments_body = Model.Name "body"++_ModuleItemWithComments_comments = Model.Name "comments"++-- | Named exports (export {x, y as z})+data NamedExport =+  NamedExport {+    namedExportSpecifiers :: [ExportSpecifier],+    namedExportSource :: (Maybe StringLiteral)}+  deriving (Eq, Ord, Read, Show)++_NamedExport = Model.Name "hydra.typescript.syntax.NamedExport"++_NamedExport_specifiers = Model.Name "specifiers"++_NamedExport_source = Model.Name "source"++-- | A numeric literal (integer or floating-point)+data NumericLiteral =+  -- | An integer literal+  NumericLiteralInteger I.Int64 |+  -- | A floating-point literal+  NumericLiteralFloat Double+  deriving (Eq, Ord, Read, Show)++_NumericLiteral = Model.Name "hydra.typescript.syntax.NumericLiteral"++_NumericLiteral_integer = Model.Name "integer"++_NumericLiteral_float = Model.Name "float"++-- | An object expression {a: 1, b: 2}+type ObjectExpression = [Property]++_ObjectExpression = Model.Name "hydra.typescript.syntax.ObjectExpression"++-- | An object destructuring pattern {a, b: c}+data ObjectPattern =+  ObjectPattern {+    -- | The property patterns+    objectPatternProperties :: [ObjectPatternProperty]}+  deriving (Eq, Ord, Read, Show)++_ObjectPattern = Model.Name "hydra.typescript.syntax.ObjectPattern"++_ObjectPattern_properties = Model.Name "properties"++-- | A property in an object pattern+data ObjectPatternProperty =+  ObjectPatternPropertyProperty Property |+  ObjectPatternPropertyRest RestElement+  deriving (Eq, Ord, Read, Show)++_ObjectPatternProperty = Model.Name "hydra.typescript.syntax.ObjectPatternProperty"++_ObjectPatternProperty_property = Model.Name "property"++_ObjectPatternProperty_rest = Model.Name "rest"++-- | An object type with property signatures+type ObjectTypeExpression = [PropertySignature]++_ObjectTypeExpression = Model.Name "hydra.typescript.syntax.ObjectTypeExpression"++-- | A parameterized type (e.g., Array<T>, Map<K, V>)+data ParameterizedTypeExpression =+  ParameterizedTypeExpression {+    parameterizedTypeExpressionBase :: TypeExpression,+    parameterizedTypeExpressionArguments :: [TypeExpression]}+  deriving (Eq, Ord, Read, Show)++_ParameterizedTypeExpression = Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"++_ParameterizedTypeExpression_base = Model.Name "base"++_ParameterizedTypeExpression_arguments = Model.Name "arguments"++-- | A binding pattern (for destructuring)+data Pattern =+  -- | A simple identifier binding+  PatternIdentifier Identifier |+  -- | An object destructuring pattern+  PatternObject ObjectPattern |+  -- | An array destructuring pattern+  PatternArray ArrayPattern |+  -- | A pattern with default value+  PatternAssignment AssignmentPattern |+  -- | A rest element (...x)+  PatternRest RestElement |+  -- | A pattern with a TypeScript type annotation (`x: T`)+  PatternTyped TypedPattern+  deriving (Eq, Ord, Read, Show)++_Pattern = Model.Name "hydra.typescript.syntax.Pattern"++_Pattern_identifier = Model.Name "identifier"++_Pattern_object = Model.Name "object"++_Pattern_array = Model.Name "array"++_Pattern_assignment = Model.Name "assignment"++_Pattern_rest = Model.Name "rest"++_Pattern_typed = Model.Name "typed"++-- | A TypeScript program (module)+data Program =+  Program {+    -- | The module items+    programBody :: [ModuleItem],+    -- | Whether this is a module or script+    programSourceType :: SourceType}+  deriving (Eq, Ord, Read, Show)++_Program = Model.Name "hydra.typescript.syntax.Program"++_Program_body = Model.Name "body"++_Program_sourceType = Model.Name "sourceType"++-- | A property in an object expression+data Property =+  Property {+    -- | Property key (identifier, literal, or computed)+    propertyKey :: Expression,+    -- | Property value+    propertyValue :: Expression,+    -- | Property kind (init, get, set)+    propertyKind :: PropertyKind,+    -- | Whether the key is computed [expr]+    propertyComputed :: Bool,+    -- | Whether using shorthand syntax {x} for {x: x}+    propertyShorthand :: Bool}+  deriving (Eq, Ord, Read, Show)++_Property = Model.Name "hydra.typescript.syntax.Property"++_Property_key = Model.Name "key"++_Property_value = Model.Name "value"++_Property_kind = Model.Name "kind"++_Property_computed = Model.Name "computed"++_Property_shorthand = Model.Name "shorthand"++-- | The kind of an object property+data PropertyKind =+  -- | A normal property initialization+  PropertyKindInit |+  -- | A getter+  PropertyKindGet |+  -- | A setter+  PropertyKindSet+  deriving (Eq, Ord, Read, Show)++_PropertyKind = Model.Name "hydra.typescript.syntax.PropertyKind"++_PropertyKind_init = Model.Name "init"++_PropertyKind_get = Model.Name "get"++_PropertyKind_set = Model.Name "set"++-- | A property signature in an object type+data PropertySignature =+  PropertySignature {+    -- | Property name+    propertySignatureName :: Identifier,+    -- | Property type+    propertySignatureType :: TypeExpression,+    -- | Whether the property is optional+    propertySignatureOptional :: Bool,+    -- | Whether the property is readonly+    propertySignatureReadonly :: Bool,+    -- | Optional JSDoc documentation comment to emit above this property+    propertySignatureComments :: (Maybe DocumentationComment)}+  deriving (Eq, Ord, Read, Show)++_PropertySignature = Model.Name "hydra.typescript.syntax.PropertySignature"++_PropertySignature_name = Model.Name "name"++_PropertySignature_type = Model.Name "type"++_PropertySignature_optional = Model.Name "optional"++_PropertySignature_readonly = Model.Name "readonly"++_PropertySignature_comments = Model.Name "comments"++-- | A qualified name like 'module.submodule.name'+type QualifiedName = [Identifier]++_QualifiedName = Model.Name "hydra.typescript.syntax.QualifiedName"++-- | A rest element pattern (...x)+newtype RestElement =+  RestElement {+    unRestElement :: Pattern}+  deriving (Eq, Ord, Read, Show)++_RestElement = Model.Name "hydra.typescript.syntax.RestElement"++-- | A return statement+type ReturnStatement = (Maybe Expression)++_ReturnStatement = Model.Name "hydra.typescript.syntax.ReturnStatement"++-- | Whether the program is a module or script+data SourceType =+  SourceTypeModule |+  SourceTypeScript+  deriving (Eq, Ord, Read, Show)++_SourceType = Model.Name "hydra.typescript.syntax.SourceType"++_SourceType_module = Model.Name "module"++_SourceType_script = Model.Name "script"++-- | A spread element (...x)+newtype SpreadElement =+  SpreadElement {+    unSpreadElement :: Expression}+  deriving (Eq, Ord, Read, Show)++_SpreadElement = Model.Name "hydra.typescript.syntax.SpreadElement"++-- | A TypeScript statement+data Statement =+  -- | An expression statement+  StatementExpression Expression |+  -- | A block statement+  StatementBlock BlockStatement |+  -- | An empty statement (;)+  StatementEmpty |+  -- | A debugger statement+  StatementDebugger |+  -- | A return statement+  StatementReturn ReturnStatement |+  -- | A break statement+  StatementBreak BreakStatement |+  -- | A continue statement+  StatementContinue ContinueStatement |+  -- | An if statement+  StatementIf IfStatement |+  -- | A switch statement+  StatementSwitch SwitchStatement |+  -- | A throw statement+  StatementThrow ThrowStatement |+  -- | A try statement+  StatementTry TryStatement |+  -- | A while statement+  StatementWhile WhileStatement |+  -- | A do-while statement+  StatementDoWhile DoWhileStatement |+  -- | A for statement+  StatementFor ForStatement |+  -- | A for-in statement+  StatementForIn ForInStatement |+  -- | A for-of statement+  StatementForOf ForOfStatement |+  -- | A variable declaration+  StatementVariableDeclaration VariableDeclaration |+  -- | A function declaration+  StatementFunctionDeclaration FunctionDeclaration |+  -- | A class declaration+  StatementClassDeclaration ClassDeclaration |+  -- | A labeled statement+  StatementLabeled LabeledStatement+  deriving (Eq, Ord, Read, Show)++_Statement = Model.Name "hydra.typescript.syntax.Statement"++_Statement_expression = Model.Name "expression"++_Statement_block = Model.Name "block"++_Statement_empty = Model.Name "empty"++_Statement_debugger = Model.Name "debugger"++_Statement_return = Model.Name "return"++_Statement_break = Model.Name "break"++_Statement_continue = Model.Name "continue"++_Statement_if = Model.Name "if"++_Statement_switch = Model.Name "switch"++_Statement_throw = Model.Name "throw"++_Statement_try = Model.Name "try"++_Statement_while = Model.Name "while"++_Statement_doWhile = Model.Name "doWhile"++_Statement_for = Model.Name "for"++_Statement_forIn = Model.Name "forIn"++_Statement_forOf = Model.Name "forOf"++_Statement_variableDeclaration = Model.Name "variableDeclaration"++_Statement_functionDeclaration = Model.Name "functionDeclaration"++_Statement_classDeclaration = Model.Name "classDeclaration"++_Statement_labeled = Model.Name "labeled"++-- | A statement with optional documentation+data StatementWithComments =+  StatementWithComments {+    -- | The statement+    statementWithCommentsBody :: Statement,+    -- | Optional documentation comment+    statementWithCommentsComments :: (Maybe DocumentationComment)}+  deriving (Eq, Ord, Read, Show)++_StatementWithComments = Model.Name "hydra.typescript.syntax.StatementWithComments"++_StatementWithComments_body = Model.Name "body"++_StatementWithComments_comments = Model.Name "comments"++-- | A string literal with quote style+data StringLiteral =+  StringLiteral {+    -- | The string value+    stringLiteralValue :: String,+    -- | Whether to use single quotes (true) or double quotes (false)+    stringLiteralSingleQuote :: Bool}+  deriving (Eq, Ord, Read, Show)++_StringLiteral = Model.Name "hydra.typescript.syntax.StringLiteral"++_StringLiteral_value = Model.Name "value"++_StringLiteral_singleQuote = Model.Name "singleQuote"++-- | A case clause in a switch statement+data SwitchCase =+  SwitchCase {+    -- | The test expression (Nothing for default)+    switchCaseTest :: (Maybe Expression),+    -- | The statements to execute+    switchCaseConsequent :: [Statement]}+  deriving (Eq, Ord, Read, Show)++_SwitchCase = Model.Name "hydra.typescript.syntax.SwitchCase"++_SwitchCase_test = Model.Name "test"++_SwitchCase_consequent = Model.Name "consequent"++-- | A switch statement+data SwitchStatement =+  SwitchStatement {+    switchStatementDiscriminant :: Expression,+    switchStatementCases :: [SwitchCase]}+  deriving (Eq, Ord, Read, Show)++_SwitchStatement = Model.Name "hydra.typescript.syntax.SwitchStatement"++_SwitchStatement_discriminant = Model.Name "discriminant"++_SwitchStatement_cases = Model.Name "cases"++-- | A static part of a template literal+data TemplateElement =+  TemplateElement {+    -- | The raw string value+    templateElementValue :: String,+    -- | Whether this is the last element+    templateElementTail :: Bool}+  deriving (Eq, Ord, Read, Show)++_TemplateElement = Model.Name "hydra.typescript.syntax.TemplateElement"++_TemplateElement_value = Model.Name "value"++_TemplateElement_tail = Model.Name "tail"++-- | A template literal (backtick string with interpolations)+data TemplateLiteral =+  TemplateLiteral {+    -- | The static string parts+    templateLiteralQuasis :: [TemplateElement],+    -- | The interpolated expressions+    templateLiteralExpressions :: [Expression]}+  deriving (Eq, Ord, Read, Show)++_TemplateLiteral = Model.Name "hydra.typescript.syntax.TemplateLiteral"++_TemplateLiteral_quasis = Model.Name "quasis"++_TemplateLiteral_expressions = Model.Name "expressions"++-- | A throw statement+newtype ThrowStatement =+  ThrowStatement {+    unThrowStatement :: Expression}+  deriving (Eq, Ord, Read, Show)++_ThrowStatement = Model.Name "hydra.typescript.syntax.ThrowStatement"++-- | A try statement+data TryStatement =+  TryStatement {+    tryStatementBlock :: BlockStatement,+    tryStatementHandler :: (Maybe CatchClause),+    tryStatementFinalizer :: (Maybe BlockStatement)}+  deriving (Eq, Ord, Read, Show)++_TryStatement = Model.Name "hydra.typescript.syntax.TryStatement"++_TryStatement_block = Model.Name "block"++_TryStatement_handler = Model.Name "handler"++_TryStatement_finalizer = Model.Name "finalizer"++-- | A tuple type ([A, B] or readonly [A, B])+type TupleTypeExpression = [TypeExpression]++_TupleTypeExpression = Model.Name "hydra.typescript.syntax.TupleTypeExpression"++-- | A TypeScript type alias declaration (type Foo<T> = ...)+data TypeAliasDeclaration =+  TypeAliasDeclaration {+    -- | Alias name+    typeAliasDeclarationName :: Identifier,+    -- | Generic parameters+    typeAliasDeclarationTypeParameters :: [TypeParameter],+    -- | The right-hand-side type+    typeAliasDeclarationType :: TypeExpression}+  deriving (Eq, Ord, Read, Show)++_TypeAliasDeclaration = Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"++_TypeAliasDeclaration_name = Model.Name "name"++_TypeAliasDeclaration_typeParameters = Model.Name "typeParameters"++_TypeAliasDeclaration_type = Model.Name "type"++-- | A type annotation (for JSDoc comments or TypeScript)+newtype TypeAnnotation =+  TypeAnnotation {+    unTypeAnnotation :: TypeExpression}+  deriving (Eq, Ord, Read, Show)++_TypeAnnotation = Model.Name "hydra.typescript.syntax.TypeAnnotation"++-- | A type expression+data TypeExpression =+  -- | A named type (e.g., 'string', 'number', 'MyClass')+  TypeExpressionIdentifier Identifier |+  -- | A literal type (e.g., 'hello', 42)+  TypeExpressionLiteral Literal |+  -- | An array type+  TypeExpressionArray ArrayTypeExpression |+  -- | A function type+  TypeExpressionFunction FunctionTypeExpression |+  -- | An object type+  TypeExpressionObject ObjectTypeExpression |+  -- | A tuple type (readonly [A, B, C])+  TypeExpressionTuple TupleTypeExpression |+  -- | A union type (A | B)+  TypeExpressionUnion UnionTypeExpression |+  -- | An intersection type (A & B)+  TypeExpressionIntersection IntersectionTypeExpression |+  -- | A parameterized type (e.g., Array<T>, Map<K, V>)+  TypeExpressionParameterized ParameterizedTypeExpression |+  -- | An optional type (T | undefined or T?)+  TypeExpressionOptional TypeExpression |+  -- | A readonly modifier (readonly T[], readonly [A, B])+  TypeExpressionReadonly TypeExpression |+  -- | The 'any' type+  TypeExpressionAny |+  -- | The 'unknown' type+  TypeExpressionUnknown |+  -- | The 'void' type+  TypeExpressionVoid |+  -- | The 'never' type+  TypeExpressionNever+  deriving (Eq, Ord, Read, Show)++_TypeExpression = Model.Name "hydra.typescript.syntax.TypeExpression"++_TypeExpression_identifier = Model.Name "identifier"++_TypeExpression_literal = Model.Name "literal"++_TypeExpression_array = Model.Name "array"++_TypeExpression_function = Model.Name "function"++_TypeExpression_object = Model.Name "object"++_TypeExpression_tuple = Model.Name "tuple"++_TypeExpression_union = Model.Name "union"++_TypeExpression_intersection = Model.Name "intersection"++_TypeExpression_parameterized = Model.Name "parameterized"++_TypeExpression_optional = Model.Name "optional"++_TypeExpression_readonly = Model.Name "readonly"++_TypeExpression_any = Model.Name "any"++_TypeExpression_unknown = Model.Name "unknown"++_TypeExpression_void = Model.Name "void"++_TypeExpression_never = Model.Name "never"++-- | A type parameter (generic)+data TypeParameter =+  TypeParameter {+    -- | Parameter name+    typeParameterName :: Identifier,+    -- | Optional constraint (extends clause)+    typeParameterConstraint :: (Maybe TypeExpression),+    -- | Optional default type+    typeParameterDefault :: (Maybe TypeExpression)}+  deriving (Eq, Ord, Read, Show)++_TypeParameter = Model.Name "hydra.typescript.syntax.TypeParameter"++_TypeParameter_name = Model.Name "name"++_TypeParameter_constraint = Model.Name "constraint"++_TypeParameter_default = Model.Name "default"++-- | A pattern with a TypeScript type annotation (`x: T`)+data TypedPattern =+  TypedPattern {+    -- | The underlying binding pattern+    typedPatternPattern :: Pattern,+    -- | The TypeScript type annotation+    typedPatternType :: TypeExpression}+  deriving (Eq, Ord, Read, Show)++_TypedPattern = Model.Name "hydra.typescript.syntax.TypedPattern"++_TypedPattern_pattern = Model.Name "pattern"++_TypedPattern_type = Model.Name "type"++-- | A unary operation expression+data UnaryExpression =+  UnaryExpression {+    unaryExpressionOperator :: UnaryOperator,+    unaryExpressionArgument :: Expression,+    -- | Whether the operator is prefix (true) or postfix (false)+    unaryExpressionPrefix :: Bool}+  deriving (Eq, Ord, Read, Show)++_UnaryExpression = Model.Name "hydra.typescript.syntax.UnaryExpression"++_UnaryExpression_operator = Model.Name "operator"++_UnaryExpression_argument = Model.Name "argument"++_UnaryExpression_prefix = Model.Name "prefix"++-- | A unary operator+data UnaryOperator =+  -- | -+  UnaryOperatorNegate |+  -- | ++  UnaryOperatorPlus |+  -- | !+  UnaryOperatorNot |+  -- | ~+  UnaryOperatorBitwiseNot |+  -- | typeof+  UnaryOperatorTypeof |+  -- | void+  UnaryOperatorVoid |+  -- | delete+  UnaryOperatorDelete |+  -- | +++  UnaryOperatorIncrement |+  -- | --+  UnaryOperatorDecrement+  deriving (Eq, Ord, Read, Show)++_UnaryOperator = Model.Name "hydra.typescript.syntax.UnaryOperator"++_UnaryOperator_negate = Model.Name "negate"++_UnaryOperator_plus = Model.Name "plus"++_UnaryOperator_not = Model.Name "not"++_UnaryOperator_bitwiseNot = Model.Name "bitwiseNot"++_UnaryOperator_typeof = Model.Name "typeof"++_UnaryOperator_void = Model.Name "void"++_UnaryOperator_delete = Model.Name "delete"++_UnaryOperator_increment = Model.Name "increment"++_UnaryOperator_decrement = Model.Name "decrement"++-- | A union type (A | B | C)+type UnionTypeExpression = [TypeExpression]++_UnionTypeExpression = Model.Name "hydra.typescript.syntax.UnionTypeExpression"++-- | A variable declaration (var, let, const)+data VariableDeclaration =+  VariableDeclaration {+    variableDeclarationKind :: VariableKind,+    variableDeclarationDeclarations :: [VariableDeclarator]}+  deriving (Eq, Ord, Read, Show)++_VariableDeclaration = Model.Name "hydra.typescript.syntax.VariableDeclaration"++_VariableDeclaration_kind = Model.Name "kind"++_VariableDeclaration_declarations = Model.Name "declarations"++-- | A variable declarator (id = init)+data VariableDeclarator =+  VariableDeclarator {+    variableDeclaratorId :: Pattern,+    variableDeclaratorInit :: (Maybe Expression)}+  deriving (Eq, Ord, Read, Show)++_VariableDeclarator = Model.Name "hydra.typescript.syntax.VariableDeclarator"++_VariableDeclarator_id = Model.Name "id"++_VariableDeclarator_init = Model.Name "init"++-- | The kind of variable declaration+data VariableKind =+  VariableKindVar |+  VariableKindLet |+  VariableKindConst+  deriving (Eq, Ord, Read, Show)++_VariableKind = Model.Name "hydra.typescript.syntax.VariableKind"++_VariableKind_var = Model.Name "var"++_VariableKind_let = Model.Name "let"++_VariableKind_const = Model.Name "const"++-- | A while statement+data WhileStatement =+  WhileStatement {+    whileStatementTest :: Expression,+    whileStatementBody :: Statement}+  deriving (Eq, Ord, Read, Show)++_WhileStatement = Model.Name "hydra.typescript.syntax.WhileStatement"++_WhileStatement_test = Model.Name "test"++_WhileStatement_body = Model.Name "body"